一、getdata.php
- namespace WebadminModel;
-
- use ExtendSpaceExcel;
-
-
- use ExtendSpaceExcel;
-
-
- use ExtendSpaceExcel;
-
- 略> ……
-
- // 取出資料
- $dataBillArr = $this->get_list_bysql($sql);
-
- // 取代資料中的0 、1 為是、否
- // PHPExcel 有內建的方法處理,但得到的是TRUE/FALSE,這裡自己處理吧
- $this->_formatZero($dataBillArr, array('taxflag', 'payflag', 'removeflag'));
-
- // 替換支付狀態
- foreach ($dataBillArr as $key => $value) {
- switch ($value['statustype']) {
- case '-1':
- $dataBillArr[$key]['statustype'] = '已取消';
- break;
- case '-2':
- $dataBillArr[$key]['statustype'] = '已取消退款';
- break;
- case '0':
- $dataBillArr[$key]['statustype'] = '待付款';
- break;
- case '1 ':
- $dataBillArr[$key]['statustype'] = '待出貨';
- break;
- case '2':
- $dataBillArr[$key]['statustype'] = '待收貨';
- break;
- case '3':
- $dataBillArr[$key]['statustype'] = '完成';
- break;
- case ' 10':
- $dataBillArr[$key]['statustype'] = '退貨完成';
- break;
- case '11':
- $dataBillArr[$key]['statustype'] = '退款完成';
- break;
- default:
- $dataBillArr[$key]['statustype'] = '無';
- break;
- }
- }
-
- // 設定要匯出的欄位及對應的表頭名稱
- $header = array(
- array('title'=>'平台訂單號', 'field'=>'billcode' , 'type'=>'string', 'autosize'=>true),
- array('title'=>'用戶帳號', 'field'=>'username', 'type'=>'string' , 'autosize'=>true),
- array('title'=>'使用者暱稱', 'field'=>'nickname'),
- array('title'=>'所屬商家', ' field'=>'shopuser', 'autosize'=>true),
- array('title'=>'管易ERP單號', 'field'=>'erpsn', 'type'=>'string ', 'autosize'=>true),
- array('title'=>'支付單號', 'field'=>'bspaycode', 'type'=>'string', 'autosize'=>true ),
- array('title'=>'保稅批次號', 'field'=>'bsbatchcode', 'type'=>'string', 'autosize'=>true),
- array( 'title'=>'是否跨國', 'field'=>'taxflag'),
- array('title'=>'訂單狀態', 'field'=>'statustype'),
- … …
- 略
- ……
- );
// 調用接口,執行Excel 生成及導出操作 $filename = '訂單流水錶_' . date('Y年m月d日_His', time()); Excel::export($dataBillArr, $header, $filename); 複製程式碼
二、Excel.class.php
- namespace ExtendSpace;
-
- /**
- * Class Excel 通用Excel 接口,處理導出、導出操作
- * 使用說明:
- * 一、導入
- * 待續。 。 。
- * 二、匯出
- * use ExtendSpaceExcel;
- * .....
- * Excel::export($dataArr, $header, $filename);
- *
- * @package ExtendSpace
- * @author xxxxx 2015-08-27 14:07:14
- * @version
- */
- class Excel {
-
- // private static $objatePExcel null;
-
- /**
- * 入口檔案:匯出 Excel
- * @return
- */
- public static function export($data, $header, $filename='hms_excel_export') {
-
- // 引入PHPExcel 類別庫
- import('phpexcel.PHPExcel', dirname(__FILE__) . '/', '.php'); // 這裡是TP 特有,可直接用include 或require
-
- // 初始化設定
- $objPHPExcel = new PHPExcel();
- $objPHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test'); // 這裡設定中文亂碼,還沒解決
- // ->setTitle('這是標題')
- // ->setSubject('這是什麼')
- // ->setDescription('這是描述')
- // ->setKeywords ('這是關鍵字')
- // ->setCategory('這是目錄麼');
- // var_dump($objPHPExcel->getProperties());exit;
-
- / / 取得目前要操作的活動工作表
- $objActSheet = $objPHPExcel->getActiveSheet();
-
- // 寫入表頭
- foreach ($header as $k => $v) {
- $colIndex = self::_getHeaderIndex($k);
- $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colIndex . '1', $v['title']);
-
- // 欄位是否需要自動適應寬度
- if (!empty($v['autosize'])) {
- $objActSheet->getColumnDimension($colIndex)->setAutoSize(true);
- }
- }
-
- // 寫入數據,從第二行開始,第一行是表頭
- $rowNum = 2;
- foreach($data as $rows){ // 遍歷數據,取得一行
- foreach($header as $kk => $vv){ // 單元格寫入
- $colIndex = self::_getHeaderIndex($kk);
-
- // 是否指定儲存格資料格式
- if (!empty($vv['type'])) { // 是
- switch ($vv['type']) {
- case 'number' :
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; // 數字
- break;
- case 'boolean':
- $type = PHPExcel_Cell_DataType::TYPE_BOOL; // 布林值,0->FALSE111; ->TRUE
- break;
- default:
- $type = PHPExcel_Cell_DataType::TYPE_STRING; // 字串
- break;
- }
- $objActSheet->setCellValueExplic. rowNum, $rows[$vv['field']], $type);
- } else { // 否,預設常規
- $objActSheet->setCellValue($colIndex.$rowNum, $rows[$vv ['field']]);
- }
- }
- $rowNum ;
- }
-
- // 設定行高度rownum
- // $objPHPExcel->getActiveSheet() ->getRowDimension('1')->setRowHeight(22);
-
- // 設定字體和樣式
- $objActSheet->getDefaultStyle()->getFont()->setSize(12); / / 整體字號
- $objActSheet->getStyle('A1:' . self::_getHeaderIndex(count($header)) . '1')->getFont()->setBold(true); // 列標題加粗
-
- // 設定工作表名稱
- $objActSheet->setTitle('Sheet1');
-
- // 設定header 頭參數
- // header("Pragma: public ");
- // header("Expires: 0");
- // header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
- // header("Content-Type:application/force-download");
- // header("Content-Type:application/vnd.ms-execl");
- // header("Content-Type :application/octet-stream");
- // header("Content-Type:application/download");;
- // header('Content-Disposition:attachment;filename="' . $savedFileName . '"');
- // header("Content-Transfer-Encoding:binary");
-
- // 最終輸出
- $savedFileName = self::_iconv($filename) . '. xls'; // 匯出檔名副檔名
-
- header('Content-Type: application/vnd.ms-excel');
- header('Content-Disposition: attachment;filename="' . $savedFileName . '"');
- header('Cache-Control: max-age=0');
-
- $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');
- // $objWriter->save($savedFileName);
- }
-
- /**
- * 入口檔案:匯入 Excel
- * @return
- */
- public static function import() {
-
- // 引入PHPExcel 類庫
- // import('phpexcel.PHPExcel', dirname (__FILE__) '/', '.php');
-
- }
-
- 私人靜態函數_init() {
-
- }
-
- /**
- * 取得表頭索引值,即:A,B,C...,大於
- * @param array $header 用於設定表頭的陣列
- * @return string
- */
- private function _getHeaderIndex($num) {
- return PHPExcel_Cell::stringFromColumnIndex($num);
- }
-
- /> / private function _iconv($str) {
- return iconv('utf-8', 'gb2312', $str);
- }
- }
-
-
- 複製程式碼
- }
-
複製程式碼
|