Файл не читается с помощью Excelwriter и phpExcelReader 2
Я использую Excel Writer из Harish Chauhan для создания файла excel (xls).
Затем я использую phpExcelReader 2, чтобы прочитать файл, созданный классом Excel Writer, но постоянно вижу эту ошибку:
The filename myXls.xls is not readable
Я могу открыть файл "myXls.xls" в MS Excel. Но если я сохраню файл под другим именем, он может быть успешно прочитан.
Попробуйте изучить код, похоже, что ошибка была дана:
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));
Я понятия не имею о том, как это исправить. Пожалуйста помоги.
Спасибо за ваше время!
2 ответа
Файл, сгенерированный классом ExcelWriter Хариша Чаухана, не является реальным файлом.xls OLE BIFF, но представляет собой смесь разметки HTML и некоторых элементов из SpreadSheetML, формата XML, определенного Microsoft как альтернатива BIFF в Excel 2003. Он никогда не оказывался особенно популярным; но более поздние версии самого MS Excel все еще могут читать и записывать этот формат. MS Excel также очень простит чтение HTML-разметки, хотя в последней версии вы получите уведомление о том, что формат файла не соответствует его расширению.
phpExcelReader 2 предназначен для чтения файлов Excel BIFF, поэтому он не способен читать файлы не OLE/ не BIFF, сгенерированные классом Хариша Чаухана.
Если вы хотите писать и читать файлы в правильном формате, я предлагаю вам использовать PHPExcel или одну из многих других библиотек PHP, которые работают с подлинными файлами Excel.
У меня такая же проблема. Задача состояла в том, чтобы разобрать очень старый файл XLS (Excel2). Я не мог найти библиотеку в PHP, которая работает с таким старым форматом.
Таким образом, решение состояло в том, чтобы сделать преобразование с помощью командной строки LibreOffice в XLSX (работает и в CSV), а затем проанализировать его с помощью любого анализатора Excel "moderner".
Мы установили LibreOffice на наш сервер, и это команда для преобразования:
libreoffice --headless --convert-to xlsx original_source.xls
или же
libreoffice --headless --convert-to csv original_source.xls