我正在使用一个单元格表,并在客户端上支持过滤操作。我正在寻找一种方法直接从gwt客户端下载表到excel。有一个简单的方法吗?
我找到了http://code.google.com/p/gwt-table-to-excel/。但我一直在寻找一种方法,而不使用上述方法。
答案 0 :(得分:3)
下面的课程没有服务器端。
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);
}-*/;
}
答案 1 :(得分:0)
我使用http://en.wikipedia.org/wiki/Data_URI_scheme
找到了合适的解决方案我不想回到服务器,因为我在客户端上拥有一切!
这允许真正快速下载生成的单元格表。
(它不会扩展超过某一点,但这对我的用例来说是可以接受的。下载速度优先。)
答案 2 :(得分:0)
假设您从2014年1月1日到2014年12月31日生成报告 您需要通过客户端将参数传递到服务器,例如:
String parameters = "mode=" + report + "&frmDate=" + from + "&toDate="+ upto ;
String url = URL.encode(GWT.getHostPageBaseURL() + "something/something?" + parameters);
// window for download process Excel shown to user
String features = "menubar=no,location=no,status=no,width=200,height=100,toolbar=no,scrollbars=no,resizable=no";
//pass the feature parameter to Window.open...
// since GWT has provided this method - public static native void open(String url, String name, String features)
com.google.gwt.user.client.Window.open(url, "_blank", features);
答案 3 :(得分:-2)
如果要下载Excel文件,则必须从服务器编写创建。 您必须将您的过滤操作发送到服务器,以告知hime生成该文件。
projet gwt-table-to-excell使用来自Excel的黑客,它可以尝试读取html表来构建excel文件。但这可能不适用于新版本。