还是接上篇 http://lminqiang.iteye.com/blog/1562341
我们先来看看在 “ez进销存” 中excel到导出功能:如图
所谓通用Excel导出,就是 将GrrdPanel 中的列的信息 和 数据 (store)以Json的形式 传递到后台,后台根据列信息和json 在excel 模板中生成导出的实际数据然后提供链接给客户下载。
优点: 针对所以GridPanel 都可以通用,并且速度快,不用查询数据库。
缺点: 如果加入的分页,那么不好意思,只能导出当前页数的数据。
好了不废话:先看一段JS:
tbar : [ {
text : '刷新',
iconCls : 'refresh-icon',
handler : function() {
ds.load();
}
}, {
text : '导出Excel',
iconCls : 'excel-icon',
scope : this,
handler : function(button) {
var deskPanel = Ext.get("x-desktop");
deskPanel.mask('正在为您导出EXCEL,请稍等....',
'x-mask-loading');
var obj = exportexcel(this.detail);
Ext.Ajax.request({
url : 'qo/export/exportExcel.do',
scope : this,
timeout : 300000,
method : 'post',
params : {
jsonstr : Ext.util.JSON.encode(obj),
filename : '应收应付'
},
success : function(response) {
deskPanel.unmask();
var fileJson = Ext
.decode(response.responseText);
var dir = fileJson.dir;
var filename = fileJson.filename;
var url = "qo/download/downloadExcel.do?dir="
+ dir + "&filename=" + filename;
url = encodeURI(url);
window.open(url, "_self");
}
});
}
}]
声明下 :this.detail = new Ext.grid.GridPanel();
然后再看:exportexcel函数 , 负责从gridPanel 中提取相关的信息。
// 导出excel
function exportexcel(grid){
var records = grid.getStore().data.items;
if(records.length == 0){
Ext.Msg.alert("提示", "不存在要导出数据。");
return;
}
var count = grid.getColumnModel().getColumnCount();
var columns = new Array();
for(var i = 0 ; i< count; i ++){
if(grid.getColumnModel().isHidden(i))
continue;
var head = new Object();
head.header = grid.getColumnModel().getColumnHeader(i) ;
head.dataIndex = grid.getColumnModel().getDataIndex(i) ;
if(!head.dataIndex)
continue;
head.render = grid.getColumnModel().getRenderer(i);
if(head)
columns.push(head) ;
}
var dataarray = new Array();
for (var i = 0; i < records.length ; i++) {
if(!records[i])
continue;
var rec = new Object();
for(var j = 0 ; j < columns.length ; j ++){
rec = columns[j].render.call(columns[j].render , records[i].get(columns[j].dataIndex) , j, records[i] )
if (rec) {
try {
rec = rec.replace(/<[^>].*?>/g, "")
} catch (e) {
}
}
records[i].set(columns[j].dataIndex , rec)
}
dataarray.push(records[i].data );
}
var obj = {
columns : columns ,
datas : dataarray
}
return obj;
}
下来是 我们aciton中处理这个请求:
// 导出Excel
@RequestMapping(value = "/exportExcel")
public void exportExcel( String jsonstr, String filename ,HttpServletRequest request,HttpServletResponse response){
System.out.println(jsonstr);
JSONObject object = JSONObject.fromObject(jsonstr);
JSONArray colums = JSONArray.fromObject(object.get("columns"));
JSONArray datas = JSONArray.fromObject(object.get("datas"));
List<String> headers = new ArrayList<String>();
List<String> dataIndexs = new ArrayList<String>();
for (Iterator iterator = colums.iterator(); iterator.hasNext();) {
JSONObject obj = (JSONObject) iterator.next();
headers.add(obj.getString("header"));
dataIndexs.add(obj.getString("dataIndex"));
}
List datalist = new ArrayList();
for (Iterator iterator = datas.iterator(); iterator.hasNext();) {
JSONObject obj = (JSONObject) iterator.next();
//Map map = new THashMap();
List array = new ArrayList();
for(String dataindex :dataIndexs ){
//map.put(dataindex, obj.get(dataindex));
array.add(obj.get(dataindex));
}
datalist.add(array);
}
Map contextMap = new THashMap();
contextMap.put("headers",headers);
contextMap.put("dataIndexs",dataIndexs);
contextMap.put("datalist",datalist);
String webRoot = super.getServletContext().getRealPath("/");
String templetFileName = new StringBuffer(filename).append(".xls").toString();
String dateTemp = commonXlsPrint(contextMap, webRoot,"commonTemplet.xls",templetFileName);
int index = templetFileName.indexOf(".");
String tempFileName = new StringBuffer( templetFileName.substring(0, index)).append(dateTemp).append(".xls").toString();
String destFileName = new StringBuffer(webRoot).append("/tempDir/").append(tempFileName).toString();
Map result = new THashMap();
result.put("filename", dateTemp);
result.put("dir", "tempDir");
super.renderObjectText(result, response);
}
细心的你估计已经看到了commonTemplet.xls 的模板文件:
这样在需要导出的添加上button后就可以轻松的完成Excel导出。
- 大小: 320.6 KB
- 大小: 69.4 KB
分享到:
相关推荐
SSH整合ExtJS开发的进销存系统是一种基于Java技术栈的Web应用程序,它结合了Spring、Struts2和Hibernate三个框架的优势,同时利用了ExtJS这个强大的JavaScript前端库,为用户提供了一个功能丰富的交互式界面。...
这个进销存源代码示例展示了如何利用ExtJs4实现库存管理、销售管理和采购管理的核心功能,帮助开发者更好地理解和应用ExtJs4在实际项目中的实践。 进销存系统是企业管理中不可或缺的一部分,它涵盖了采购...
在这个"Extjs6.0 进销存 ssm"项目中,开发者利用ExtJS 6.0构建了前端界面,与SSM后端框架相结合,实现了进销存管理系统的功能。进销存系统,即采购、销售和库存管理,是企业管理中的关键部分,它帮助跟踪商品的流动...
SSH+EXTJS结合的进销存管理系统,可以利用SSH的强大后端功能处理复杂的业务逻辑和数据处理,EXTJS的前端优势则可以提供用户友好的界面和流畅的操作体验。 在这款"SSH+EXTJS进销存管理系统"中,可能包含以下主要模块...
### ExtJS实现Excel导出:深入解析与实践 在当今高度数字化的工作环境中,数据的管理和呈现方式至关重要。其中,Excel作为数据处理和分析的重要工具,其导出功能在各种应用场景中显得尤为关键。ExtJS,作为一种强大...
本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常涉及到以下几个步骤: 1. **获取Grid数据**:在EXTJS中,Grid的数据存储在Store对象中。要...
该系统运用extjs+jquery+AjaxPro富客户端无刷新ajax技术,使用NPOI导出excel数据,使用 OfficeActiveX插件操作生成word文档(支持office2003、office2007),系统运行十分的顺畅, 界面整齐美观大方,可以作为二...
EXTJS则是一个强大的JavaScript库,提供了丰富的组件和布局,用于构建富客户端的用户界面,这使得进销存系统的交互性和用户体验得到显著提升。 在进销存php源码中,EXTJS通常用于构建前端界面,包括数据网格、表单...
"extjs4导出excel"的功能就是实现了这个需求,让用户能够在ExtJS 4应用中方便地导出表格数据到Excel文件。 在ExtJS 4中实现数据导出至Excel通常涉及以下几个关键步骤: 1. **数据收集**:首先,你需要收集要导出的...
在进销存系统中,ExtJs 负责创建用户友好的界面,使得操作员可以方便地进行数据输入、查询、编辑和展示,同时提供数据验证和异步通信功能,提高用户体验。 2. **Structs**: Structs 是一个基于MVC(模型-视图-...
Extjs6.2 生成的admin-dashboard官方模板
5. **数据导入导出**:用户可以上传本地的Excel文件进行在线编辑,也可以将编辑后的数据导出为Excel格式,方便数据交换。 6. **权限控制**:通过集成的身份验证和权限管理,可以限制不同用户对数据的访问和操作权限...
本项目是采用easyjweb+extjs来实现,里面包括下拉数,本地下拉框,远程下拉框,treepanle and gridpanel组合开发,页面布局,如果能吃透这个项目,项目项目经验可以提高一年
在本文中,我们将深入探讨如何使用ExtJS框架结合Apache POI库来实现Excel导出功能。首先,让我们了解一些基本概念。 **ExtJS框架** ExtJS是一个强大的JavaScript库,专门用于构建富客户端应用程序。它提供了丰富的...
官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...
源码参考,功能如下: 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 机构管理:配置系统组织机构(公司、部门、小组),树结构...进销存管理:进销存管理功能,如:采购、销售、仓库、商品、出纳、报表。
当需要将Grid中的数据导出到Excel时,可以采用两种方法,这些方法在ExtJs 4.2版本中已经得到很好的支持。 **方法一:使用XLSX.js库** XLSX.js是一个JavaScript库,能够方便地读取和写入Excel文件。在ExtJs中,你...
在EXTJS4中,实现导出数据到Excel的功能是一项常见的需求,这可以帮助用户方便地处理和存储大量数据。本示例将详细介绍EXTJS4如何实现Excel导出,并提供相关的代码示例。 EXTJS4的核心是其组件模型,包括表格(Grid...
一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa
"extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...