GWT 调用本地js 导出excel

刚做的用GWT调用本地js导出excel , 导出的excel有点难看, 但总比没有导出功能好!

第一步: 编写本地js放到public/js/file/FileExport.js目录下:

//导入Excel


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

//导入Word  
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;
/**  
 * JSNI实现类调用js
 * @author 赵昌峻
 *
 */

public class FileExport {

public static native void ExportToExcel(Element element) /*-{
 $wnd.ExportToExcel(element);  
}-*/;

public static native void ExportToWord(Element element) /*-{
 $wnd.ExportToWord(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;

/**

 * GWT 调用本地js 导出excel 示例程序  
 * @author 赵昌峻  
 *
 */
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"); //给要导出的表格一个维一的ID  
 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"));  //调用本地js导出excel
   grid.clearSortState(true);
  }
 }));
 grid.setBottomToolbar(bottomToolbar);
 panel.add(grid);
 RootPanel.get().add(panel);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值