用的PHPExcel插件
github地址
下载后,Examples文件夹里面有各种示例代码,包括下载,生成表格、图形等
<?php
/**
* @param $list 要导出的数据,二维数组
* @param $header 表头
* @param $fields 导出数据的字段列表
* @param string $filename 导出文件的名称
* @param bool $excel2007 excel类型
* @return array
* @throws PHPExcel_Exception
* @throws PHPExcel_Writer_Exception
*/
function createExcel($list, $header, $fields, $filename = "test", $excel2007 = true)
{
require_once '../util/PHPExcel/PHPExcel.php';
require_once '../util/PHPExcel/PHPExcel/Writer/Excel2007.php';
ini_set('memory_limit', '2048M');
if (!is_array($header)) {
return ['code' => 10000, 'msg' => '表头必须是数组'];
}
if (!is_array($fields)) {
return ['code' => 10001, 'msg' => '数据字段必须是数组'];
}
$startRow = 1;
$header_arr = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
//初始化PHPExcel()
$objPHPExcel = new PHPExcel();
//设置保存版本格式
if ($excel2007) {
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$filename = $filename . '.xlsx';
} else {
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$filename = $filename . '.xls';
}
$objActSheet = $objPHPExcel->getActiveSheet();
// 设置表头内容
foreach ($header as $key => $name) {
$objActSheet->setCellValue($header_arr[$key] . $startRow, $name);
}
$startRow++;
// 设置每一行内容
foreach ($list as $row) {
foreach ($fields as $key => $field) {
//设置单元格的内容
$objActSheet->setCellValue($header_arr[$key] . $startRow, $row[$field]);
}
$startRow++;
}
// 写文件
$dir = "./";
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
// 检查目录是否可写
if (is_writeable($dir) === false) {
return ['code' => 10002, 'msg' => '目录不可写'];
}
$execlFilePath = $dir . $filename;
$objWriter->save($execlFilePath);
return ['code' => 0, 'msg' => 'ok'];
}