Как я могу экспортировать таблицы в Excel с веб-страницы. Я хочу, чтобы экспорт содержал все форматирование и цвета.
javascript
jquery
export-to-excel
code511788465541441
источник
источник
<td style="background-color: ...
Ответы:
Несомненно, самый чистый и простой экспорт из таблиц в Excel - это плагин Jquery DataTables Table Tools. Вы получаете сетку, которая сортирует, фильтрует, упорядочивает и разбивает ваши данные на страницы, а всего с несколькими дополнительными строками кода и двумя включенными небольшими файлами вы получаете экспорт в Excel, PDF, CSV, в буфер обмена и на принтер.
Это весь код, который требуется:
Таким образом, быстрое развертывание, никаких ограничений браузера, никакого серверного языка не требуется и, самое главное, очень ЛЕГКО для понимания. Это беспроигрышный вариант. Единственное, на что у него есть ограничения, - это строгое форматирование столбцов.
Если форматирование и цвета являются абсолютными препятствиями, единственный 100% надежный кроссбраузерный метод, который я нашел, - это использование серверного языка для обработки правильных файлов Excel из вашего кода. Мое решение - PHPExcel. Это единственное решение, которое я нашел до сих пор, которое положительно обрабатывает экспорт с форматированием в СОВРЕМЕННУЮ версию Excel из любого браузера, когда вы не даете ему ничего, кроме HTML. Однако позвольте мне уточнить, это определенно не так просто, как первое решение, а также требует немного ресурсов. Однако, с другой стороны, он также может выводить прямо в PDF. И, как только вы его настроите, он будет работать каждый раз.
ОБНОВЛЕНИЕ - 15 сентября 2016 г .: Поддержка TableTools прекращена в пользу нового плагина под названием « кнопки ». Эти инструменты выполняют те же функции, что и старое расширение TableTools, но их НАМНОГО проще установить, и они используют загрузки HTML5 для современных браузеров. с возможностью возврата к исходной загрузке Flash для браузеров, не поддерживающих стандарт HTML5. Как видно из множества комментариев с тех пор, как я опубликовал этот ответ в 2011 году, основная слабость TableTools была устранена. Я все еще не могу порекомендовать DataTables достаточно для простой обработки больших объемов данных как для разработчика, так и для пользователя.
источник
Давным-давно я обнаружил, что Excel откроет HTML-файл с таблицей, если мы отправим его с типом содержимого Excel. Рассмотрим документ выше:
Я запустил на нем следующий букмарклет:
и на самом деле я получил его в виде файла Excel. Однако ожидаемого результата я не получил - файл был открыт в OpenOffice.org Writer. Это моя проблема: у меня нет Excel на этом компьютере, поэтому я не могу попробовать его лучше. Кроме того, этот трюк работал более или менее шесть лет назад со старыми браузерами и антикварной версией MS Office, поэтому я действительно не могу сказать, будет ли он работать сегодня.
Во всяком случае, в документе выше я добавил кнопку, которая теоретически загружала бы весь документ в виде файла Excel:
Сохраните его в файл и нажмите на кнопку. Я люблю знать , если он работал или нет, поэтому я прошу Вас прокомментировать даже сказать , что это не работа.
источник
document.getElementById('id').innerHTML
чтобы выборочно захватить только таблицу, в противном случае все ваши данные будут экспортированы в электронную таблицу. Не работает в старом IE, просто открывает новое окно со всем html в заголовкеМожно использовать старый формат XML Excel 2003 (до OpenXML) для создания строки, содержащей желаемый XML, затем на стороне клиента вы можете использовать URI данных для открытия файла с использованием типа XSL mime или отправить файл клиенту с помощью mimetype Excel «Content-Type: application / vnd.ms-excel» со стороны сервера.
После сбора информации создайте последнюю строку и откройте новое окно, используя URI данных.
Стоит отметить, что старые браузеры не поддерживают схему URI данных, поэтому вам может потребоваться создать сторону файлового сервера для тех браузеров, которые ее не поддерживают.
Вам также может потребоваться выполнить кодирование base64 для содержимого URI данных, для чего может потребоваться библиотека js , а также добавить строку '; base64' после типа mime в URI данных.
источник
В Excel есть малоизвестная функция под названием «Веб-запросы», которая позволяет извлекать данные практически с каждой веб-страницы без дополнительного программирования.
Веб-запрос в основном запускает HTTP-запрос непосредственно из Excel и копирует некоторые или все полученные данные (и, при необходимости, форматирование) в рабочий лист.
После того, как вы определили веб-запрос, вы можете обновить его в любое время, даже не выходя из Excel. Таким образом, вам не нужно фактически «экспортировать» данные и сохранять их в файл - вы лучше обновите данные, как из базы данных.
Вы даже можете использовать параметры URL-адреса, если Excel предложит вам определенные критерии фильтрации и т. Д.
Однако минусы, которые я заметил до сих пор:
Вот вопрос о том, как создавать веб-запросы в Excel. Он ссылается на сайт справки Microsoft о том, как получить внешние данные с веб-страницы.
источник
Это php, но вы можете изменить его на javascript:
источник
Во-первых, я бы не рекомендовал пытаться экспортировать Html и надеяться, что пользовательский экземпляр Excel подхватит его. По моему опыту, это решение чревато проблемами, включая несовместимость с клиентами Macintosh и выдачу пользователю ошибки о том, что файл, о котором идет речь, имеет не указанный формат. Самое надежное и удобное решение - это серверное решение, в котором вы используете библиотеку для создания реального файла Excel и отправки его обратно пользователю. Следующим лучшим решением и более универсальным решением будет использование формата Open XML. Я столкнулся с несколькими редкими проблемами совместимости со старыми версиями Excel, но в целом это должно дать вам решение, которое будет работать с любой версией Excel, включая Mac.
Open XML
источник
Mozilla по-прежнему поддерживает базовые 64 URI. Это позволяет динамически составлять двоичный контент с помощью javascript:
если ваш файл excel не очень навороченный (без диаграмм, формул, макросов), вы можете копаться в формате и составлять байты для своего файла, затем кодировать их с помощью base64 и вставлять в href
см. https://developer.mozilla.org/en/data_URIs
источник
На самом деле это проще, чем вы думаете: «просто» скопируйте HTML-таблицу (то есть HTML-код для таблицы) в буфер обмена. Excel умеет декодировать HTML-таблицы; он даже попытается сохранить атрибуты.
Жесткая часть - «скопировать таблицу в буфер обмена», поскольку стандартного способа доступа к буферу обмена из JavaScript не существует. См. Это сообщение в блоге: Доступ к системному буферу обмена с помощью JavaScript - Святой Грааль?
Теперь все, что вам нужно, это таблица в формате HTML. Предлагаю jQuery и метод html () .
источник
Этот код является только IE, поэтому он полезен только в ситуациях, когда вы знаете, что все ваши пользователи будут использовать IE (например, в некоторых корпоративных средах).
источник
Предположения:
данный URL
преобразование должно выполняться на стороне клиента
системы - Windows, Mac и Linux
Решение для Windows:
код python, который открывает окно ie и имеет к нему доступ: переменная url содержит URL-адрес ('http: //')
Примечание: если страница недоступна напрямую, но войдите в систему, вам нужно будет обработать это, введя данные формы и эмулируя действия пользователя с помощью python.
вот пример
таким же образом для получения данных с веб-страницы. Допустим, элемент с идентификатором el1 содержит данные. получить текст элемента в переменную
затем, когда данные находятся в переменной python, вы можете открыть экран Excel аналогичным образом, используя python:
Решение для Mac:
только совет: используйте AppleScript - он имеет простой и похожий на API win32com.client Dispatch
Решение для Linux:
java.awt.Robot может работать для этого, у него есть щелчок, нажатие клавиши (можно использовать горячие клавиши), но ни один API для Linux, о котором я знаю, не может работать так же просто, как AppleScript
источник
простой поиск Google показал это:
если вы не можете этого сделать, он предлагает альтернативный метод «перетаскивания»:
http://www.mrkent.com/tools/converter/
источник
И теперь есть способ получше.
OpenXML SDK для JavaScript.
https://openxmlsdkjs.codeplex.com/
источник
Есть два практических способа сделать это автоматически, в то время как во всех браузерах можно использовать только одно решение. Прежде всего, вы должны использовать спецификацию open xml для создания таблицы Excel. От Microsoft доступны бесплатные плагины, которые делают этот формат доступным и для более старых офисных версий. Открытый xml является стандартом с Office 2007. Два пути очевидны: на стороне сервера или на стороне клиента.
В реализации на стороне клиента используется новый стандарт CSS, который позволяет хранить данные, а не только URL-адрес данных. Это отличный подход, потому что вам не нужен вызов сервера, только данные и некоторый javascript. Убийственный недостаток заключается в том, что Microsoft не поддерживает все его части в текущих выпусках IE (я не знаю о IE9). Microsoft ограничивает данные как изображение, но нам понадобится документ. В firefox работает вполне нормально. Для меня IE был смертельной точкой.
Другой способ - использовать реализацию на стороне сервера. Должно быть много реализаций открытого XML для всех языков. Вам просто нужно схватить один. В большинстве случаев это будет самый простой способ изменить модель просмотра для получения документа, но вы наверняка можете отправить все данные со стороны клиента обратно на сервер и сделать то же самое.
источник
источник