Преобразование таблицы в Excel из JavaScript - PullRequest
0 голосов
/ 26 июля 2010

Мне нужно экспортировать данные сетки EditorGridPanel, чтобы добиться превосходства без отправки каких-либо данных на серверное, кросс-браузерное и кроссплатформенное решение, которое будет работать в ie6 и ie7. Любое решение на чистом JavaScript тоже хорошо!
До сих пор я нашел только решение URI для данных, которое отлично, но поддерживает его только с 8-й версии. Также есть возможность экспортировать через компонент ActiveX, но это не то, что я хочу, так как это делает мое приложение зависимым от Windows и MSOffice.

Можете ли вы порекомендовать мне какое-нибудь решение?

Ответы [ 4 ]

1 голос
/ 26 июля 2010

Ну, после долгих размышлений я понял, что этот вопрос глуп, потому что из-за политики песочницы js нет возможности экспортировать его напрямую из js.Как я уже говорил ранее, я нашел несколько частичных способов сделать это: экспорт ActiveX и схема URI данных

1 голос
/ 04 января 2011

Вот решение с вызовом на стороне сервера, но без записи кода на стороне сервера.

http://code.google.com/p/gwt-table-to-excel/

1 голос
/ 26 июля 2010

Вы можете экспортировать в CSV, а затем импортировать этот файл в Excel, Open Office или Numbers?

0 голосов
/ 08 апреля 2014

Класс ниже делает это без серверной стороны.

public class TableToExcel {
    public static final <T> void save(final CellTable<T> table, String filename) {
        final AnchorElement a = Document.get().createAnchorElement();
        a.setHref("data:application/vnd.ms-excel;base64," + base64(table.getElement().getString()));
        a.setPropertyString("download", (filename.endsWith(".xls") || filename.endsWith(".xlsx")) ? filename : filename + ".xls");

        Document.get().getBody().appendChild(a);
        Scheduler.get().scheduleEntry(new ScheduledCommand() {
            @Override
            public void execute() {
                click(a);
                a.removeFromParent();
            }
        });
    }

    private static native void click(Element elem) /*-{
        elem.click();
    }-*/;

    public static native String base64(String data) /*-{
        return btoa(data);
    }-*/;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...