【问题标题】:PHPExcel - Formatting gets lost when editing from codePHPExcel - 从代码编辑时格式丢失
【发布时间】:2009-12-07 12:04:58
【问题描述】:

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

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

K

【问题讨论】:

    标签: php phpexcel


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您好,感谢您的回复!基本上问题是,现有页面的格式丢失了。我的数据插入工作正常。
      • 是的,因为您创建了一个新的工作表,我认为您必须使用现有的工作表来添加您的值?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 2014-10-11
      • 1970-01-01
      相关资源
      最近更新 更多