jxl读数据库数据生成xls 并下载
1、所需jar
jxl-2.6.10.jar
jxls-core-1.0-RC-3.jar
jxls-reader-1.0-RC-3.jar
2、 excel修改行宽度封装
SheetColumn.java
package com.tp.soft.common.excel;import jxl.write.WritableSheet;/*** excel修改行宽度* @author taop**/ public interface SheetColumn {public abstract void setColumnView(WritableSheet sheet) ; }
3、excel生成封装
ExcelExportUtils.java
package com.tp.soft.common.excel;import java.util.List; import java.util.Map;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import jxl.CellView; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.VerticalAlignment; import jxl.write.Label; import jxl.write.WritableCell; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility;/******************************************************************************* @Package: [com.tp.soft.common.excel.java] * @ClassName: [XmlExportUtis] * @Description: [动态生成XML] * @Author: [taop] * @CreateDate: [2014-3-31 下午2:32:51] * @UpdateUser: [taop(如多次修改保留历史记录,增加修改记录)] * @UpdateDate: [2014-3-31 下午2:32:51,(如多次修改保留历史记录,增加修改记录)] * @UpdateRemark: [说明本次修改内容,(如多次修改保留历史记录,增加修改记录)] * @Version: [v1.0] */public class ExcelExportUtils {/*** * @Title: downLoad* @Description: TODO(导出EXCEL)* @param fileName 导出文件名* @param titles excel标题* @param dataList excel数据* @param request * @param response* @param sheetColumn void 设置 单元格宽度等信息* @throws*/public static void downLoad(String fileName , String[] titles , Map<String,List<List<String>>> data ,HttpServletRequest request ,HttpServletResponse response , SheetColumn sheetColumn ){//创建一个EXCELWritableWorkbook excel = null ;try {//设置类型为下载response.setContentType("application/x-msdownload");//获取浏览器信息String userAgent = request.getHeader("user-agent").toLowerCase();String rtn ="filename="+fileName+".xls" ;if (userAgent.indexOf("msie") != -1) { //IE浏览器rtn = "filename=" + java.net.URLEncoder.encode(fileName,"UTF-8")+".xls" ; }else if (userAgent.indexOf("opera") != -1) { // Opera浏览器只能采用filename* rtn = "filename*=UTF-8''" + fileName+".xls"; }else if (userAgent.indexOf("safari") != -1 ) { // Safari浏览器rtn = "filename=" + new String(fileName.getBytes("UTF-8"),"ISO8859-1")+".xls" ; }else if (userAgent.indexOf("applewebkit") != -1 ){ // Chrome浏览器fileName = MimeUtility.encodeText(fileName, "UTF8", "B"); rtn = "filename=\"" + fileName + ".xls\""; }else if (userAgent.indexOf("mozilla") != -1){ // FireFox浏览器rtn = "filename=" + new String(fileName.getBytes("UTF-8"),"ISO-8859-1")+".xls"; } //设置下载文件名response.setHeader("Content-Disposition","attachment;"+ rtn);//设置窗口弹出类型response.setHeader("windows-Target","_blank");excel = Workbook.createWorkbook(response.getOutputStream());WritableFont font = new WritableFont(WritableFont.TIMES,14,WritableFont.BOLD);WritableCellFormat format = new WritableCellFormat();//设置文字居中 format.setAlignment(Alignment.CENTRE);//设置文字垂直居中 format.setVerticalAlignment(VerticalAlignment.CENTRE);//设置自动换行format.setWrap(true);WritableCellFormat formatT = new WritableCellFormat(font);//设置文字居中 formatT.setAlignment(Alignment.CENTRE);//设置文字垂直居中 formatT.setVerticalAlignment(VerticalAlignment.CENTRE);//设置自动换行formatT.setWrap(true);int k = 0 ;for(Map.Entry<String, List<List<String>>> entry : data.entrySet()) {//创建工作空间WritableSheet sheet = excel.createSheet(entry.getKey(), k++);//设置宽度if(sheetColumn!=null){sheetColumn.setColumnView(sheet);}else{//设置自动大小 CellView cellView = new CellView(); cellView.setAutosize(true); for(int i= 0 ; i<titles.length ; i++){sheet.setColumnView(i, cellView);}}List<List<String>> dataList = entry.getValue() ;/** 添加title */for(int i= 0 ; i<titles.length ; i++){WritableCell cell= new Label(i , 0 ,titles[i],formatT);sheet.addCell(cell);}/** 添加内容 */for(int j=0 ; j<dataList.size() ; j++){List<String> contents = dataList.get(j) ; //一条数据for(int i=0 ; i<contents.size() ; i++) {WritableCell cell= new Label(i , j+1 ,contents.get(i),format);sheet.addCell(cell);}}}excel.write() ;} catch (Exception e) {e.printStackTrace();}finally{try{if(excel!=null) excel.close();excel = null ;}catch(Exception e){}}}}
4、读取数据库数据并调用生成excel 下载
/*** 导出中奖记录* */@RequestMapping("/doWinExcel")public ModelAndView download(BuWinUser buWinUser, int zid,HttpServletResponse response) throws Exception {List<BuWinUser> winList = winUserSvc.findWinListByNoPage(buWinUser, zid);Map<String, List<List<String>>> data = new HashMap<String, List<List<String>>>();data.put("获奖用户信息", beanToArray(winList));String[] titles = { "编号", "状态", "兑换码", "openid", "奖项", "昵称", "联系电话","性别", "中奖时间", "发奖时间" };ExcelExportUtils.downLoad("获奖用户信息", titles, data, request, response,new SheetColumn() {@Overridepublic void setColumnView(WritableSheet sheet) {sheet.setColumnView(0, 15);sheet.setColumnView(1, 20);sheet.setColumnView(2, 20);sheet.setColumnView(3, 40);sheet.setColumnView(4, 20);sheet.setColumnView(5, 20);sheet.setColumnView(6, 30);sheet.setColumnView(7, 30);sheet.setColumnView(8, 20);sheet.setColumnView(9, 20);}});return null;}private List<List<String>> beanToArray(List<BuWinUser> data) {List<List<String>> dataList = new ArrayList<List<String>>();for (BuWinUser winUser : data) {List<String> list = new ArrayList<String>();list.add(winUser.getWid() + "");list.add(winUser.getIssend_name());list.add(winUser.getSn_num());list.add(winUser.getOpenid());list.add(winUser.getPlevel_name());list.add(winUser.getNick_name());list.add(winUser.getTel());list.add(winUser.getSex());list.add(DateUtil.timestampToStr(winUser.getGmt_create(),"yyyy-MM-dd HH:mm:ss"));list.add(DateUtil.timestampToStr(winUser.getSend_time(),"yyyy-MM-dd HH:mm:ss"));dataList.add(list);}return dataList;}
转载于:https://www.cnblogs.com/tplovejava/p/5473292.html
jxl读数据库数据生成xls 并下载相关推荐
- java传入数据库生成柱状图_Java读取数据库数据生成柱状图
此案例是用swing显示数据的.须要引入jfreechart相关包.不同版本号可能包不同样.本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class ...
- 基于Visual Studio2010讲解LINQ读出数据库数据生成XML
LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML. LINQ to XML 最重要的优势是它与 Lang ...
- mysql自带的卸数工具_数据库卸数必备工具下载-数据库数据导出工具(DBexport)下载v1.3官方版-西西软件下载...
DBexport是一款专业的数据库数据导出工具,支持多数据源导出,目前已测试Oracle,MySQL,SQL_SERVER无明显BUG,目前支持图片种的数据库,支持扩展功能,只要有对应的数据库jar和 ...
- java数据生成excel_Java 数据库数据生成Excel
采用jxl.jar生成Excel 项目开发注意事项: 1:导入从网上下载的jar包: mail.jar 和 activation.jar 2:删掉C:\Program Files\MyEclipse\ ...
- 微信小程序云开发将数据库数据生成word文件
演示如何通过云函数把数据存入word模板中,源代码见cloudfunctions/genarateDocument/index.js,整个过程分为以下几个过程:(1) 创建云函数,并安装doctemp ...
- python自动下载阿里云数据库数据_脚本自动下载阿里云每日备份数据库镜像
脚本自动下载阿里云每日备份数据库镜像 背景 前端时间街道一个临时需求,要求根据每日的数据快照,统计计算出需要数据结果,并写入数据库,提供查询接口. 遇到两个自己没有尝试过的点: 阿里云导出的数据库是. ...
- 数据库数据生成word文档的方法
从库里取纪录生成word文档. 主要有这么几种方法: 1.改头,就是象excel似的 Response.Buffer = TRUE Response.ContentType = "appli ...
- 我鼓捣的数据库数据生成word文档的方法!
<script language="javascript" src="/js/content_top.js" type="text/javasc ...
- 易语言逐条读access数据_[原创]用易语言对ACCESS数据库进行基本操作
用易语言对ACCESS数据库进行基本操作 本人弄这个例程前,对数据库知道的不多,仅会一些简单的操作,根本不懂SQL的命令,可以说,在这方面的知识就是一空二白. 在易语言的论坛里,我能找到许多关于易语言 ...
- 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)
学习使用数据库,难免要使用SQL语句.外部数据库使用SQL语句可以快速地完成对数据库的种种操作,如:查询.修改.插入记录.删除记录等.至于更多的,比如:创建表.删除表.加密数据等等,等我们能够比较熟练 ...
最新文章
- 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
- Tomcatserverhttps协议配置简单介绍
- matlab中plot同时绘制两个函数时向量长度不一致的解决办法
- 【C语言学习笔记】字符串拼接的3种方法 .
- boost::condition_variable相关的测试程序
- Netty事件传播机制
- KTV歌曲推荐-深入浅出协同过滤
- php redis 读写分离类,yii实现redis读写分离
- java爬虫之基于httpclient的简单Demo(二)
- [bash] 打包某目录(可以是绝对路径)下的指定扩展名的文件
- 程序员创业的两难困境
- matlab实现cnn代码,CNN 经典的卷积神经网络MATLAB实现源码,可直接运行。 276万源代码下载- www.pudn.com...
- 硅谷35岁以后的程序员都在做什么?
- 【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)
- 微信小程序弹框显示自定义内容(1)
- safari查看html代码,iPhone不越狱safari查看网页源代码方法
- 微信翻译,快把上海老外搞疯了
- Apollo微服务配置中心详解
- word中如何设置奇偶页不同的页眉和页脚,怎么从指定页开始加页码
- MVC框架中分页的实现