Каков наилучший способ конвертировать HTML в Excel? - PullRequest
3 голосов
/ 10 июня 2009

У меня есть HTML-страница с флеш-диаграммой (FusionCharts) и HTML-таблицей. Мне нужно конвертировать все это в Excel. HTML-таблица должна отображаться в ячейках таблицы Excel. Флэш-диаграмма может отображаться в виде изображения.

Существует ли какой-либо API с открытым исходным кодом, который мы могли бы использовать для достижения этой цели. Не могли бы вы дать мне знать, каковы возможные варианты.

Можно ли это сделать, используя только javascript.

Ответы [ 7 ]

5 голосов
/ 10 июня 2009

Таблица HTML относительно проста. Вы можете загрузить страницу, проанализировать HTML (есть различные библиотеки для разбора HTML), извлечь таблицу и преобразовать ее в CSV (который может загружать Excel) или непосредственно создать файл Excel, например используя Java POI, как предложено выше.

Часть Flash значительно сложнее. Существует множество инструментов для захвата изображения в формате Flash, вам нужно использовать один из них. Это может быть сложно, так как Flash может быть интерактивным, поэтому вам, возможно, придется дистанционно управлять Flash-частью, чтобы она показывала правильное изображение перед захватом. Трудно сказать без дополнительной информации.

Тем не менее, очистка экрана (что вы и делаете) всегда трудоемка и хрупка. Вы действительно должны стремиться к лучшему интерфейсу для получения ваших данных, это сэкономит массу хлопот в долгосрочной перспективе.

4 голосов
/ 10 июня 2009

Просто установите тип содержимого страницы "application / vnd.ms-excel". Если html-страница - это просто таблица, она откроется в Excel и будет выглядеть идеально Вы даже можете добавить цвета фона и стили шрифта.

Попробуйте некоторые из этих типов контента

application/excel
application/vnd.ms-excel
application/x-excel
application/x-msexcel
3 голосов
/ 10 июня 2009

Excel может конвертировать таблицы HTML по умолчанию. Самый простой способ заставить это сделать - сохранить файл HTML с расширением XLS. Затем Excel откроет XLS, как если бы это была его собственная рабочая книга.

2 голосов
/ 10 июня 2009

Я не могу дать никаких советов по части Flash, но я много раз создавал таблицы HTML в Excel. Да, Excel может открывать таблицы HTML, но большинство таблиц HTML содержат в себе постороннюю чушь, которая может сделать его хрупким для последовательного анализа таблиц.

CPAN-модуль HTML :: TableExtract - замечательный модуль, позволяющий вам сосредоточиться на аспектах таблицы, которые вы пытаетесь извлечь, не связанных с презентацией. Просто укажите интересующие вас заголовки столбцов и, возможно, укажите заголовок или класс таблицы, и вы в основном настроены. Возможно, вам придется немного позже обработать возвращаемые строки, но это значительно проще, чем иметь дело с базовым супом тега во всей его красе.

Кроме того, для вывода в формат Excel используйте Spreadsheet :: WriteExcel вместо интерфейса OLE. Таким образом, вы не зависите от того, установлен ли Excel для вашей программы, и дела идут немного быстрее.

Убедитесь, что вы указали тип данных ячеек, если не хотите, чтобы содержимое автоматически изменялось Excel при открытии файлов (еще одна причина, по которой я не люблю отправлять файлы CSV). Используйте файл конфигурации для форматирования информации, чтобы вы могли изменить внешний вид электронной таблицы без необходимости изменения программы.

Вы всегда можете использовать встроенные в Excel средства построения диаграмм для замены графиков веб-сайтов.

Эта комбинация позволила мне создать довольно красивые документы, содержащие несколько сотен мегабайт очищенных данных (с логотипами, ссылками на изображения и т. Д.), Используя всего несколько сотен строк Perl и пару дней работы.

2 голосов
/ 10 июня 2009

Есть очень хороший Java POI API, который позволит вам это сделать, но это Java. http://poi.apache.org/

Если вы работаете в Win32, вы также можете использовать COM API в Excel, в сети есть немало учебников.

1 голос
/ 10 июня 2009

Я добавлю к ответу SpliFF, что, когда у вас есть данные в виде файла CSV, вы можете установить тип mime страницы: application / vnd.ms-excel, который откроет страницу в Excel

1 голос
/ 10 июня 2009

То, что вы пытаетесь сделать, хрупко и сложно поддерживать. Вы должны попытаться создать канал CSV для получения данных. Все, что нужно, это чтобы кто-то пришел и изменил HTML, и ваш скребок его бросит (вероятно, спустя годы после того, как кто-нибудь вспомнит, как работает ваша программа).

Попробуйте получить данные CSV и изображения из исходного источника (т. Е. Базы данных или чего-либо еще) и создать файл Excel из этого.

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