PHPExcelの成功したテーブル生成方法、thinkphpはPHPExcelを使用してテーブルを生成します

1.効果を生み出す

 

 

 

2.実装方法

/ * 
     *購入リストは、分割したマテリアルグループデータをエクスポートし
     ます* excelテーブル
     * $ cg_id =購入ID購入IDのみが渡されると、私のグループの下のすべてのマテリアルがエクスポートされます
     * * / 
    public  function cailiao_fenzu_excel(){
         ifif!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()-> setHorizo​​ntal(\ 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()-> setHorizo​​ntal(\ 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'、 'C​​ompany's full name');// タイトル
        $ objPHPExcel- > getActiveSheet()-> mergeCells( 'D2:F2'); // セルを結合
        $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(D. '2'、 'C​​ompany address(province- City-District-Detailed Address) '); // タイトル
        $ objPHPExcel- > getActiveSheet()-> mergeCells(' G2:I2 '); // セルを結合
        $ objPHPExcel- > setActiveSheetIndex(0)-> setCellValue(G. '2'、 'C​​ontact'); // タイトル
        $ 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を返す; 
    }

 

おすすめ

転載: www.cnblogs.com/zc290987034/p/12695631.html