2012-05-09 59 views
2

我使用Excel Writer of Harish Chauhan來生成excel(xls)文件。使用Excelwriter和phpExcelReader 2無法讀取文件

然後我用phpExcelReader 2讀通過Excel的Writer類中創建的文件,但有此錯誤的所有時間:

The filename myXls.xls is not readable

我可以打開MS Excel中的「myXls.xls」文件。但是如果我用另一個名字保存文件,它可以被成功讀取。

嘗試探索的代碼,它似乎錯誤是由下式給出:

if (substr($this->data, 0, 8) != IDENTIFIER_OLE) { 
    //echo 'Error'; 
    $this->error = 1; 
    return false; 
} 

IDENTIFIER_OLE定義:

define('IDENTIFIER_OLE', pack("CCCCCCCC",0xd0,0xcf,0x11,0xe0,0xa1,0xb1,0x1a,0xe1)); 

我沒有關於如何解決它的任何想法。請幫忙。

謝謝你的時間!

回答

1

由Harish Chauhan的ExcelWriter類生成的文件不是實際的OLE BIFF .xls文件,而是HTML標記和SpreadSheetML中的一些元素的混合,SpreadSheetML是由Microsoft定義的XML格式,用於替代Excel 2003中的BIFF。從未證明特別受歡迎;但MS Excel的更高版本本身仍然可以讀寫這種格式。 MS Excel對讀取HTML標記也非常寬容,儘管最新版本會給你一個通知,告知你文件格式是否與其擴展名不符。

phpExcelReader 2是爲了讀取Excel BIFF文件而編寫的,因此它無法讀取由Harish Chauhan的類生成的非OLE /非BIFF文件。

如果要以正確的格式寫入和讀取文件,那麼我建議您使用PHPExcel或其他許多其他PHP libraries that work with genuine Excel files之一。

+0

謝謝您的回答。 PHPExcel非常適合讀取/寫入excel文件。 –

0

我有同樣的問題。任務是解析非常舊的XLS文件(Excel2)。我無法在PHP中找到任何使用這種舊格式的庫。

因此,解決方案是用將LibreOffice命令行轉換爲XLSX(也適用於CSV),然後使用任何「moderner」Excel分析器對其進行解析。

我們得到了LibreOffice的安裝在我們的服務器,這是命令轉換:

libreoffice --headless --convert-to xlsx original_source.xls 

libreoffice --headless --convert-to csv original_source.xls