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()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br>
$objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br>
$objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br>
$objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br>
$objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->sethorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);<br>
$objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->sethorizontal(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 北京駅:今回はアリババの技術専門家が現場に登場するのは珍しいですね。 !