最近因为项目需求需要把数据导出为excel表格,于是百度研究了一下PHPExcel手册,下面简洁记录一下tp5框架如何使用。
1.访问https://github.com/PHPOffice/PHPExcel 下载Classes,并将其改为PHPExcel
2.把文件夹粘贴到tp的vendor下
3.控制器引入类即可。
下面是基本导出代码,复杂的可以看手册,引用是一定注意路径,别忘了"\"
function excel()
{
vendor("PHPExcel.PHPExcel");
//实例化PHPExcel类
$objPHPExcel = new \PHPExcel();
//创建内置表
$objSheet = $objPHPExcel->getActiveSheet();
//设置内置表名称
$objSheet->setTitle("客户信息");
//设置单元格的宽度
$objSheet->getColumnDimension('B')->setWidth(20);
$objSheet->getColumnDimension('D')->setWidth(20);
$objSheet->getColumnDimension('F')->setWidth(20);
//设置单元格的格式
$objSheet->getStyle('A')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$objSheet->getStyle('B')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$objSheet->getStyle('D')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
$objSheet->getStyle('F')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);
//设置列的名字
$objSheet->setCellValue("A1", "姓名")->setCellValue("B1", "电话")->setCellValue("C1", "楼盘")->setCellValue("D1", "录入时间")->setCellValue("E1", "录入人")->setCellValue("F1", "跟进时间");
$result = input('param.');
//获得将要填充的数据
$datas = $result['excel'];
$ans = array();
foreach ($datas as $data) {
$ans[] = $this->object_to_array(json_decode($data));
}
$j = 2;
$length = count($data);
$i = 0;
foreach ($ans as $true_data) {
$objSheet->setCellValue("A" . $j, $true_data['client_name'])
->setCellValueExplicit("B" . $j, $true_data['client_phone'], \PHPExcel_Cell_DataType::TYPE_STRING)
->setCellValue("C" . $j, $true_data['estate_name'])
->setCellValueExplicit("D" . $j, $true_data['enterer_time'], \PHPExcel_Cell_DataType::TYPE_STRING)
->setCellValue("E" . $j, $true_data['user_name'])
->setCellValueExplicit("F" . $j, $true_data['follow_up_time'], \PHPExcel_Cell_DataType::TYPE_STRING);
//往下行写
$j++;
}
//生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel5");
//设置输出到浏览器的格式(Excel5)
header('Content-Type: application/vnd.ms-excel');
//设置输出到浏览器的excel文件的名字
header('Content-Disposition: attachment;filename="客户信息.xls"');
//禁止缓存
header('Cache-Control: max-age=0');
//输出
$objWriter->save("php://output");
}