2009-12-07 77 views
3

編輯時會丟失格式現在我正在玩PHP - MS Excel集成。我的任務 將打開一個現有的電子表格,添加一些數據並將填充的電子表格保存爲新文件。儘管xlsx文件被用作模板,但基本上都是模板填充引擎。PHPExcel - 從代碼

我看着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

哼,你正在創建一個新的工作表,至極沒有格式作爲默認值。我認爲你必須將你的價值添加到現有的工作表中?

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

嗨,thx回覆!基本上問題是,現有頁面的格式已丟失。我的數據插入工作正常。 – KB22 2009-12-07 13:23:49

+0

是的,因爲您創建了一個新的工作表,我認爲您必須使用現有的工作表來添加您的值? – opHASnoNAME 2009-12-07 13:27:45

6

格式是因爲該行的丟失 $ objReader-> setReadDataOnly(真); 它告訴讀者只讀來自模板工作簿的數據,而不是格式。

您還需要修改現有工作表中的數據。創建一個新的工作表將創建一個無格式的工作表。或者,您可以使用PHPExcel_WorkSheet copy()方法