phpexcel使用示例
参考: https://www.cnblogs.com/jianqingwang/p/6830892.html
安装phpexcel
在:https://packagist.org/ 中搜索Excel, 可以发现排名最前的是 phpoffice/phpexcel
在工程目录下执行,composer require phpoffice/phpexcel.
下面分别从读已有excel 和生成excel 两个角度来进行示例。
1、 读excel:
假设读取的excel内容如下:
读取上图的代码如下:
<?php
define("BASE_DIR", str_replace("\\", '/', __DIR__));
include BASE_DIR."/vendor/autoload.php";
$inputFileName = "./test.xlsx";
date_default_timezone_set("PRC");
// 读取excel文件
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
die (pathinfo($inputFileName,PATHINFO_BASENAME).":".$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(0);
//var_dump($sheet);
$row_max = $sheet->getHighestRow();
$column_max = $sheet->getHighestColumn();
$rowArr = [];
for ($row = 1; $row <= $row_max; $row++){
$range = "A".$row.":".$column_max."$row";
$rowData = $sheet->rangeToArray("A".$row.":".$column_max."$row",null,false,true,false);
array_push($rowArr,$rowData);
}
var_dump($rowArr);
执行结果:
array(5) {
[0] =>
array(1) {
[0] =>
array(4) {
[0] =>
string(4) "row1"
[1] =>
string(4) "row2"
[2] =>
string(4) "row3"
[3] =>
string(4) "row4"
}
}
[1] =>
array(1) {
[0] =>
array(4) {
[0] =>
string(2) "A2"
[1] =>
string(2) "B2"
[2] =>
string(2) "C2"
[3] =>
string(2) "D2"
}
}
[2] =>
array(1) {
[0] =>
array(4) {
[0] =>
string(2) "A3"
[1] =>
string(2) "B3"
[2] =>
string(2) "C3"
[3] =>
string(2) "D3"
}
}
[3] =>
array(1) {
[0] =>
array(4) {
[0] =>
string(2) "A4"
[1] =>
string(2) "B4"
[2] =>
string(2) "C4"
[3] =>
string(2) "D4"
}
}
[4] =>
array(1) {
[0] =>
array(4) {
[0] =>
string(2) "A5"
[1] =>
string(2) "B5"
[2] =>
string(2) "C5"
[3] =>
string(2) "D5"
}
}
}
2. 写excel
<?php
define("BASE_DIR", str_replace("\\", '/', __DIR__));
include BASE_DIR."/vendor/autoload.php";
date_default_timezone_set("PRC");
$objPHPExcel = new PHPExcel();
// 设置文档信息,这个文档信息windows系统可以右键文件属性查看
$objPHPExcel->getProperties()->setCreator("作者简庆旺")
->setLastModifiedBy("最后更改者")
->setTitle("文档标题")
->setSubject("文档主题")
->setDescription("文档的描述信息")
->setKeywords("设置文档关键词")
->setCategory("设置文档的分类");
//根据excel坐标,添加数据
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '你好')
->setCellValue('B2', '世界')
->setCellValue('C1', '你好')
->setCellValue('D2', '世界');
// 混杂各种符号, 编码为UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
$objPHPExcel->getActiveSheet()->setCellValue('A8',"你好世界");
$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);
$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);
$value = "-ValueA\n-Value B\n-Value C";
$objPHPExcel->getActiveSheet()->setCellValue('A10', $value);
$objPHPExcel->getActiveSheet()->getRowDimension(10)->setRowHeight(-1);
$objPHPExcel->getActiveSheet()->getStyle('A10')->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('A10')->setQuotePrefix(true);
// 重命名工作sheet
$objPHPExcel->getActiveSheet()->setTitle('第一个sheet');
// 设置第一个sheet为工作的sheet
$objPHPExcel->setActiveSheetIndex(0);
// 保存Excel 2007格式文件,保存路径为当前路径,名字为export.xlsx
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save( 'export.xlsx');
// 保存Excel 95格式文件,,保存路径为当前路径,
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('export.xls');
生成的excel内容如下图:
以上示例在windows和centos上测试通过。
不过需要说明的是 phpoffice/phpexcel已经不再维护,原作者推荐使用 phpoffice/phpspreadsheet ;
如果当前工程的php版本低于5.6,还是使用 phpoffice/phpexcel较好。
如果没有历史包袱,使用原作者推荐的 phpoffice/phpspreadsheet 会更好。有时间我也会更新一下phpspreadsheet的使用方法。