袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

PHP处理Excel文件

浏览量:331

what:

why:

how:
1.下载
可以使用 给特哈普 下载 ,地址:https://github.com/PHPOffice/PHPExcel

也可用 composer 拉取,命令:composer require phpoffice/phpexcel

其中我们只需要:classes 目录里面的 PHPExcel 和 PHPExcel.php 就可以使用了 ;

2.写 excel 文件

$dir = dirname(__FILE__);   //找到当前的脚本所在路径。
require_once $dir.\Excel/PHPExcel.php\;  //引入文件

$objPHPExcel = new PHPExcel();   //实例化PHPExcel类 等同于在桌面上新建了一个 Excel 表格。
$objSheet    = $objPHPExcel->getActiveSheet();  //这里的 Active 指的是你正在工作的 sheet 页。

//写数据有俩种方法
//方法1
$objSheet->setCellValue(\A1\,\姓名\)->setCellValue(\B1\,\分数\);    // 可以使用链式的方式添加数据
//方法2
$arr = [
	[\\,\\],
    [\姓名\,\分数\],
    [\李四\,\60\],
    [\王五\,\61\],

];
$objSheet->fromArray($arr);  //用起来方便,但性能消耗大。

$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,\Excel2007\);  //按照指定格式生成excel文件 
//Excel2007  ->    xlsx
//Excel5     ->    xls

$objWrite->save($dir.\test.xlsx\);   //保存写好的文件



3.读 Excel 文件

header(\Content-Type:text/html;charset=utf-8\);
$dir = dirname(__FILE__);
require $dir.\/Excel/PHPExcel/IOFactory.php\;
$filename = $dir.\/dome.xlsx\;

//加载文件方法有俩种方法
//方法 1  
$objPHPl = PHPExcel_IOFactory::load($filename); //一句话简单粗暴,
//但是他会把你文件里的所有 sheet 全部加载出来,性能消耗大。

//方法 2
$fileType = PHPExcel_IOFactory::identify($filename);//返回文件类型
$objReader = PHPExcel_IOFactory::createReader($fileType);//获得文件读取对象
$sheetName = \hello\; // 只加载 sheet 名是hello 的,想加载多个指定 sheet 这里可使用数组
$objReader->setLoadSheetsonly($sheetName);
$objPHPl = $objReader->load($filename);  //只加载指定的sheet

//读文件方法也有俩种
// 方法 1
$sheetConut = $objPHPl->getSheetCount();  //获得 sheet 总数
for($i=0;$i<$sheetConut;$i++){
    $data = $objPHPl->getSheet($i)->toArray();  //读取每个sheet
    var_($data);
}
// 也是简单粗暴,性能消耗大,文件大时会卡死。

//方法 2 
foreach($objPHPl->getWorksheetIterator() as $sheet){//循环取sheet
    foreach($sheet->getRowIterator() as $row){
        foreach($row->getCellIterator() as $cell){
            $data = $cell->getValue();
            echo($data);
        }
    }
}
// 这里使用了 $objPHPl 内部的迭代器,性能得到了优化

//这里的 加载方式和读取文件方式 读是二选其一便可

4.导出到浏览器

$objWrite = PHPExcel_IOFactory::createWriter($objPHPExcel,\Excel2007\);//按照指定格式生成excel文件 
browserExport(\l2007\,\test.xlsx\);//输出到浏览器
$objWrite->save(\php://output\);

//封装了一个输出到浏览器的方法
function browserExport($type,$filename){
    if ($type == \Excel5\){
        header(\Content-Type: application/vnd.ms-excel\);//告诉浏览器要输出 xls 文件
    }else{
        header(\Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\);
        //告诉浏览器要输出 xlsx 文件
    }
    header(\Content-Disposition: attachment;filename=\.$filename);  //告诉浏览器要输出的文件名
    header(\Cache-Control: max-age=0\);   //禁止缓存





打赏