PHPExcel_PHP チュートリアルを使用して Excel 円グラフを変換する

WBOY
リリース: 2016-07-13 10:30:21
オリジナル
1338 人が閲覧しました

PHPExcel は、Excel ファイルを処理するための非常に強力なツールです。PHPExcel には、この効果を実現するために参照および変更した円グラフを含むレポートがあります。

ユーザーは、クリックダウンロードプロセス中に Excel ファイルを生成およびダウンロードし、Excel ミッドレンジで円グラフを生成できます。

この例は主に 2 つの点で変更されています:

1. MySQLデータベースからデータを取得するように変更します

2. IE などの一部のブラウザでダウンロードするときに中国語のファイル名が文字化けする問題の解決策を追加しました。

PHPレポートは次のとおりです:

xls への変換のレンダリング:


喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+tPrC68jnz8I6PC9wPgo8cD4gPHByZSBjbGFzcz0="brush:java;">getProperties()->setCreator("XiongChuanLiang") ->setLastModifiedBy("XiongChuanLiang") ->setTitle("汇总表"); $objActSheet = $objPHPExcel->getActiveSheet(); $objActSheet->getColumnDimension('A')->setWidth(50); $objActSheet->getColumnDimension('B')->setWidth(50); $objActSheet->getRowDimension(1)->setRowHeight(30); $objActSheet->getRowDimension(2)->setRowHeight(16); $objActSheet->mergeCells('A1:C1'); $objActSheet->mergeCells('A2:C2'); //設置居中对齐 $objActSheet->getStyle('A1')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objActSheet->getStyle('A2')->getAlignment()->sethorizo​​ntal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objFontA1 = $objActSheet->getStyle('A1')->getFont(); $objFontA1->setSize(18); $objFontA1->setBold(true); //////////////////////////////////////////////// /////////////////////// $sql = mysql_query("SELECT * AS state_name, count( * ) AS stat_count から ( …… )k GROUP BYステータス ORDER BY ステータス "); $info = mysql_fetch_array($sql); $objActSheet->setCellValue('A1', '汇总表'); if(strlen( トリム( $sdev_model)) > 0 ) { $objActSheet->setCellValue('A2',"型名:xxxxxx"); } $行=3; $objActSheet->setCellValue('A'.$row,'状態态'); $objActSheet->setCellValue('B'.$row, '总量'); $行=4; する{ $objActSheet->setCellValueExplicit('A'.$row,$info['state_name'],PHPExcel_Cell_DataType::TYPE_STRING); $objActSheet->setCellValueExplicit('B'.$row,$info['stat_count'],PHPExcel_Cell_DataType::TYPE_NUMERIC); $objActSheet->setCellValue('A'.$row, $info['state_name']); $objActSheet->setCellValue('B'.$row, $info['stat_count']); $行++; }while($info=mysql_fetch_array($sql)); //////////////////////////////////////////////// /////////////////////// for ($currrow = 3; $currrow getStyle('A'.$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('A'.$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('A'.$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('A'.$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('B'.$currrow)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('B'.$currrow)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('B'.$currrow)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle('B'.$currrow)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); }//////////////////////////////////////////////// /////////////////////////////// //////////////////////////////////////////////// /////////////////////////////// // プロットする各データ系列のラベルを設定します // データ・タイプ // データのセル参照 // コードのフォーマット // 一連のデータポイントの数 // データ値 // データマーカー $dataseriesLabels1 = 配列( new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$3', NULL, 1), ); // X 軸のラベルを設定します // データ・タイプ // データのセル参照 // コードのフォーマット // 一連のデータポイントの数 // データ値 // データマーカー $xAxisTickValues1 = 配列( new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$4:$A$'.$row, NULL, 4), ); // プロットする各データ系列のデータ値を設定します // データ・タイプ // データのセル参照 // コードのフォーマット // 一連のデータポイントの数 // データ値 // データマーカー $dataSeriesValues1 = 配列( new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$B$4:$B$'.$row, NULL, 4), ); // データシリーズを構築する $series1 = 新しい PHPExcel_Chart_DataSeries( PHPExcel_Chart_DataSeries::TYPE_PIECHART, // プロットタイプ PHPExcel_Chart_DataSeries::GROUPING_STANDARD, // プロットグループ化 range(0, count($dataSeriesValues1)-1), // plotOrder $dataseriesLabels1, // プロットラベル $xAxisTickValues1, // プロットカテゴリー $dataSeriesValues1 // プロット値 ); // 円グラフのレイアウト オブジェクトを設定します $layout1 = 新しい PHPExcel_Chart_Layout(); $layout1->setShowVal(TRUE); $layout1->setShowPercent(TRUE); // プロットエリアに系列を設定します $plotarea1 = new PHPExcel_Chart_PlotArea($layout1, array($series1)); // チャートの凡例を設定します $legend1 = 新しい PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false); $title1 = new PHPExcel_Chart_Title('汇总表'); // チャートを作成する $chart1 = 新しい PHPExcel_Chart( 'chart1', // 名前 $title1, // タイトル $legend1, // 凡例 $plotarea1, // プロットエリア true, //plotVisibleOnly 0, // displayBlanksAs NULL, // xAxisLabel NULL // yAxisLabel - 円グラフには Y 軸がありません ); // ワークシート内でグラフを表示する位置を設定します $行 += 2; $chart1->setTopLeftPosition('A'.$row); $row += 10; $chart1->setBottomRightPosition('C'.$row); // グラフをワークシートに追加します $objPHPExcel->getActiveSheet()->addChart($chart1); //////////////////////////////////////////////// /////////////////////////////////////// // アクティブ シート インデックスを最初のシートに設定すると、Excel はこれを最初のシートとして開きます $objPHPExcel->setActiveSheetIndex(0); $filename = '汇总表_'.date("Y_m_d").".xlsx"; // 出力をクライアントの Web ブラウザにリダイレクトします (Excel2007) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); //header('Content-Disposition:attachment;filename="'.$filename.'"'); //devrent.xlsx /////////////////////////////////////// //处理中文文件名乱码问题 $ua = $_SERVER["HTTP_USER_AGENT"]; $encoded_filename = urlencode($filename); $encoded_filename = str_replace("+", "%20",$encoded_filename); header('Content-Type: application/octet-stream'); if (preg_match("/MSIE/", $ua)) { header('Content-Disposition:attachment;filename="' . $encoded_filename . '"'); }else if (preg_match("/Firefox/", $ua)){ header('Content-Disposition:attachment; filename*="utf8''' . $filename . '"'); }それ以外 { header('Content-Disposition:attachment; filename="' . $filename . '"'); } /////////////////////////////////////// header('キャッシュ制御: max-age=0'); // IE 9 にサービスを提供している場合は、次のものが必要になる場合があります header('キャッシュ制御: max-age=1'); // SSL 経由で IE にサービスを提供している場合は、次のものが必要になる場合があります header ('有効期限: 1997 年 7 月 26 日月曜日 05:00:00 GMT'); // 過去の日付 header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // 常に変更される ヘッダー ('キャッシュ制御: キャッシュ、必須再検証'); // HTTP/1.1 ヘッダー ('プラグマ: public'); // HTTP/1.0 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->setIncludeCharts(TRUE); $objWriter->save('php://output'); 出口; さらに注意すべき点は、Excel のグラフは、そのアイコンを指定することによって、対応する単位枠を自動生成し、主にコード内で計算することです。


メール: xcl_168@aliyun.com

ブログ: http://./blog.csdn.ent/xcl168


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/766057.html技術記事 PHPExcel は、Excel ファイルを処理するための非常に強力なツールです。PHPExcel に関連する例があり、それを Excel に変換する必要があります。 .
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート