PHPExcel - 从代码编辑时格式化丢失

时间:2009-12-07 12:04:59

标签: php phpexcel

我现在正在玩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在新版本中保留这些格式 文件?或者更进一步:是否可以将图表等保存在模板文件中 并按照我尝试的方式填写?

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

ķ

2 个答案:

答案 0 :(得分:7)

由于此行,格式化将丢失 $ objReader-> setReadDataOnly(真); 它告诉读者只读 模板工作簿中的数据,而不是格式化。

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

答案 1 :(得分:3)

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

$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');