Преобразование обычного текстового файла HTML в двоичный файл Excel 97-2003 - PullRequest
1 голос
/ 21 февраля 2012

У меня есть файл «Excel» (с расширением .xls), который оказывается простым HTML-файлом, маскирующимся под электронную таблицу (если я запускаю «file [filename]», я получаю «HTML-текст документа» в качестве тип). Файл поступил от стороннего поставщика, и я не могу контролировать формат.

Я хочу преобразовать файл в формат Excel 97-2003, чтобы я мог прочитать его в библиотеке PHP (PHPExcel). Я могу сделать это, открыв файл в Excel, проигнорировав предупреждающее сообщение, а затем явно сохранив его как Excel 97-2003, но я хочу автоматизировать весь процесс от исходного файла до извлечения данных ячейки и выгрузки его в базы данных.

В идеале я хотел бы использовать библиотеку PHP для преобразования, потому что она лучше интегрировалась бы с остальной частью кодовой базы, но библиотеки, написанные на Perl, Java или (в крайнем случае) C #, также работали бы, если бы они не не полагайтесь на сервер под управлением Windows и Office.

Существует ли какой-либо инструмент или библиотека, которая может предоставить эту функцию?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

PhpExcel http://phpexcel.codeplex.com/ вполне приличный, но у вас возникнут проблемы с его поглощением памяти большими листами. Для больших листов или скорости я бы порекомендовал perl writeExcel http://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.37/lib/Spreadsheet/WriteExcel.pm

Библиотека perl writeExcel работает быстрее и использует меньше памяти, чем PhpExcel. Я тогда использую

<?php
    echo passthru('perl filename.pl');
?>

для запуска сценария perl через PHP.

0 голосов
/ 23 февраля 2012

Похоже, на данный момент единственный ответ - вручную обработать файл, открыв его в Excel и повторно сохранив его, что работает, но не позволяет полностью автоматизировать.

Я посмотрю на новую версию PHPExcel с поддержкой HTML, как только она будет выпущена, хотя это звучит многообещающе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...