PHP处理Excel文件
浏览量:331
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\); //禁止缓存