2016-06-17 117 views
0

我需要打開一個現有的xlsx文件,其中包含文本框(使用預定義選項(如圓圈,正方形等)創建的文件),並且需要在這些對象後面寫入(它們是透明的)。PHPExcel丟失文本框

下面的代碼可以做到一切正常,除非下載沒有框的新文件。

if(file_exists("app/file.xlsx")){ 

     $objTpl = PHPExcel_IOFactory::load("app/file.xlsx"); 
     $objTpl->setActiveSheetIndex(1); 

     $objTpl->getActiveSheet()->setCellValue('A1', 'x'); 
     $objTpl->getActiveSheet()->setCellValue('A2', 'y'); 
     $objTpl->getActiveSheet()->setCellValue('A3', 'z'); 

     $filename = 'new_file.xlsx'; 
     header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
     header('Content-Disposition: attachment;filename="'.$filename.'"'); 
     header('Cache-Control: max-age=0'); 

     $objWriter = PHPExcel_IOFactory::createWriter($objTpl, 'Excel2007'); 
     ob_end_clean(); 
     $ret = $objWriter->save('php://output'); 

     exit; 
    } 
+0

然後,您需要爲PHPExcel Excel2007讀取器編寫一些代碼來解析和解釋它們,用於維護它們的核心PHPExcel對象以及PHPExcel Excel2007 Writer來編寫它們;因爲他們不支持圖書館 –

+0

真的嗎?那麼..讓我們嘗試另一種策略。謝謝! –

+0

真的!您可能會看到COM(需要安裝MS Excel的Windows服務器)或PUNO(需要安裝Open/LibreOffice的服務器)或libXl –

回答

0

你或許可以通過COM DOTNET PHP模塊

只需打開XLSX文件做到這一點:

$excel = new COM("Excel.Application") or die ("Could not initialise Object."); 
      $excel->Visible  = 1; 
      $excel->DisplayAlerts = 0; 
      $Workbook = $excel->Workbooks->Open($file) or die("ERROR: Unable to open " . $file . "!\r\n"); 
      $Worksheet = $Workbook->ActiveSheet; 

,並從現在起改變你的文件,然後使用另存爲功能。其全部+ - 在微軟的開發人員文檔中詳細記錄: https://msdn.microsoft.com/EN-US/library/office/ff198122.aspx