4

这些天我正在玩 PHP - MS Excel 集成。我的任务是打开一个现有的电子表格,添加一些数据并将填充的电子表格保存为一个新文件。基本上是一种模板填充引擎,尽管 xlsx 文件被用作模板。

我研究了PHPExcel,这似乎是一个相当不错的框架。为了实现概念证明,我做了以下事情(减少到说明我需要做什么的最低要求):

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load("myTemplateToFill.xlsx");

    //Here comes the actual filling
$objWorksheet = $objPHPExcel->createSheet();
$objWorksheet->setTitle('Apple')    ;
$objWorksheet->setCellValue('A1', 'Banana');    
$objPHPExcel->setActiveSheetIndex(0);

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('myFilledTemplate.xlsx');

运行这个我发现创建了一个新文件,我的 daat 被插入,但遗憾的是所有现有格式都丢失了。

所以问题是,有没有办法让 PHPExcel 将这些格式保留在新文件中?或者更进一步:是否可以将图表等保存在模板文件中并按照我尝试的方式填写?

提前感谢您分享的所有经验!

ķ

4

2 回答 2

7

由于这行 $objReader->setReadDataOnly(true); 导致格式丢失 它告诉读者读取模板工作簿中的数据,而不是格式。

您还需要修改现有工作表中的数据。创建新工作表将创建一个未格式化的工作表。或者,您可以使用 PHPExcel_WorkSheet copy() 方法

于 2010-04-26T19:03:50.983 回答
3

嗯,你正在创建一个新的工作表,默认没有格式。我认为您必须将值添加到现有工作表中?

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');
于 2009-12-07T13:16:46.787 回答