ホームページ  >  記事  >  php教程  >  生成された画像を含む Thinkphp3.2 および phpexcel のエクスポートは完璧なケースです

生成された画像を含む Thinkphp3.2 および phpexcel のエクスポートは完璧なケースです

WBOY
WBOYオリジナル
2016-07-06 13:29:211236ブラウズ

Thinkphp3.2 と phpexcel を生成したピクチャーパーフェクトケースでエクスポート
私は初心者で、最近 tp を使用して 1 か月間、レポートをエクスポートするときに画像を生成する必要があります。時間をかけてサンプルコードを確認しました//Export exl<br>。 パブリック関数 look_down(){<br> $id = I('get.id');<br> $m = M ('offer_goods');<br> $where['offer_id'] = $id;<br> $data = $m->field('goods_id,goods_sn,goods_name,barcode,goods_type,price')->select();<br> <br> // Exl をエクスポートする<br> import("Org.Util.PHPExcel");<br> import("Org.Util.PHPExcel.Worksheet.Drawing");<br> import("Org.Util.PHPExcel.Writer.Excel2007");<br> $objPHPExcel = new PHPExcel();<br> <br> $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);<br> <br> $objActSheet = $objPHPExcel->getActiveSheet();<br> <br> //水平方向の中央揃え (位置は非常に重要です。初期位置にすることをお勧めします)<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br> <br> $objActSheet->setCellValue('A1', '商品番号');<br> $objActSheet->setCellValue('B1', '製品名');<br> $objActSheet->setCellValue('C1', '製品画像');<br> $objActSheet->setCellValue('D1', '商品バーコード');<br> $objActSheet->setCellValue('E1', '製品属性');<br> $objActSheet->setCellValue('F1', '見積書 (香港ドル)');<br> //テーブルの幅を設定します<br> $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);<br> $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(80);<br> $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);<br> $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);<br> $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);<br>        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);<br>         <br>         // 垂直居中<br>         $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);<br>         $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);<br>         $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);<br>         $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);<br>         $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);<br>         <br>         foreach($data as $k=>$v){<br>             $k +=2;<br>             $objActSheet->setCellValue('A'.$k, $v['goods_sn']);    <br>             $objActSheet->setCellValue('B'.$k, $v['goods_name']);    <br>                 <br>             <br>             $img = M('goods')->where('goods_id = '.$v['goods_id'])->field('goods_thumb')->find();<br>             // 画像生成<br>             $objDrawing[$k] = 新しい PHPExcel_Worksheet_Drawing();<br>             $objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']);<br>             // 設置宽度の高さ<br>             $objDrawing[$k]->setHeight(80);//写真高さ<br>             $objDrawing[$k]->setWidth(80); //写真度<br>             /*配置図片が挿入されるべき元格*/<br>             $objDrawing[$k]->setCoowned('C'.$k);<br>             // 写真偏移距離<br>             $objDrawing[$k]->setOffsetX(12);<br>             $objDrawing[$k]->setOffsetY(12);<br>             $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());<br>             <br>             // 表格内容<br>             $objActSheet->setCellValue('D'.$k, $v['barcode']);    <br>             $objActSheet->setCellValue('E'.$k, $v['goods_type']);    <br>             $objActSheet->setCellValue('F'.$k, $v['price']);<br>                 <br>             // 表格の高さ<br>             $objActSheet->getRowDimension($k)->setRowHeight(80);<br>                                         }<br> <br> $fileName = '見積フォーム';<br> $date = date("Y-m-d",time());<br> $fileName .= "_{$date}.xls";<br> <br> $fileName = iconv("utf-8", "gb2312", $fileName);<br> // テーブルの名前を変更します<br> // $objPHPExcel->getActiveSheet()->setTitle('test');<br> //アクティブな注文インデックスを最初のテーブルに設定するので、これが Excel を開いたときの最初のテーブルになります<br> $objPHPExcel->setActiveSheetIndex(0);<br> header('Content-Type: application/vnd.ms-excel');<br> header("Content-Disposition:attachment;filename="$fileName"");<br> header('キャッシュ制御: max-age=0');<br> <br> $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');<br> $objWriter->save('php://output') //ファイルはブラウザ経由でダウンロードされます<br>; // }<br>注:<br> 1.phpexcelダウンロードアドレス:http://phpexcel.codeplex.com/
2. Classes ディレクトリ (PHPExcel.php および PHPExcel フォルダ) にあるファイルを ThinkPHPLibraryOrgUtil ディレクトリに配置します (クラスがロードできる限り、他のディレクトリに配置しても問題ありません)。そして、PHPExcel.php を PHPExcel.class.php に変更します (このステップは非常に重要です。ロードする必要がある PHP ファイルは xxx.class.php に変更する必要があります)

3. クラスを手動でインポートします (「」記号に注意してください)
import("Org.Util.PHPExcel");
$objPHPExcel = 新しい PHPExcel();
(クラスを自動的にロードしようとしましたが、phpexcel ファイルに「namespace OrgUtil;」を追加する必要があるため、さらに面倒なので、単にクラスを手動でロードすることを選択しました)

4. 水平方向のセンタリング、垂直方向のセンタリング、高さなどの設定。位置に注意して最後に置くと以下のようになります。 headに置くと1行目が有効になります(上記のコードは1行目が有効になりますが、foreachに置くと次の行が有効になります)。

5. インポートの紹介。 import("Org.Util.PHPExcel.Writer.Excel2007"); ファイルの場所: OrgUtilPHPExcelWriterExcel2007.class.php

6. イメージ アドレスはローカルである必要があります。
$objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']); 画像の場所: インストールディレクトリ/Upload/xxx

よくある問題:
1.「クラス xxx が見つかりません」 クラスのインポートが失敗した場合は、まず xxx.class.php に関数 ss(){} を配置し、次に $xx = new xxx ->ss() を出力します。結果を参照してください。

……

感想: これを初めて始めたときは、これまでやったことがなく、経験もなかったため、非常に戸惑いました。次に、Du Niang、Du Niang、... 次に、phpexcel を使用して単純なテキスト出力を生成し、次に単純な画像出力を生成し、最後に質問と画像を結合して出力すると、現在のサンプル コードが得られます。最初は小さな単純なステップ、次に小さなステップ、そして最後に大きなステップで完了です

thinkphp3.2とphpexcelインポート
http://www.thinkphp.cn/code/2124.html
Yunqi Conference 北京駅:今回はアリババの技術専門家が現場に登場するのは珍しいですね。 !

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