首頁 >後端開發 >php教程 >PHPExcel 資料匯出實例

PHPExcel 資料匯出實例

WBOY
WBOY原創
2016-07-25 08:42:351109瀏覽

一、getdata.php

  1. namespace WebadminModel;
  2. use ExtendSpaceExcel;
  3. use ExtendSpaceExcel;
  4. use ExtendSpaceExcel;
  5. 略> ……
  6. // 取出資料
  7. $dataBillArr = $this->get_list_bysql($sql);
  8. // 取代資料中的0 、1 為是、否
  9. // PHPExcel 有內建的方法處理,但得到的是TRUE/FALSE,這裡自己處理吧
  10. $this->_formatZero($dataBillArr, array('taxflag', 'payflag', 'removeflag'));
  11. // 替換支付狀態
  12. foreach ($dataBillArr as $key => $value) {
  13. switch ($value['statustype']) {
  14. case '-1':
  15. $dataBillArr[$key]['statustype'] = '已取消';
  16. break;
  17. case '-2':
  18. $dataBillArr[$key]['statustype'] = '已取消退款';
  19. break;
  20. case '0':
  21. $dataBillArr[$key]['statustype'] = '待付款';
  22. break;
  23. case '1 ':
  24. $dataBillArr[$key]['statustype'] = '待出貨';
  25. break;
  26. case '2':
  27. $dataBillArr[$key]['statustype'] = '待收貨';
  28. break;
  29. case '3':
  30. $dataBillArr[$key]['statustype'] = '完成';
  31. break;
  32. case ' 10':
  33. $dataBillArr[$key]['statustype'] = '退貨完成';
  34. break;
  35. case '11':
  36. $dataBillArr[$key]['statustype'] = '退款完成';
  37. break;
  38. default:
  39. $dataBillArr[$key]['statustype'] = '無';
  40. break;
  41. }
  42. }
  43. // 設定要匯出的欄位及對應的表頭名稱
  44. $header = array(
  45. array('title'=>'平台訂單號', 'field'=>'billcode' , 'type'=>'string', 'autosize'=>true),
  46. array('title'=>'用戶帳號', 'field'=>'username', 'type'=>'string' , 'autosize'=>true),
  47. array('title'=>'使用者暱稱', 'field'=>'nickname'),
  48. array('title'=>'所屬商家', ' field'=>'shopuser', 'autosize'=>true),
  49. array('title'=>'管易ERP單號', 'field'=>'erpsn', 'type'=>'string ', 'autosize'=>true),
  50. array('title'=>'支付單號', 'field'=>'bspaycode', 'type'=>'string', 'autosize'=>true ),
  51. array('title'=>'保稅批次號', 'field'=>'bsbatchcode', 'type'=>'string', 'autosize'=>true),
  52. array( 'title'=>'是否跨國', 'field'=>'taxflag'),
  53. array('title'=>'訂單狀態', 'field'=>'statustype'),
  54. … …
  55. ……
  56. );
// 調用接口,執行Excel 生成及導出操作 $filename = '訂單流水錶_' . date('Y年m月d日_His', time()); Excel::export($dataBillArr, $header, $filename);
複製程式碼


二、Excel.class.php

  1. namespace ExtendSpace;
  2. /**
  3. * Class Excel 通用Excel 接口,處理導出、導出操作
  4. * 使用說明:
  5. * 一、導入
  6. * 待續。 。 。
  7. * 二、匯出
  8. * use ExtendSpaceExcel;
  9. * .....
  10. * Excel::export($dataArr, $header, $filename);
  11. *
  12. * @package ExtendSpace
  13. * @author xxxxx 2015-08-27 14:07:14
  14. * @version
  15. */
  16. class Excel {
  17. // private static $objatePExcel null;
  18. /**
  19. * 入口檔案:匯出 Excel
  20. * @return
  21. */
  22. public static function export($data, $header, $filename='hms_excel_export') {
  23. // 引入PHPExcel 類別庫
  24. import('phpexcel.PHPExcel', dirname(__FILE__) . '/', '.php'); // 這裡是TP 特有,可直接用include 或require
  25. // 初始化設定
  26. $objPHPExcel = new PHPExcel();
  27. $objPHPExcel->getProperties()->setCreator('test')->setLastModifiedBy('test'); // 這裡設定中文亂碼,還沒解決
  28. // ->setTitle('這是標題')
  29. // ->setSubject('這是什麼')
  30. // ->setDescription('這是描述')
  31. // ->setKeywords ('這是關鍵字')
  32. // ->setCategory('這是目錄麼');
  33. // var_dump($objPHPExcel->getProperties());exit;
  34. / / 取得目前要操作的活動工作表
  35. $objActSheet = $objPHPExcel->getActiveSheet();
  36. // 寫入表頭
  37. foreach ($header as $k => $v) {
  38. $colIndex = self::_getHeaderIndex($k);
  39. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colIndex . '1', $v['title']);
  40. // 欄位是否需要自動適應寬度
  41. if (!empty($v['autosize'])) {
  42. $objActSheet->getColumnDimension($colIndex)->setAutoSize(true);
  43. }
  44. }
  45. // 寫入數據,從第二行開始,第一行是表頭
  46. $rowNum = 2;
  47. foreach($data as $rows){ // 遍歷數據,取得一行
  48. foreach($header as $kk => $vv){ // 單元格寫入
  49. $colIndex = self::_getHeaderIndex($kk);
  50. // 是否指定儲存格資料格式
  51. if (!empty($vv['type'])) { // 是
  52. switch ($vv['type']) {
  53. case 'number' :
  54. $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; // 數字
  55. break;
  56. case 'boolean':
  57. $type = PHPExcel_Cell_DataType::TYPE_BOOL; // 布林值,0->FALSE111; ->TRUE
  58. break;
  59. default:
  60. $type = PHPExcel_Cell_DataType::TYPE_STRING; // 字串
  61. break;
  62. }
  63. $objActSheet->setCellValueExplic. rowNum, $rows[$vv['field']], $type);
  64. } else { // 否,預設常規
  65. $objActSheet->setCellValue($colIndex.$rowNum, $rows[$vv ['field']]);
  66. }
  67. }
  68. $rowNum ;
  69. }
  70. // 設定行高度rownum
  71. // $objPHPExcel->getActiveSheet() ->getRowDimension('1')->setRowHeight(22);
  72. // 設定字體和樣式
  73. $objActSheet->getDefaultStyle()->getFont()->setSize(12); / / 整體字號
  74. $objActSheet->getStyle('A1:' . self::_getHeaderIndex(count($header)) . '1')->getFont()->setBold(true); // 列標題加粗
  75. // 設定工作表名稱
  76. $objActSheet->setTitle('Sheet1');
  77. // 設定header 頭參數
  78. // header("Pragma: public ");
  79. // header("Expires: 0");
  80. // header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  81. // header("Content-Type:application/force-download");
  82. // header("Content-Type:application/vnd.ms-execl");
  83. // header("Content-Type :application/octet-stream");
  84. // header("Content-Type:application/download");;
  85. // header('Content-Disposition:attachment;filename="' . $savedFileName . '"');
  86. // header("Content-Transfer-Encoding:binary");
  87. // 最終輸出
  88. $savedFileName = self::_iconv($filename) . '. xls'; // 匯出檔名副檔名
  89. header('Content-Type: application/vnd.ms-excel');
  90. header('Content-Disposition: attachment;filename="' . $savedFileName . '"');
  91. header('Cache-Control: max-age=0');
  92. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output');
  93. // $objWriter->save($savedFileName);
  94. }
  95. /**
  96. * 入口檔案:匯入 Excel
  97. * @return
  98. */
  99. public static function import() {
  100. // 引入PHPExcel 類庫
  101. // import('phpexcel.PHPExcel', dirname (__FILE__) '/', '.php');
  102. }
  103. 私人靜態函數_init() {
  104. }
  105. /**
  106. * 取得表頭索引值,即:A,B,C...,大於
  107. * @param array $header 用於設定表頭的陣列
  108. * @return string
  109. */
  110. private function _getHeaderIndex($num) {
  111. return PHPExcel_Cell::stringFromColumnIndex($num);
  112. }
  113. /> / private function _iconv($str) {
  114. return iconv('utf-8', 'gb2312', $str);
  115. }
  116. }
  117. 複製程式碼
  118. }
複製程式碼



PHPExcel

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn