1. getdata.php
- namespace WebadminModel;
-
- use ExtendSpaceExcel;
-
- …
- わずかに
- …
-
- // データを取得
- $dataBillArr = $this->get_list_bysql($sql);
-
- / / データ内の 0 と 1 を Yes と No に置き換えます
- // PHPExcel には処理用の組み込みメソッドがありますが、結果は TRUE/FALSE になるため、ここで自分で処理します
- $this->_formatZero($dataBillArr, array( 'taxflag', 'payflag', 'removeflag'));
-
- // 支払いステータスを置き換えます
- foreach ($dataBillArr as $key => $value) {
- switch ($value['statustype']) {
- case ' -1':
- $dataBillArr[$key]['statustype'] = 'キャンセル';
- ブレーク;
- case '-2':
- $dataBillArr[$key]['statustype'] = 'キャンセルされ、支払いが返されました';
- Break;
- case '0':
- $dataBillArr[$key]['statustype'] = '支払い保留中';
- Break;
- case '1':
- $dataBillArr[$key]['statustype' ] = '発送予定';
- ブレーク;
- ケース '2':
- $dataBillArr[$key]['statustype'] = '入荷予定';
- ブレーク;
- ケース '3':
- $dataBillArr[$ key ]['statustype'] = '完了';
- ブレーク;
- ケース '10':
- $dataBillArr[$key]['statustype'] = '返却完了';
- ブレーク;
- ケース '11':
- $dataBillArr [$key]['statustype'] = '返金完了';
- break;
- default:
- $dataBillArr[$key]['statustype'] = 'None';
- break;
- }
- }
-
- //Setエクスポートするフィールドと対応するヘッダー名
- $header = array(
- array('title'=>'プラットフォーム注文番号', 'field'=>'billcode', 'type'=> 'string' , 'autosize'=>true),
- array('title'=>'ユーザー アカウント', 'field'=>'ユーザー名', 'type'=>'string', 'autosize' => true),
- array('title'=>'ユーザー ニックネーム', 'field'=>'ニックネーム'),
- array('title'=>'販売者', 'field'=> ;'ショップユーザー' , 'autosize'=>true),
- array('title'=>'Guanyi 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'=>'Order status', 'field'=>'statustype'),
- ……
- 省略
- ……
- );
-
- // Excel の生成とエクスポート操作を実行するインターフェイスを呼び出します
- $filename = 'Order flow table_' . date('Y year m month d day_His', time( ));
- Excel:: export($dataBillArr, $header, $filename);
コードをコピー
二、Excel.class.php
- namespace ExtendSpace;
- /**
- * クラス Excel ユニバーサル Excel インターフェイス、エクスポートおよびエクスポート操作を処理します
- * 使用説明:
- * 1. インポート
- * 続きます。 。 。
- * 2. エクスポート
- * ExtendSpaceExcel を使用します;
- * .....
- * Excel::export($dataArr, $header, $filename);
- *
- * @package ExtendSpace
- * @author xxxxx 2015-08- 27 14:07:14
- * @version
- */
- class Excel {
- // private static $objPHPExcel = 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);
- }
- }
-
- / / 2 行目からデータを書き込み、最初の行がヘッダーです
- $rowNum = 2;
- foreach($data as $rows){ // データを走査して行を取得します
- foreach($header as $kk = > $vv){ // セルの書き込み Enter
- $colIndex = self::_getHeaderIndex($kk);
-
- // セルのデータ形式を指定するかどうか
- if (!empty($vv['type'])) { // はい
- switch ($vv[' type']) {
- case 'number':
- $type = PHPExcel_Cell_DataType::TYPE_NUMERIC; // Number
- Break;
- case 'boolean':
- $type = PHPExcel_Cell_DataType:: TYPE_BOOL; // ブール値、0->TRUE
- デフォルト:
- $type = PHPExcel_Cell_DataType::TYPE_STRING; // String
- Break;
- }
- $objActSheet->setCellValueExplicit; ColIndex.$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("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="' . $保存ファイル名 . '"');
- 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
- */
- プライベート関数 _getHeaderIndex($num) {
- return PHPExcel_Cell::stringFromColumnIndex($num);
- }
-
- /**
- * 文字化けを避けるための文字変換
- * @param string $str 処理対象の文字
- * @return string
- */
- private function _iconv($str) {
- return iconv('utf-8', 'gb2312', $str);
- }
- }
复制代
|