ホームページ  >  記事  >  バックエンド開発  >  PHPExcelデータのエクスポート例

PHPExcelデータのエクスポート例

WBOY
WBOYオリジナル
2016-07-25 08:42:351040ブラウズ

1. getdata.php

  1. namespace WebadminModel;
  2. use ExtendSpaceExcel;
  3. わずかに
  4. // データを取得
  5. $dataBillArr = $this->get_list_bysql($sql);
  6. / / データ内の 0 と 1 を Yes と No に置き換えます
  7. // PHPExcel には処理用の組み込みメソッドがありますが、結果は TRUE/FALSE になるため、ここで自分で処理します
  8. $this->_formatZero($dataBillArr, array( 'taxflag', 'payflag', 'removeflag'));
  9. // 支払いステータスを置き換えます
  10. foreach ($dataBillArr as $key => $value) {
  11. switch ($value['statustype']) {
  12. case ' -1':
  13. $dataBillArr[$key]['statustype'] = 'キャンセル';
  14. ブレーク;
  15. case '-2':
  16. $dataBillArr[$key]['statustype'] = 'キャンセルされ、支払いが返されました';
  17. Break;
  18. case '0':
  19. $dataBillArr[$key]['statustype'] = '支払い保留中';
  20. Break;
  21. case '1':
  22. $dataBillArr[$key]['statustype' ] = '発送予定';
  23. ブレーク;
  24. ケース '2':
  25. $dataBillArr[$key]['statustype'] = '入荷予定';
  26. ブレーク;
  27. ケース '3':
  28. $dataBillArr[$ key ]['statustype'] = '完了';
  29. ブレーク;
  30. ケース '10':
  31. $dataBillArr[$key]['statustype'] = '返却完了';
  32. ブレーク;
  33. ケース '11':
  34. $dataBillArr [$key]['statustype'] = '返金完了';
  35. break;
  36. default:
  37. $dataBillArr[$key]['statustype'] = 'None';
  38. break;
  39. }
  40. }
  41. //Setエクスポートするフィールドと対応するヘッダー名
  42. $header = array(
  43. array('title'=>'プラットフォーム注文番号', 'field'=>'billcode', 'type'=> 'string' , 'autosize'=>true),
  44. array('title'=>'ユーザー アカウント', 'field'=>'ユーザー名', 'type'=>'string', 'autosize' => true),
  45. array('title'=>'ユーザー ニックネーム', 'field'=>'ニックネーム'),
  46. array('title'=>'販売者', 'field'=> ;'ショップユーザー' , 'autosize'=>true),
  47. array('title'=>'Guanyi ERP 注文番号', 'field'=>'erpsn', 'type'=>'string' , 'autosize'= >true),
  48. array('title'=>'支払い番号', 'field'=>'bspaycode', 'type'=>'string', 'autosize'=>true),
  49. array ('title'=>'保税バッチ番号', 'field'=>'bsbatchcode', 'type'=>'string', 'autosize'=>true),
  50. array('title'=> ;'国境を越えているのか', 'field'=>'taxflag'),
  51. array('title'=>'Order status', 'field'=>'statustype'),
  52. ……
  53. 省略
  54. ……
  55. );
  56. // Excel の生成とエクスポート操作を実行するインターフェイスを呼び出します
  57. $filename = 'Order flow table_' . date('Y year m month d day_His', time( ));
  58. Excel:: export($dataBillArr, $header, $filename);
コードをコピー


二、Excel.class.php

  1. namespace ExtendSpace;
  2. /**
  3. * クラス Excel ユニバーサル Excel インターフェイス、エクスポートおよびエクスポート操作を処理します
  4. * 使用説明:
  5. * 1. インポート
  6. * 続きます。 。 。
  7. * 2. エクスポート
  8. * 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 $objPHPExcel = 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. / / 2 行目からデータを書き込み、最初の行がヘッダーです
  46. $rowNum = 2;
  47. foreach($data as $rows){ // データを走査して行を取得します
  48. foreach($header as $kk = > $vv){ // セルの書き込み Enter
  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; // Number
  55. Break;
  56. case 'boolean':
  57. $type = PHPExcel_Cell_DataType:: TYPE_BOOL; // ブール値、0->TRUE
  58. デフォルト:
  59. $type = PHPExcel_Cell_DataType::TYPE_STRING; // String
  60. Break;
  61. }
  62. $objActSheet->setCellValueExplicit; ColIndex.$rowNum, $rows[$vv ['field']], $type);
  63. } else { // いいえ、デフォルトは通常です
  64. $objActSheet->setCellValue($colIndex.$rowNum, $rows[$vv] ['field']]);
  65. }
  66. }
  67. $rowNum++;
  68. }
  69. // 行の高さを設定 rownum
  70. // $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight (22);
  71. // フォントとスタイルを設定します
  72. $objActSheet->getDefaultStyle()->getFont()->setSize(12) // 全体のフォント サイズ
  73. $objActSheet->getStyle('A1) :' . self::_getHeaderIndex(count($ header)) . '1')->getFont()->setBold(true); // 列ヘッダーを太字にします
  74. // ワークシート名を設定します
  75. objActSheet->setTitle('Sheet1');
  76. // ヘッダーパラメータを設定します
  77. // header("Pragma: public");
  78. // header("Expires: 0");
  79. // header("Cache- Control:must-revalidate, post-check=0 , pre-check=0");
  80. // header("Content-Type:application/force-download");
  81. // header("Content-Type:application/ vnd.ms-execl");
  82. // header("Content-Type:application/octet-stream");
  83. // header("Content-Type:application/download");;
  84. // header('Content -Disposition:attachment;filename="' . $savedFileName . '"');
  85. // header("Content-Transfer-Encoding:binary");
  86. // 最終出力
  87. $savedFileName = self::_iconv($ filename) . '.xls'; // ファイル名 + 拡張子をエクスポートします
  88. header('Content-Type: application/vnd.ms-excel');
  89. header('Content-Disposition:attachment;filename="' . $保存ファイル名 . '"');
  90. header( 'Cache-Control: max-age=0');
  91. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  92. $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. プライベート関数 _getHeaderIndex($num) {
  111. return PHPExcel_Cell::stringFromColumnIndex($num);
  112. }
  113. /**
  114. * 文字化けを避けるための文字変換 ​​
  115. * @param string $str 処理対象の文字
  116. * @return string
  117. */
  118. private function _iconv($str) {
  119. return iconv('utf-8', 'gb2312', $str);
  120. }
  121. }
复制代



PHPエクセル


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。