2013-10-23 119 views

回答

-2

如果要下載Excel文件,則必須從服務器編寫創建。 您必須向您的服務器發送過濾操作以告訴hime生成該文件。

projet gwt-table-to-excell從Excel中使用黑客可以嘗試讀取HTML表格構建Excel文件。但是這可能不適用於新版本。

0

我發現使用http://en.wikipedia.org/wiki/Data_URI_scheme

我不想回去的服務器,因爲我在客戶端上的一切合適的解決方案!

這允許確實快速下載生成的單元格表。

(它沒有規模超過某個點,但是這是對我的使用情況下可以接受的。下載速度具有優先性。)

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); 
    }-*/; 
} 
0

假設如果你是從2014年1月1日生成報告31/12/2014 您需要通過從客戶端傳遞參數給服務器,如:

   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);