这些天我正在玩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');
Run Code Online (Sandbox Code Playgroud)
运行这个我发现创建了一个新文件,插入了我的daat,但遗憾的是所有现有的格式都丢失了.
所以问题是,有没有办法让PHPExcel在新文件中保留这些格式?或者更进一步:是否可以将图表等保存在模板文件中并按照我尝试的方式填写?
提前感谢您分享的所有经验!
ķ
由于此行$ objReader-> setReadDataOnly(true),格式化将丢失; 它告诉读者只读取模板工作簿中的数据,而不是格式化.
您还需要修改现有工作表中的数据.创建新工作表将创建未格式化的工作表.或者,您可以使用PHPExcel_WorkSheet copy()方法
嗯,您正在创建一个新的工作表,默认情况下没有格式。我认为您必须将您的值添加到现有工作表中?
$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');
Run Code Online (Sandbox Code Playgroud)