Tag: phpexcel

PHPExcel: Delete sheets

Posted by – June 6, 2014

PHPExcel 是 PHP 所有第三方套件裡,功能相當強大的一款,主要用途是用來讀寫 Excel (.xls)、Excel 2007 (.xlsx)、Libre/OpenOffice Calc (.ods)、CSV 等等各種試算表文件。

儘管是個強大的套件,個人倒是覺得這套件的語法相當複雜、不夠直覺,文件也不是非常容易閱讀,往往還是去找 stack overflow 的範例更快。

最近在幫客戶開發報表的功能,匯出 Excel 試算表是常見的作法。寫著寫著,突然想到每次產生只有一個 sheet 的試算表,都會被自動再加一張空白的 sheet ... 就像下圖這般。

excel_with_empty_sheet

然後就.... 很想刪掉它 XD

在 stackoverflow 沒看到討論,倒是官方論壇有討論到,用法難得的直覺 (?)。

$objPHPExcel->removeSheetByIndex(1);

參數是第幾個 sheet,從 0 開始,所以要刪除 [Worksheet 1],就代入參數 1 醬。

Formula Error in PHPExcel

Posted by – June 7, 2013

最近在幫客戶開發報表功能,其中一個小功能是將查詢結果匯出成 Excel 檔案,對於會計人員來說相當依賴 Excel。

如果沒有什麼特別的需求,通常會用 PHPExcel 來製作檔案。

一個典型的儲存格設定如下:

$objPHPExcel->setActiveSheetIndex(0)
              ->setCellValue('B6', $order['order_no']);

就在這個匯出功能即將完成時,發現有一個欄位只要一存入內容,PHPExcel 就會出現 Formula Error。

回頭去看資料庫,發現是 VCHAR 欄位,那寫入應該沒啥問題啊。再看看資料內容...

看了兩眼才注意到這個純文字欄位有幾格是 = (等號) 開頭... bingo!

PHPExcel 在指值的時候,碰到等號會轉換成公式,自然就爆掉了。解決方法是把 setCellValue() 換成 setCellValueExplicit(),這樣就不會被轉換了。

收工!