刚做的用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);
}
}
分享到:
相关推荐
2. **模块化(GWT Module)**:每个GWT项目都始于一个`.gwt.xml`模块文件,它定义了项目的配置信息,包括使用的库、本地化设置、主题等。 3. **Java到JavaScript编译**:GWT的编译过程将Java源代码转化为优化的...
Google Web Toolkit(GWT)是一个开放源代码的Java框架,它允许开发者使用Java语言来编写富互联网应用程序(Rich Internet Applications,RIA),并将其编译成优化的JavaScript代码,从而在浏览器中运行。GWT的主要...
“GWT入门”和“GWT中文教程”显然是针对初学者的,它们可能从最基础的GWT安装、项目配置开始,逐步讲解GWT的核心概念,如UI设计(Widget系统)、事件处理、数据模型和服务器通信(RPC机制)、本地存储、国际化等。...
4. **国际化与本地化**:GWT 提供了强大的国际化支持,使得开发者可以轻松地为应用程序添加多语言版本,满足全球用户的需求。 5. **模块化**:GWT 应用程序由一系列模块组成,每个模块包含特定的功能。这种模块化...
7. **国际化与本地化**:GWT支持多语言,允许开发者轻松地为不同地区和语言的用户提供服务。 8. **丰富的UI组件**:GWT提供了大量的预构建UI组件,如按钮、表单、表格等,这些组件可以方便地进行定制和组合。 9. *...
3. **异步编程模型**:通过GWT的异步服务调用(RPC),开发者可以方便地实现客户端与服务器的数据交换。 4. **强大的开发环境**:GWT提供集成开发环境(IDE)插件,如Eclipse和IntelliJ IDEA,支持代码提示、调试和...
5. **异步通信 - RPC (Remote Procedure Call)**: GWT 提供了RPC机制,使得客户端可以直接调用服务器端的方法,处理数据和服务端逻辑。GWTDemo可能包含了与服务器交互的示例。 6. **本地存储**: GWT 支持本地存储,...
- GWT支持通过远程过程调用(Remote Procedure Call, RPC)机制与服务器端进行通信。 - 开发者可以通过定义服务接口并实现相应的服务端逻辑,实现前后端的数据交换。 #### 四、GWT实战案例 - **案例1: Hello GWT...
GWT的编译器会将这些Java代码转换为优化过的JavaScript,同时提供了宿主模式(Host Mode)的本地开发和调试环境,允许开发者在不部署到服务器的情况下测试应用。 6. **调试与测试**:GWT提供了一个内置的Servlet...
在这种情况下,GWT 支持 JavaScript Native Interface (JSNI),允许开发者直接在 Java 代码中嵌入 JavaScript 代码。这种机制为开发者提供了极大的灵活性,使其能够在需要时使用原生 JavaScript 功能。 #### 二、用...
- **跨浏览器兼容性**:GWT能够自动生成针对不同浏览器优化的JavaScript代码,确保应用在各种浏览器环境下都能正常工作。 - **强大的用户界面组件库**:提供了丰富的UI组件,如Button、Label等,方便快速构建用户...
1. **GWT的基本使用**:包括模块定义、事件处理、异步RPC调用、本地存储等。 2. **EXT GWT组件**:例如,使用Grid面板展示数据,TreePanel实现层级结构,FormPanel进行表单数据输入等。 3. **数据绑定**:GWText可能...
3. **本地化**:GWT支持多语言本地化,允许开发者轻松地创建不同语言版本的应用程序。 4. **事件驱动**:GWT采用与桌面应用类似的事件驱动模型,使得用户交互更直观。 ## GWT的主要特性 1. **跨浏览器兼容**:GWT...
JAVA整合GWT框架,利用ITEXT插件,实现从SQL2008中导出数据到已有的模板中。资源里附有PDF模板,构建PDF模板的WORD文件,以及PDF模板所要做成PDF文件的图片式样。该资源还实现了导出SQL2008某行某列的数据到PDF模板...
2. **EXT-JS集成**:学习如何将EXT-JS库引入到GWT项目中,理解两者的交互方式,以及如何在GWT中调用EXT-JS的组件。 3. **异步通信(GWT-RPC)**:掌握GWT中的远程过程调用(RPC)机制,实现客户端和服务器端的数据...
使用GWT RPC,你可以直接调用服务器上的方法,就像它们是本地方法一样。 例如,创建一个服务接口: ```java public interface MyService extends RemoteService { String getData(); } ``` 然后在服务器端实现这...
9. **自动RPC服务**:GWT的Remote Procedure Call (RPC)机制能自动处理Java对象与服务器端的通信,简化服务调用。 总之,GWT通过将Java与Ajax相结合,降低了开发复杂性,提高了开发速度,同时也确保了应用的质量和...
GWT 的核心部分是其编译器,它能够将 Java 代码转换为浏览器可执行的 JavaScript。这使得开发者可以利用 Java 的强大功能和成熟的开发工具,同时享受 JavaScript 在 web 开发中的灵活性。 2. **Hosted Model 和 ...