在項目中開發後臺時經常會遇到導出數據爲excel文件的需求,這裏以Thinkphp5框架作爲基礎封裝了一個導出excel文件的函數,其他框架可以在此基礎上做對應修改。適用於PHP5.6+。
/**
* 導出數據爲excal文件
*
* @param string $expTitle
* @param array $expCellName
* @param array $expTableData
*/
function dataExcel($expTitle, $expCellName, $expTableData)
{
include '你的PHPExcel.php文件路徑';
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle); // 文件名稱
$fileName = $expTitle . date('_YmdHis'); // or $xlsTitle 文件名稱可根據自己情況設定
$cellNum = count($expCellName);
$dataNum = count($expTableData);
$objPHPExcel = new \PHPExcel();
$cellName = 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',
'AA',
'AB',
'AC',
'AD',
'AE',
'AF',
'AG',
'AH',
'AI',
'AJ',
'AK',
'AL',
'AM',
'AN',
'AO',
'AP',
'AQ',
'AR',
'AS',
'AT',
'AU',
'AV',
'AW',
'AX',
'AY',
'AZ'
);
for ($i = 0; $i < $cellNum; $i ++) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i] . '2', $expCellName[$i][1]);
}
for ($i = 0; $i < $dataNum; $i ++) {
for ($j = 0; $j < $cellNum; $j ++) {
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), " " . $expTableData[$i][$expCellName[$j][0]]);
}
}
$objPHPExcel->setActiveSheetIndex(0);
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="' . $xlsTitle . '.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls"); // attachment新窗口打印inline本窗口打印
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
}
調用示例
public function GoodsDataExcel()
{
//你要導出的數據
$excel_data[$key]['goods_name'] = '【跨境購】韓國Wonjin Effect原辰 透明質酸安瓶補水氨基酸面膜 10片/盒 含稅包郵';//商品名
$excel_data[$key]['goods_sn'] = '201901301457327454';//商品編號
//你要導出的表名
$xlsName = "商品數據列表";
//導出的數據格式
$xlsCell = array(
array(
'goods_name',
'商品名'
),
array(
'goods_sn',
'商品編號'
)
);
dataExcel($xlsName, $xlsCell, $excel_data);
}
封裝的函數完整性很高,一般直接放在common文件中即可在項目中方便的適用啦。
點個贊吧!☺☺☺