【工兵连分享】Yii2轻松操作Excel - ①安装phpexcel库 [ 技术分享 ]
Excel 如果你做商务类或办公类的程序,操作Excel是你避免不了要做的一个功能,我们总不能自己去研究Excel吧,找轮子~~~
phpoffice/phpexcel https://github.com/phpoffice/phpexcel
是的,这货帮我们完成了一切,它是一个很老牌很强大的Excel操作类,可以轻松生成一个电子表(csv、xls、xlsx),还能导入并分析电子表格,当然还有其他比如生成pdf等等,我们慢慢说。
本文目录
- 使用Composer安装一个phpexcel
- 导入分析一个电子表格
- 生成一个电子表格
安装phpexcel
如果你是用composer安装的yii2,那么这个步骤再简单不了,一行代码
composer require phpoffice/phpexcel
安装成功后程序 vendor里应该多了一个phpoffice文件夹,就是它了。
导入一个电子表格
我们计划将yii2程序中的/web/data.xls文件导入并且输出所有数据放到一个二维数组内。
在一个控制器的action内完成。
use PHPExcel; // 首先要引入PHPExcel库
public function actionRead(){
$file = Yii::getAlias("@webroot")."/data.xls";
$objReader = new \PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($file);
$objWorksheet = $objPHPExcel->getSheet(0);
$highestRow = $objWorksheet->getHighestRow();//最大行数,为数字
$highestColumn = $objWorksheet->getHighestColumn();//最大列数 为字母
$highestColumnIndex = \PHPExcel_Cell::columnIndexFromString($highestColumn); //将字母变为数字
$tableData = [];
for($row = 1;$row<=$highestRow;$row++){
for($col=0;$col< $highestColumnIndex;$col++){
$tableData[$row][$col] = $objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
}
}
var_dump($tableData);
}
就这样容易,结果出来了。
这是最简单的分析,PHPExcel还支持对csv、xlsx等不同后缀电子表格的操作,还能对一个电子表格里不同的sheet进行分析,强大到不要不要的~,后续会逐一讲解。
生成一个电子表格
我们生成一个电子表格,浏览器打开会直接下载。少言,直接代码说话。
use PHPExcel;
$headerArr = ['编号','用户名','生成时间'];
$fileName = "abc.xls";
$objPHPExcel = new PHPExcel();
$objProps = $objPHPExcel->getProperties();
$key = ord('A');
foreach($headerArr as $v){
$colum = chr($key);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colum.'1',$v);
$key += 1;
}
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header("Content-Disposition: attachment; filename=\"$fileName\"");
header('Cache-Control: max-age=0');
$writer = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5');
$writer->save('php://output');
当然这个例子也很简单,生成的excel只有表头,无内容。
我们仅仅是展示两个例子告诉大家phpexcel能满足你对excel的所有操作,而本专题会对此扩展进行一一讲解。
共 3 条回复
-
Argument 1 passed to PHPExcel_Style::setFont() must be an instance of PHPExcel_Style_Font, null given, called in C:\phpStudy\WWW\advanced\vendor\phpoffice\phpexcel\Classes\PHPExcel\Reader\Excel5.php on line 2027 and defined
报这个错,什么原因啊楼主,求助共 3 条回复凡尘一梦 觉得很赞 -
建议大家去看看 https://github.com/phpoffice/phpexcel 这里面的example。
但是人家作者也说了,在php 5.6.27下有bug,所以不会维护了, 下一个新版本是 phpspreadsheet 但是还没发布。
abei1982 河南洛阳
最后登录:2020-04-14
在线时长:128小时48分
- 粉丝307
- 金钱4935
- 威望50
- 积分6715