- 浏览: 475924 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
学渣村的好村长:
很
java 列表转树形 -
wawj0819:
...
java 列表转树形 -
fireinjava:
LyAn_爱踢爱死 写道我有疑问,关于数组时你说collect ...
mybatis sql in 查询 -
LyAn_爱踢爱死:
我有疑问,关于数组时你说collection="ar ...
mybatis sql in 查询 -
yrsheng:
不行!楼主你真的试过吗?
Spring mvc 传递数组
平时用js导出table有些不足,导出的Excel内容也不够好看。
所以写了个通用的将Table导出为Excel的方法,可完成表格导出(不支持嵌套table)。
js计算cellStrArray部分参考http://fireinjava.iteye.com/admin/blogs/759190
代码如下:
构造字符串:每个对象以row,col,rowSpan,colSpan,value形式组成串,以便Jxl来addCell、mergeCells。
说明:jxl创建Cell用的是 WritableSheet.addCell(new Label(col, row,value,style))
跨行跨列用的是WritableSheet.mergeCells(col, row, col2,row2)
/** 浏览器判断 */ var Sys = {}; var ua = navigator.userAgent.toLowerCase(); if (window.ActiveXObject) Sys.ie = ua.match(/msie ([\d.]+)/)[1]; else if (document.getBoxObjectFor) Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]; function containsArray(array, obj) { for (var i = 0; i < array.length; i++) { if (array[i] == obj) { return i; break; } } return -1; } Array.prototype.contains = function(obj) { return containsArray(this, obj); } function exportTableToJxlExcel(sheetName,tableId) { var offsetLeftArray = new Array(); var cell;// 单元格Dom var col;// 单元格实际所在列 var cellStr;// 每个cell以row,col,rowSpan,colSpan,value形式 var cellStrArray = []; var objTab = document.getElementById(tableId); // 遍历第一次取出offsetLeft集合 for (var i = 0; i < objTab.rows.length; i++) { for (var j = 0; j < objTab.rows[i].cells.length; j++) { cell = objTab.rows[i].cells[j]; if (offsetLeftArray.contains(cell.offsetLeft) == -1) offsetLeftArray.push(cell.offsetLeft); } } offsetLeftArray.sort(function(x, y) { return parseInt(x) - parseInt(y); }); //alert("offsetLeft集合:" + offsetLeftArray.join(',')); // 遍历第二次生成cellStrArray for (var i = 0; i < objTab.rows.length; i++) { for (var j = 0; j < objTab.rows[i].cells.length; j++) { cell = objTab.rows[i].cells[j]; col = offsetLeftArray.contains(cell.offsetLeft); cellStr = i + ',' + col + ',' + cell.rowSpan + ',' + cell.colSpan + "," + (Sys.firefox?cell.textContent:cell.innerText); cellStrArray.push(cellStr); } } // 显示 //var str = "行,列,rowSpan,colSpan,值\n"; //str += cellStrArray.join('\n'); //alert(str); //把cellStrArray传到后台 buffalo.remoteCall("ReportExcelExport.export", ['sheet名称',cellStrArray], function(reply){ var result = reply.getResult(); if(result!=null && result.length>0){ document.location.href = "<%=request.getContextPath()%>/prj/common/download.jsp?fileName="+result; }else{ alert("无相关记录"); } }); }
java后台部分:
Jxl生成EXCEL(其中ExcelUtil参考 http://fireinjava.iteye.com/blog/702905 )
public String exportToJxlExcel(String sheetName, String[] cellStrArray) { try { String fileName = "E:/table.xls";// TODO FileOutputStream os = new FileOutputStream(fileName); if (cellStrArray != null && cellStrArray.length > 0) { WritableWorkbook wwb = Workbook.createWorkbook(os); WritableCellFormat wcf_title = ExcelUtil.createWcfTitle(); WritableCellFormat wcf_text = ExcelUtil.createWcfText(); WritableSheet ws = wwb.createSheet(sheetName, 0); for (int i = 0; i < 20; i++) ws.setColumnView(i, 20); Label lbl = null; String[] objProps = null; int col; int row; int rowSpan; int colSpan; for (String objStr : cellStrArray) {// 每个对象以row,col,rowSpan,colSpan,value形式 objProps = objStr.split(","); col = Integer.parseInt(objProps[1]); row = Integer.parseInt(objProps[0]); rowSpan = Integer.parseInt(objProps[2]); colSpan = Integer.parseInt(objProps[3]); lbl = new Label(col, row, objProps[4], row == 0 ? wcf_title : wcf_text); ws.addCell(lbl); if (rowSpan > 1 || colSpan > 1) ws.mergeCells(col, row, col + colSpan - 1, row + rowSpan - 1); } wwb.write(); wwb.close(); os.close(); os.flush(); return fileName; } } catch (Exception e) { e.printStackTrace(); } return null; }
前台提交到后台的值,如:
[0,0,1,1,品牌, 0,1,1,1,型号, 0,2,1,1,数量(单位:万), 0,3,1,1,百分比, 1,0,3,1,LG, 1,1,1,1,KF510, 1,2,1,1,0, 1,3,1,1,0.02%, 2,1,1,1,KG129, 2,2,1,1,0.001, 2,3,1,1,0.1%, 3,1,1,1,合计, 3,2,1,1,0.001, 3,3,1,1,0.12, 4,0,1,2,合计, 4,2,1,1,0.001, 4,3,1,1, ]
来个简单的效果图:
发表评论
-
将编码为GBK的Java源文件批量转为UTF-8
2016-09-10 11:41 1518转自 http://my.oschina.net/binny ... -
判断上传的文件是否图片格式
2015-08-16 01:49 4491转自 http://stackoverflow.co ... -
StreamCorruptedException invalid type code 34
2014-12-15 22:47 1163反序列的时候抛错: java.io.StreamCor ... -
ant property 修改
2013-12-17 16:57 2931ant借助antcrontrib.jar修改propert ... -
websphere liberty 安装 部署
2013-08-21 00:24 5836websphere application server l ... -
java 列表转树形
2013-02-01 10:31 27883往往要将数据库中的菜单配置转成树形结构展示到前台,这边提供 ... -
判断文件是否UTF-8编码
2012-12-04 08:50 3818判断文件是否UTF-8编码: 对于UTF-8编码 ... -
java replaceAll 的类似group用法
2012-08-30 23:25 2251replaceAll比较特殊的用法介绍一个: eg:把中括号 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2012-05-25 10:42 1287项目在Tomcat跑的时候报Bad version numbe ... -
weblogic出现response already committed
2011-11-30 15:06 5720jsp页面导出时在weblogic下会出现response a ... -
XML解析 Invalid byte 2 of 2-byte UTF-8 sequence
2011-10-10 00:32 1766String xmlStr = "<?xml ... -
VBS脚本设置Java环境变量
2011-07-26 16:09 2108转自 http://blog.csdn.net/sunyuji ... -
jsp获取网站域名 域名解析
2011-07-22 17:23 14029部署主机如果有弄域名解析的话访问http://www.doma ... -
在顶层iframe页面添加图片div
2011-06-27 11:59 2789又解决了一个问题...之前想太复杂了... 父页面ht ... -
apache转发 js 跨域
2011-01-24 10:20 5081安装Apache HTTP Server 打开apache安 ... -
MyEclipse 启动tomcat的时候报cannot connect to vm
2010-12-22 00:58 3107MyEclipse 启动tomcat的时候突然报cannot ... -
Eclipse常用快捷键
2010-09-20 10:23 1341http://www.eclipse.org/downlo ... -
Java打Tag CvsClient
2010-08-26 21:16 2324增量编译的时候需要一个一个文件打Tag,不方便,网上也没发现现 ... -
Tomcat布署
2010-08-16 19:25 11381.项目布署 tomcat安装目录下加个配置文件即可 ... -
JSP文件上传 无刷新
2010-08-09 09:14 1972本文转自http://www.iteye.com/topic ...
相关推荐
struts2导出excel java 导出excel: JXL_excel: 可以直接在elipse下运行的例子 可以直接导出excel文件(包含所需的jar包) CSharpJExcel: 是JXL的官方下载的 包括详细的文档 和jar包
jxl导出excel加水印 WritableWorkbook、WritableSheet、WritableCellFormat
jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程 jxl导出excel 完整例子工程jxl导出excel 完整例子工程jxl导出excel 完整例子工程
jxl导入导出excel 详细的描述了如何使用jxl导入导出excel。
jxl导出excel工具类,封装好了的,实现传递任意集合自动导出excel
Excel导入导出 jxl及Poi 工具类:jxl 实现 及 Poi实现 非常实用
jxl数据导入导出jxl数据导入导出jxl数据导入导出 jxl数据导入导出jxl数据导入导出jxl数据导入导出
jxl.jar java导入/导出excel支持图片等二进制文件的操作
工具类中有两个方法,一个是根据前台传入的table的html代码进行导出excel(可以只自定义表格名称/sheet页名称)。还一种是根据html文件,代码自动解析出table然后进行excel导出
excel 导出用的jxl.jar,可以直接放在lib文件目录下,这样就可以导出excel文件了
Excel2003导出工具jxl.jar包,版本虽有点老,但还能用。
使用jxl导出Excel表的好例子 导出excel表的例子
java excel jxl导出源码
Android使用jxl快速导出excel表
利用JXL技术支持模板和非模板的表格导出
使用jxl方式实现Excel表格导出,非常简单而且实用
jxl从数据库中直接导出excel文档java源码
java用jxl包导出excel表格 x
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
java版本通过JXL使用模板导出EXCEL