刚做的用GWT调用本地js导出excel , 导出的excel有点难看, 但总比没有导出功能好!
第一步: 编写本地js放到public/js/file/FileExport.js目录下:
-
- function ExportToExcel(element)
- {
- var oXL = new ActiveXObject("Excel.Application");
- var oWB = oXL.Workbooks.Add();
- var oSheet = oWB.ActiveSheet;
- var sel=document.body.createTextRange();
- sel.moveToElementText(element);
- sel.select();
- sel.execCommand("Copy");
- oSheet.Paste();
- oXL.Visible = true;
- }
-
- function ExportToWord(element)
- {
- var oWD = new ActiveXObject("Word.Application");
- var oDC = oWD.Documents.Add("",0,1);
- var oRange =oDC.Range(0,1);
- var sel = document.body.createTextRange();
- sel.moveToElementText(element);
- sel.select();
- sel.execCommand("Copy");
- oRange.Paste();
- oWD.Application.Visible = true;
- }
第二步: 编写JSNI实现类来调用js
- package com.gogocode.bi.client;
- import com.google.gwt.user.client.Element;
- public class FileExport {
- public static native void ExportToExcel(Element element)
- ;
-
- public static native void ExportToWord(Element element)
- ;
- }
第三步: 在程序中调用JSNI实现类
- package com.gogocode.bi.client;
- import com.google.gwt.core.client.EntryPoint;
- import com.google.gwt.user.client.DOM;
- import com.google.gwt.user.client.ui.RootPanel;
- import com.gwtext.client.core.EventObject;
- import com.gwtext.client.data.ArrayReader;
- import com.gwtext.client.data.DateFieldDef;
- import com.gwtext.client.data.FieldDef;
- import com.gwtext.client.data.FloatFieldDef;
- import com.gwtext.client.data.MemoryProxy;
- import com.gwtext.client.data.RecordDef;
- import com.gwtext.client.data.Store;
- import com.gwtext.client.data.StringFieldDef;
- import com.gwtext.client.widgets.Button;
- import com.gwtext.client.widgets.Panel;
- import com.gwtext.client.widgets.Toolbar;
- import com.gwtext.client.widgets.ToolbarButton;
- import com.gwtext.client.widgets.event.ButtonListenerAdapter;
- import com.gwtext.client.widgets.grid.ColumnConfig;
- import com.gwtext.client.widgets.grid.ColumnModel;
- import com.gwtext.client.widgets.grid.GridPanel;
- public class BI_Enter implements EntryPoint {
- public void onModuleLoad() {
- Panel panel = new Panel();
- panel.setBorder(false);
- panel.setPaddings(15);
-
- RecordDef recordDef = new RecordDef(
- new FieldDef[]{
- new StringFieldDef("company"),
- new FloatFieldDef("price"),
- new FloatFieldDef("change"),
- new FloatFieldDef("pctChange"),
- new DateFieldDef("lastChanged", "n/j h:ia"),
- new StringFieldDef("symbol"),
- new StringFieldDef("industry")
- }
- );
-
- final GridPanel grid = new GridPanel();
- grid.setId("grid");
-
- Object[][] data = getCompanyData();
- MemoryProxy proxy = new MemoryProxy(data);
-
- ArrayReader reader = new ArrayReader(recordDef);
- Store store = new Store(proxy, reader);
- store.load();
- grid.setStore(store);
-
-
- ColumnConfig[] columns = new ColumnConfig[]{
- new ColumnConfig("股票", "company", 130, true, null, "company"),
- new ColumnConfig("价格", "price", 35),
- new ColumnConfig("涨跌", "change", 45),
- new ColumnConfig("涨幅", "pctChange", 65),
- new ColumnConfig("最后更新时间", "lastChanged", 100)
- };
-
- ColumnModel columnModel = new ColumnModel(columns);
- grid.setColumnModel(columnModel);
-
- grid.setFrame(true);
- grid.setStripeRows(true);
- grid.setAutoExpandColumn("company");
-
- grid.setHeight(350);
- grid.setWidth(600);
- grid.setTitle("今日股市情况");
-
- Toolbar bottomToolbar = new Toolbar();
- bottomToolbar.addFill();
- bottomToolbar.addButton(new ToolbarButton("导出到Excel", new ButtonListenerAdapter() {
- public void onClick(Button button, EventObject e) {
- FileExport.ExportToExcel(DOM.getElementById("grid"));
- grid.clearSortState(true);
- }
- }));
- grid.setBottomToolbar(bottomToolbar);
-
- panel.add(grid);
-
- RootPanel.get().add(panel);
- }
-
-
- private Object[][] getCompanyData() {
- return new Object[][]{
- new Object[]{"Google", new Double(71.72), new Double(0.02),
- new Double(0.03), "9/1 12:00am", "MMM", "Manufacturing"},
- new Object[]{"Alcoa Inc", new Double(29.01), new Double(0.42),
- new Double(1.47), "9/1 12:00am", "AA", "Manufacturing"},
- new Object[]{"Altria Group Inc", new Double(83.81), new Double(0.28),
- new Double(0.34), "9/1 12:00am", "MO", "Manufacturing"},
- new Object[]{"American Express Company", new Double(52.55), new Double(0.01),
- new Double(0.02), "9/1 12:00am", "AXP", "Finance"},
- new Object[]{"American International Group, Inc.", new Double(64.13), new Double(0.31),
- new Double(0.49), "9/1 12:00am", "AIG", "Services"},
- new Object[]{"AT&T Inc.", new Double(31.61), new Double(-0.48),
- new Double(-1.54), "9/1 12:00am", "T", "Services"},
- new Object[]{"Boeing Co.", new Double(75.43), new Double(0.53),
- new Double(0.71), "9/1 12:00am", "BA", "Manufacturing"},
- new Object[]{"Caterpillar Inc.", new Double(67.27), new Double(0.92),
- new Double(1.39), "9/1 12:00am", "CAT", "Services"},
- new Object[]{"Yahoo", new Double(49.37), new Double(0.02),
- new Double(0.04), "9/1 12:00am", "C", "Finance"},
- new Object[]{"E.I. du Pont de Nemours and Company", new Double(40.48), new Double(0.51),
- new Double(1.28), "9/1 12:00am", "DD", "Manufacturing"}
- };
- }
- }
最终效果如下图所示:


说明: 代码中用到了GWT-EXT,项目主页:http://gwt-ext.com/
转载请注明出处和作者信息
发表于 @
2008年08月27日 15:23:00 | | 编辑|
举报| 收藏