如何在symfony2中使用PHPExcel修改excel文件
在我的项目中,我使用symfony2 PHPExcel包装器 通过上面链接中的示例,我可以创建新的excel文件。但是,此文件根本没有样式或标记。所以我创建了一个excel模板,我想在其中输入一些数据 我知道如何加载excel文件:如何在symfony2中使用PHPExcel修改excel文件,php,symfony,phpexcel,Php,Symfony,Phpexcel,在我的项目中,我使用symfony2 PHPExcel包装器 通过上面链接中的示例,我可以创建新的excel文件。但是,此文件根本没有样式或标记。所以我创建了一个excel模板,我想在其中输入一些数据 我知道如何加载excel文件: $excelObj = $this->get('xls.load_xls2007') ->load($this->get('kernel') ->getRootDir() .
$excelObj = $this->get('xls.load_xls2007')
->load($this->get('kernel')
->getRootDir() . '/../web/excel-template.xlsx');
//custom modifications on excel file
现在我需要创建一个响应。但是在ExcelBundle的文档中没有关于如何做到这一点的信息。它们只是显示了响应如何为由代码创建的excel文件工作
我试过:
$excelService->setExcelObj($excelObj);
$response = $excelService->getResponse();
//the rest is equal to the code in the doc
但它给了我一个空白的excel文档
您知道如何使用加载的excel文件进行响应吗?我会将文件保存到磁盘,并将用户重定向到磁盘版本。这将允许一些事情
- 从性能和内存使用的角度来看,web服务器提供文件而不是PHP是一件好事
- 稍微解耦您的体系结构,以允许将来的更改,例如将Excel文件的创建和加载移动到异步操作
- 使用的能力(还有一个Apache模块)
- 用户可以重新下载文件或暂停并继续下载,而无需重新创建
- 创建文件后,将其保存到可通过web访问的临时目录
- 将用户重定向到该文件位置
- 创建一个cron或其他作业,删除temp目录中较旧的文件
tempfileapi(http://us2.php.net/tmpfile)这里可能有用。您可以通过
// Read the file
$objReader = PHPExcel_IOFactory::createReader($fileType);
$objPHPExcel = $objReader->load($fileName);
// Change the file
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B1', 'World!');
// Write the file
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $fileType);
$objWriter->save($fileName);
如果您不理解,请发表评论。PHPExcelbundle的新版本2.*可以帮助您 现在可以:
//read
$phpExcelObject = $this->get('phpexcel')->createPHPExcelObject('file.xls');
$phpExcelObject->setActiveSheetIndex(0)
->setCellValue( 'C6', 'some text' )
->setCellValue( 'D6', 'some text2' );
$writer = $this->get('phpexcel')->createWriter($phpExcelObject, 'Excel5');
$writer->save('file.xls');
// or
$response = $this->get('phpexcel')->createStreamedResponse($writer);
我不知道这怎么能解决我的问题。我只想知道保存和响应xml文件的代码行