1.効果を生み出す
2.実装方法
/ * *購入リストは、分割したマテリアルグループデータをエクスポートし ます* excelテーブル * $ cg_id =購入ID購入IDのみが渡されると、私のグループの下のすべてのマテリアルがエクスポートされます * * / public function cailiao_fenzu_excel(){ if(if!IS_POST)$ this- > error( 'Access error'、U( 'Index / index')); // ポストを使用 $ cg_id = I( 'cg_id' ); $ fz_id = I( 'fz_id' ); if( !$のcg_id)$この - >エラー( '購入取得していないID' ); $ユーザー =セッション( 'UID' ); IF(!$ユーザー [ 'UID'])$この-> error( '最初にログインしてください'、U( 'User / login' )); if(!$ fz_id ){ // フォームの生成に必要なレイアウト構造 $ conf = array ( 'xuhao' => 'Serial number'、 ' id '=>' ID '、 ' title '=>'デバイス名 '、 ' guige '=>'サイズ/モデル/仕様 '、 ' cz_title '=>'素材 '、 ' dw_title '=>'ユニット '、 ' xuyao_num '=>'数量 '、 ' des '=>'備考 '、 ' fujian_title '=>'付属品 '、 'daohuo_time' => "到着日"、 'zhongliang' => '重量'、 'danjia' => '単価'、 'money' => '金額' ); $ HeadArr = array_values($ CONF ); $ DataHeader = array_keys($ CONF ); $ fj_name = '2020414のスチール発注書'; // 生成されたファイル名 $ XLS = '(1).XLSを'; // ファイル特許 $ fileNameに [0] = $ fj_name ; // 生成されたファイル名 $ファイル名を [1] = $ fj_name。$ XLS ; $あるnewData = $ R&LT [ 'cailiao_list'] [ '一覧']; //が生成するデータ$ conf data order result :: dataExportOutセルフ($ headArr、$ newDataに、$ DataHeader、$ fileNameに); //は、Excelのスプレッドシートを生成します } }
/ * * *データテーブル導出によると * / 保護 機能 dataExportOut($ headArr、$ newDataに、$ DataHeader、$ fileNameに){ ベンダー( "PHPExcel.PHPExcel" ); $ objPHPExcel = 新しい新\ PHPExcel(); $ objPHPExcel - > getProperties(); $ objPHPExcel- > getActiveSheet()-> getDefaultStyle()-> getFont()-> setSize(12); // デフォルトのフォントサイズを設定 $ objPHPExcel- > getActiveSheet()-> getDefaultRowDimension()-> setRowHeight( 28); // すべてのセル(行) のデフォルトの高さは$ objPHPExcelです-> getActiveSheet()-> getDefaultColumnDimension()-> setWidth(17); // すべてのセル(列) のデフォルトの幅$ objPHPExcel- > getDefaultStyle()-> getAlignment()-> setHorizontal(\ PHPExcel_Style_Alignment :: HORIZONTAL_CENTER); // すべてのセルテキストが中央 揃え$ objPHPExcel- > getDefaultStyle()-> getAlignment()-> setVertical(\ PHPExcel_Style_Alignment :: VERTICAL_CENTER); // すべてのセルテキストが垂直方向に 中央揃え$ objPHPExcel- > getActiveSheet()-> getStyle( ' A:Z ')-> getAlignment()-> setWrapText(TRUE); // AからZまでの行、文字列は自動的に 折り返され、セルの高さは拡大されず、他の設定には影響しません //カスタムタイトル(最初の列) )$ Title = $ fileName [0]; // タイトル $ objPHPExcel-> getActiveSheet()-> mergeCells( 'A1:M1'); // セルを結合 $ objPHPExcel- > getActiveSheet()-> getRowDimension( '1')-> setRowHeight(40); // 行の高さの設定1列 $ objPHPExcel- > getActiveSheet()-> getStyle( 'A1')-> getFont()-> setSize(18); // 最初の列を設定するためにテキストサイズを設定 $ objPHPExcel- > getActiveSheet()-> getStyle( ' A1 ')-> getFont()-> setBold(true); // ボールドにするかどうかを設定 $ objPHPExcel- > getActiveSheet()-> getStyle(' A1 ')-> getAlignment()-> setHorizontal(\ PHPExcel_Style_Alignment :: HORIZONTAL_CENTER ); // テキストを左(HORIZONTAL_LEFT、デフォルト)、中央(HORIZONTAL_CENTER)、右(HORIZONTAL_RIGHT)に設定します $ objPHPExcel-> getActiveSheet()-> getStyle( 'A1')-> getAlignment()-> setVertical(\ PHPExcel_Style_Alignment :: VERTICAL_CENTER); // 垂直中心 $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(A. '1' 、$ title); // Title //カスタムサプライヤーの基本情報、テーブルヘッダー(2列目) $ objPHPExcel- > getActiveSheet()-> getRowDimension( '2')-> setRowHeight(28); // 行を設定高さ $ objPHPExcel- > getActiveSheet()-> getStyle( '2')-> getFont()-> setBold(true); // 2列目に太字にするかどうかを設定しますbold $ objPHPExcel- > getActiveSheet()-> mergeCells ( 'A2:C2'); // セルを結合 $ objPHPExcel- >setActiveSheetIndex(0)-> setCellValue(A. '2'、 'Company's full name');// タイトル $ objPHPExcel- > getActiveSheet()-> mergeCells( 'D2:F2'); // セルを結合 $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(D. '2'、 'Company address(province- City-District-Detailed Address) '); // タイトル $ objPHPExcel- > getActiveSheet()-> mergeCells(' G2:I2 '); // セルを結合 $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(G. '2'、 'Contact'); // タイトル $ objPHPExcel- > getActiveSheet()-> mergeCells( 'J2:L2'); // セルを結合 $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(J. '2'、 '連絡番号');// タイトル // 必要に応じてセルの3列目(3列目)をマージします$ objPHPExcel-> getActiveSheet()-> mergeCells( 'A3:C3'); // セルを結合 $ objPHPExcel- > getActiveSheet()-> mergeCells( 'D3:F3'); // セルを結合 $ objPHPExcel- > getActiveSheet( )-> mergeCells( 'G3:I3'); // セルを結合 $ objPHPExcel- > getActiveSheet()-> mergeCells( 'J3:L3'); // セルを結合 //テーブルヘッダーを設定(列4) $ objPHPExcel- > getActiveSheet()-> getRowDimension( '4')-> setRowHeight(28); // 行の高さを設定 $ objPHPExcel- > getActiveSheet()-> getStyle( '4')-> getFont()-> setBold (true);// 4番目の列を太字にするかどうかを設定します太字 $ key = ord( "A" ); foreachの($ headArr として $ V ){ $ colum = CHR($キー)。 $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue($ colum 。 '4'、$ v ); $ key + = 1 ; } // 内容(第5列 开始)if($ newData ){ $ column = 5 ; $ objActSheet = $ objPHPExcel- > getActiveSheet(); foreach($ newData as $ key=> $ rows){ // 行書き込み $ span = ord( "A" ); foreach($ rows as $ keyName => $ value){ // 列書き込み foreach($ dataHeader as $ head ){ if($ head == $ keyName ){ // 添付ファイルがある場合、セルフォントを赤にします if($ head == 'fujian_title' && $ value!= 'None' ){ $ val= chr($ span)。$ column ; $ objPHPExcel- > getActiveSheet()-> getStyle($ val)-> getFont()-> getColor()-> setRGB( 'FF0000'); // セルのフォントの色を設定 } $ objActSheet- > setCellValue(chr($ span)。$ column、$ value ); $ span ++ ; } } } $ column ++ ; } } // メソッド1の直接ダウンロード / * $ fileName_1 = iconv( "utf-8"、 "gb2312"、$ fileName [1]); //テーブルの名前を変更 $ objPHPExcel-> setActiveSheetIndex(0); //アクティビティシートを設定インデックスは最初のテーブルに移動するため、Excelはこれを最初のテーブルとして開きます ob_end_clean(); ob_start(); header( 'Content-Type:application / vnd.ms-excel; charset = UTF-8'); header( " Content-Disposition:attachment; filename = '$ fileName_1' "); header( 'Cache-Control:max-age = 0'); * / $ objWriter = \ PHPExcel_IOFactory :: createWriter($ objPHPExcel、 'Excel5' ); / / $ objWriter-> save( 'php://出力');//ブラウザからファイルをダウンロードします //方法2 //ファイルをサーバーディレクトリに保存します $ fj_name= $ _SERVER['DOCUMENT_ROOT']。 '/ Uploads / baojia_excel /'。$ fileName [1 ]; $ objWriter- > save($ fj_name ); 1を返す; }