自分のテンプレートファイルでphpexcelを使おうとしました。phpexcelはファイルをロードし、たとえばセルA2、A3、A4にデータを書き込み、新しいデータを含む出力ファイルを開きます。
テンプレートファイルにはグラフが組み込まれています。phpexcelで実行したいのは、セルに値を入力することだけで、グラフには触れないでください。そして、新しいファイルを開きます。(チャートをコードで作成したくないことに注意してください。チャートは、最初に作成したのと同じ形式でテンプレートにすでに存在している必要があります)。データのみを更新する必要があります。
しかし、これを行おうとすると、グラフ自体が結果のファイルから失われます。さまざまな方法を試した後、まだ失敗しました。
そして、私はhttp://phpexcel.codeplex.com/discussions/397263から次のコードを見つけました
require_once 'Classes/PHPExcel.php';
/** PHPExcel_IOFactory */
include 'Classes/PHPExcel/IOFactory.php';
$target ='Results/';
$fileType = 'Excel2007';
$InputFileName = $target.'Result.xlsx';
$OutputFileName = $target . '_Result.xlsx';
//Read the file (including chart template)
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objReader->setIncludeCharts(TRUE);
$objPHPExcel = $objReader->load($InputFileName);
//Change the file
$objPHPExcel->setActiveSheetIndex(0)
// Add data
->setCellValue('C3','10' )
->setCellValue('C4','20' )
->setCellValue('C5','30')
->setCellValue('C5','40' );
//Write the file (including chart)
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->setIncludeCharts(TRUE);
$objWriter->save($OutputFileName);
上記のコードはExcel2010で機能し、グラフをそのまま維持します...しかし、ファイルタイプ「Excel5」を使用しようとすると機能しません。
次のエラーがスローされます。
Fatal error: Call to undefined method PHPExcel_Reader_Excel5::setIncludeCharts()
in D:\IT\bfstools\PHPExcel\MyExamples\test1.php on line 16
テンプレートファイルを.xlsおよび.xlsxで機能させ、テンプレートファイル内の元のグラフをすべてそのままにしておく必要がある簡単なソリューションを提供してください。結果のファイルからチャートを削除したくありません。phpexcelコードを使用してグラフを作成する予定もありません。(Excelがすべての作業を実行できるのに、なぜ不要なコードを書くのか)。
テンプレート内のすべてを使用し、セルに新しいデータを入力するだけの最も簡単な方法が必要です。また、テンプレート内の既存のグラフは自動的に公開されます。エクセルのテンプレートとチャート関数に安全に頼ることができる間、私は不必要なコードを書きたくありません。
助けてください。