PHP導出數據爲excel文件

在項目中開發後臺時經常會遇到導出數據爲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文件中即可在項目中方便的適用啦。

點個贊吧!☺☺☺

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章