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


感谢支持与鼓励~