Экспортируйте таблицу HTML в Excel - используя jQuery или Java - PullRequest
9 голосов
/ 08 июля 2010

На моей странице JSP есть HTML-таблица, которую я хочу экспортировать в Excel одним нажатием кнопки.

Как лучше всего это сделать?

(Например, как бы я мог сделать это, используя функцию jQuery?)

Любые примеры кода для демонстрационных целей должны быть хорошими.

Ответы [ 9 ]

6 голосов
/ 08 июля 2010

Я бы порекомендовал Apache POI , мы использовали его годами, проблем не было.

Множество примеров в Интернете, чтобы получить хорошее начало, и документация на сайте также хороша: http://poi.apache.org/spreadsheet/quick-guide.html

4 голосов
/ 08 июля 2010

Скорее экспорт в CSV формат. Он также поддерживается Excel. Экспорт в полноценный формат XLS (X) с использованием, например, Apache POI HSSF или JExcepAPI выполняется медленно и занимает много памяти.

Экспорт в CSV относительно прост. Вы можете найти полный пример кода в этом ответе .


Что касается экспорта в файлы с использованием JavaScript, это невозможно без взаимодействия с Flash или на стороне сервера. Во Flash есть только библиотека Downloadify , которая может экспортировать в простые текстовые файлы. Кроме того, у ExtJs, похоже, есть библиотека экспорта CSV , но я не могу найти какую-либо подходящую демонстрационную страницу.

3 голосов
/ 09 июля 2010

Вы можете анализировать таблицу с помощью библиотеки, например http://jsoup.org/

После получения данных вы можете сохранить их в формате, совместимом с Excel (CSV), или использовать библиотеку Java Excel для таких объектов, как POI, или использовать JDBC для записи данных в лист Excel, см. Этот пример: Файл Excel, защищенный паролем

1 голос
/ 06 мая 2014

Я также трачу много времени на преобразование html в excel после того, как много исследований и разработок я нашел следующим простым способом.

  1. создайте скрытое поле и передайте ваши html данные вашемусервлет или контроллер, например,

    <form id="formexcel" action="" method="post" name="formexcel">
        <input type="hidden" name="exceldata" id="exceldata" value="" />
    </form>
    
  2. на вашей кнопке href, нажмите кнопку вызова функции и передайте свои html-данные, используя в документе..formstyle.action

    function exportDivToExcel() {
        document.formexcel.exceldata.value=$('#htmlbody').html();
        $("#lblReportForPrint").html("Procurement operation review report");
        document.formstyle.method='POST';
        document.formstyle.action='${pageContext.servletContext.contextPath}/generateexcel';
        document.formstyle.submit();
    }
    
  3. Теперь в вашем контроллере или сервлете напишите следующий код

    StringBuilder exceldata = new StringBuilder();
    exceldata.append(request.getParameter("exceldata"));
    ServletOutputStream outputStream = response.getOutputStream();
    response.setContentType("application/vnd.ms-excel");
    response.setCharacterEncoding("UTF-8");
    response.setHeader("Content-Disposition", "attachment;filename=\"exportexcel.xls\"");
    outputStream.write(exceldata.toString().getBytes());
    
1 голос
/ 08 июля 2010

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

Я не знаю достаточно о том, как может обрабатываться jQuery.помещая информацию в файл, который вы хотите загрузить, но, похоже, была написана библиотека jQuery, по крайней мере, преобразующая HTML-таблицы в формат CSV, и она находится здесь: http://www.kunalbabre.com/projects/table2CSV.php

Редактировать (29 февраля, 2016): Вы можете использовать приведенную выше реализацию table2csv в сочетании с FileSaver.js (который является оболочкой для спецификации HTML5 W3C saveAs()).

Использование будетв конечном итоге выглядит примерно так:

var resultFromTable2CSV = $('#table-id').table2CSV({delivery:'value'});

var blob = new Blob([resultFromTable2CSV], {type: "text/csv;charset=utf-8"});

saveAs(blob, 'desiredFileName.csv');
0 голосов
/ 01 мая 2015

Я использую плагин jQuery table2excel .Он работает очень хорошо и серверное кодирование не требуется.

Использовать его легко.Просто включите jQuery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

Теперь включите скрипт table2excel (не забудьте изменить назначение src, чтобы оно соответствовало вашему)

<script src="dist/jquery.table2excel.min.js"></script>

Теперь просто вызовите скрипт в таблице, которую вы хотите экспортировать.

$("#yourHtmTable").table2excel({
    exclude: ".excludeThisClass",
    name: "Worksheet Name",
    filename: "SomeFile" //do not include extension
});

Также легко прикрепить к кнопке, например так:

$("button").click(function(){
    $("#table2excel").table2excel({
    // exclude CSS class
    exclude: ".noExl",
    name: "Excel Document Name"
    }); 
});

Все примеры взяты непосредственно со страницы авторов github и jqueryscript.net

0 голосов
/ 15 апреля 2011

Я могу предложить вам попробовать http://code.google.com/p/gwt-table-to-excel/, хотя бы серверную часть.

0 голосов
/ 08 июля 2010

Вам потребуется создать что-то на стороне сервера (например, сервлет), чтобы прочитать html, создать файл excel и передать его обратно пользователю.

Вы можете использовать эту библиотеку , чтобы помочь вам выполнить преобразование.

0 голосов
/ 08 июля 2010

Экспорт в формат файла Excel с помощью JQuery невозможен.

Вы можете попробовать с Java. Для этого есть много библиотек.

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