`
lminqiang
  • 浏览: 16347 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Extjs在线进销存-通用Excel导出

阅读更多

还是接上篇  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开发的进销存系统

    SSH整合ExtJS开发的进销存系统是一种基于Java技术栈的Web应用程序,它结合了Spring、Struts2和Hibernate三个框架的优势,同时利用了ExtJS这个强大的JavaScript前端库,为用户提供了一个功能丰富的交互式界面。...

    ExtJs4 进销存 源代码

    这个进销存源代码示例展示了如何利用ExtJs4实现库存管理、销售管理和采购管理的核心功能,帮助开发者更好地理解和应用ExtJs4在实际项目中的实践。 进销存系统是企业管理中不可或缺的一部分,它涵盖了采购...

    Extjs6.0 进销存 ssm

    在这个"Extjs6.0 进销存 ssm"项目中,开发者利用ExtJS 6.0构建了前端界面,与SSM后端框架相结合,实现了进销存管理系统的功能。进销存系统,即采购、销售和库存管理,是企业管理中的关键部分,它帮助跟踪商品的流动...

    SSH、extjs进销存管理系统

    SSH+EXTJS结合的进销存管理系统,可以利用SSH的强大后端功能处理复杂的业务逻辑和数据处理,EXTJS的前端优势则可以提供用户友好的界面和流畅的操作体验。 在这款"SSH+EXTJS进销存管理系统"中,可能包含以下主要模块...

    ExtJS实现Excel导出

    ### ExtJS实现Excel导出:深入解析与实践 在当今高度数字化的工作环境中,数据的管理和呈现方式至关重要。其中,Excel作为数据处理和分析的重要工具,其导出功能在各种应用场景中显得尤为关键。ExtJS,作为一种强大...

    extjs grid数据导出excel文件

    本文将深入讲解EXTJS Grid如何实现数据导出到Excel文件的功能。 首先,我们要明白EXTJS Grid的数据导出到Excel的过程通常涉及到以下几个步骤: 1. **获取Grid数据**:在EXTJS中,Grid的数据存储在Store对象中。要...

    进销存ERP源码下载asp.net大型制造业进销存源码 c#源代码 bs erp电子版.zip

    该系统运用extjs+jquery+AjaxPro富客户端无刷新ajax技术,使用NPOI导出excel数据,使用 OfficeActiveX插件操作生成word文档(支持office2003、office2007),系统运行十分的顺畅, 界面整齐美观大方,可以作为二...

    进销存php源码(extjs)

    EXTJS则是一个强大的JavaScript库,提供了丰富的组件和布局,用于构建富客户端的用户界面,这使得进销存系统的交互性和用户体验得到显著提升。 在进销存php源码中,EXTJS通常用于构建前端界面,包括数据网格、表单...

    extjs4导出excel

    "extjs4导出excel"的功能就是实现了这个需求,让用户能够在ExtJS 4应用中方便地导出表格数据到Excel文件。 在ExtJS 4中实现数据导出至Excel通常涉及以下几个关键步骤: 1. **数据收集**:首先,你需要收集要导出的...

    ExtJs + structs + spring + hibernate(进销存系统)

    在进销存系统中,ExtJs 负责创建用户友好的界面,使得操作员可以方便地进行数据输入、查询、编辑和展示,同时提供数据验证和异步通信功能,提高用户体验。 2. **Structs**: Structs 是一个基于MVC(模型-视图-...

    Extjs6.2 生成的admin-dashboard官方模板

    Extjs6.2 生成的admin-dashboard官方模板

    基于EXTJS 的在线EXCEL编辑器

    5. **数据导入导出**:用户可以上传本地的Excel文件进行在线编辑,也可以将编辑后的数据导出为Excel格式,方便数据交换。 6. **权限控制**:通过集成的身份验证和权限管理,可以限制不同用户对数据的访问和操作权限...

    easyjweb+extjs 进销存系统

    本项目是采用easyjweb+extjs来实现,里面包括下拉数,本地下拉框,远程下拉框,treepanle and gridpanel组合开发,页面布局,如果能吃透这个项目,项目项目经验可以提高一年

    extjs实现excel导出

    在本文中,我们将深入探讨如何使用ExtJS框架结合Apache POI库来实现Excel导出功能。首先,让我们了解一些基本概念。 **ExtJS框架** ExtJS是一个强大的JavaScript库,专门用于构建富客户端应用程序。它提供了丰富的...

    Extjs 6.2 最新sdk ext-6.2.0-gpl.zip

    官方最新版本Extjs6.2版本sdk,创建新项目的时候需要用, 全面的核心框架,具有最新的Javascript标准支持 新的漂亮组件和主题,以创建漂亮的企业应用程序 现代工具链,用于构建优化,高性能,通用的应用程序 用于可视...

    基于Java的进销存管理系统源码.zip

    源码参考,功能如下: 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 机构管理:配置系统组织机构(公司、部门、小组),树结构...进销存管理:进销存管理功能,如:采购、销售、仓库、商品、出纳、报表。

    ExtJs grid导出Excel

    当需要将Grid中的数据导出到Excel时,可以采用两种方法,这些方法在ExtJs 4.2版本中已经得到很好的支持。 **方法一:使用XLSX.js库** XLSX.js是一个JavaScript库,能够方便地读取和写入Excel文件。在ExtJs中,你...

    EXTJS4导出excel示例

    在EXTJS4中,实现导出数据到Excel的功能是一项常见的需求,这可以帮助用户方便地处理和存储大量数据。本示例将详细介绍EXTJS4如何实现Excel导出,并提供相关的代码示例。 EXTJS4的核心是其组件模型,包括表格(Grid...

    extjs-OA extjs-oa

    一个extjs的OA项目 extjs-OA extjs-oaextjs-OA extjs-oa

    extjs-theme-bootstrap-master.zip

    "extjs-theme-bootstrap-master.zip" 文件很可能是ExtJS的一个主题包,它集成了Bootstrap的样式,使得ExtJS组件能够呈现出Bootstrap的经典外观。 在深入讲解这个主题之前,让我们先了解一下基础概念: 1. **ExtJS*...

Global site tag (gtag.js) - Google Analytics