我正在尝试使用PHPExcel生成带有基于非编码器创建和格式化的“模板”的图表的电子表格,但是我的代码注入了图表的数据。我创建了一个“模板”电子表格,其中包含一个查看相应数据范围的图表,所以我想读取它,设置单元格值(这是图表的数据范围),然后再将其写出来。 / p>
在PHPExcel生成的输出中,数据的注入已经起作用,但缺少图表。它是Excel2007(不是猜测,我正在识别它)而且我在读者和作者身上都做了一个setIncludeCharts(true)。
有什么想法吗? (除了让PHPExcel创建图表。我不能真的这样做,因为我需要非程序员能够创建模板,我的代码只是将数据放入基于它们提供数据插入应该开始的单元格引用)
非常感谢
代码(除了输出中的图表之外的其他功能):
// Identify the filetype (it returns 'Excel2007')
$filetype = PHPExcel_IOFactory::identify("template.xlsx");
// Create the reader and load the file
$objReader = PHPExcel_IOFactory::createReader($filetype);
$objReader->setIncludeCharts(true);
$objPHPExcel = $objReader->load("template.xlsx");
// Inject the data
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('A3', 'Category 1');
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('B3', '10');
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('A4', 'Category 2');
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('B4', '20');
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('A5', 'Category 3');
$objPHPExcel->setActiveSheetIndex(1)->setCellValue('B5', '30');
// Output headers
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . time() . '.xlsx"');
header('Cache-Control: max-age=0');
// Prepare PCLZIP
define( 'PCLZIP_TEMPORARY_DIR', '/tmp/' );
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
// Create writer and spit file out to browser
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $filetype);
$objWriter->setIncludeCharts(true);
$objWriter->save('php://output');