共计 2216 个字符,预计需要花费 6 分钟才能阅读完成。
安装命令:composer require phpoffice/phpexcel
在使用时,需要引入 classes 目录下的 PHPExcel.php 的 PHPExcel 类以及 classes\PHPExcel\IOFactory.php 的 PHPExcel_IOFactory 类。
具体项目实例在项目经验中查看。
使用步骤:
// 如果使用 thinkphp5.1 框架,则直接 use 即可
use PHPExcel_IOFactory;
use PHPExcel;
// 实例化 phpexcel 对象
$objPHPExcel = new \PHPExcel();
// 设置 Excel 属性
$objPHPExcel->getProperties()
->setCreator("Maarten Balliauw") // 创建人
->setLastModifiedBy("Maarten Balliauw") // 最后修改人
->setTitle("Office 2007 XLSX Test Document") // 设置标题
->setSubject("Office 2007 XLSX Test Document") // 设置主题
->setDescription("Test document") // 设置备注
->setKeywords("office 2007 openxml php") // 设置关键字
->setCategory("Test result file"); // 设置类别
// 给表格添加数据
$objPHPExcel->setActiveSheetIndex(0) // 设置第一个内置表(一个 xls 文件里可以有多个表)为活动的
->setCellValue('A1', 'Hello') // 给表的单元格设置数据
->setCellValue('B2', 'world!') // 数据格式可以为字符串
->setCellValue('C1', 12) // 数字型
->setCellValue('D2', 12) //
->setCellValue('D3', **true**) // 布尔型
->setCellValue('D4', '=SUM(C1:D2)' );// 公式
// 激活当前表
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();// 清除缓冲区, 避免乱码
// 最后只需要生成 Excel 或者提示下载即可
// 生成 Excel,并自定义保存路径
//"Excel2007" 生成 2007 版本的 xlsx,"Excel5" 生成 2003 版本的 xls
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$objWriter->save($path);
// 弹出提示下载文件
header('pragma:public');
header("Content-Disposition:attachment;filename=$expFileName");
header('Cache-Control: max-age=0');
$objWriter = PHPExcel\_IOFactory:: *createWriter*($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
PHP EXCEL 如何获取行数
PHPExcel_IOFactory::createReader('Excel2007')->load('Excel 文件名或路径 ')->getSheet(0)->getHighestRow();//2007 以上版本 Exel
PHPExcel_IOFactory::createReader('Excel5')->load('Excel 文件名或路径')->getSheet(0)->getHighestRow();//2007 以下版本 Exel
读取 excel 文件
try {$inputFileType = \PHPExcel_IOFactory::identify($path);
$objReader = \PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($path);
} catch(\Exception $e) {die('加载文件发生错误:"'.pathinfo($path,PATHINFO_BASENAME).'":'.$e->getMessage());
}
读取已有表格后插入新数据
$objdatarows 可以定义为读取前面表格的所有行数,+ 1 以后就是新行数。
$row=$objdatarows+1;
$objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1);
// 在操作行的号前加一空行,这空行的行号就变成了当前的行号
// 对应的列都附上数据和编号
$objPHPExcel->getActiveSheet()->setCellValue( 'A'.$row,"第 1 列内容");
$objPHPExcel->getActiveSheet()->setCellValue( 'B'.$row,"第 2 列内容");
$objPHPExcel->getActiveSheet()->setCellValue( 'C'.$row,"第 3 列内容");
正文完