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 并下载相关推荐

  1. java传入数据库生成柱状图_Java读取数据库数据生成柱状图

    此案例是用swing显示数据的.须要引入jfreechart相关包.不同版本号可能包不同样.本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class ...

  2. 基于Visual Studio2010讲解LINQ读出数据库数据生成XML

    LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML.  LINQ to XML 最重要的优势是它与 Lang ...

  3. mysql自带的卸数工具_数据库卸数必备工具下载-数据库数据导出工具(DBexport)下载v1.3官方版-西西软件下载...

    DBexport是一款专业的数据库数据导出工具,支持多数据源导出,目前已测试Oracle,MySQL,SQL_SERVER无明显BUG,目前支持图片种的数据库,支持扩展功能,只要有对应的数据库jar和 ...

  4. java数据生成excel_Java 数据库数据生成Excel

    采用jxl.jar生成Excel 项目开发注意事项: 1:导入从网上下载的jar包: mail.jar 和 activation.jar 2:删掉C:\Program Files\MyEclipse\ ...

  5. 微信小程序云开发将数据库数据生成word文件

    演示如何通过云函数把数据存入word模板中,源代码见cloudfunctions/genarateDocument/index.js,整个过程分为以下几个过程:(1) 创建云函数,并安装doctemp ...

  6. python自动下载阿里云数据库数据_脚本自动下载阿里云每日备份数据库镜像

    脚本自动下载阿里云每日备份数据库镜像 背景 前端时间街道一个临时需求,要求根据每日的数据快照,统计计算出需要数据结果,并写入数据库,提供查询接口. 遇到两个自己没有尝试过的点: 阿里云导出的数据库是. ...

  7. 数据库数据生成word文档的方法

    从库里取纪录生成word文档. 主要有这么几种方法: 1.改头,就是象excel似的 Response.Buffer = TRUE Response.ContentType = "appli ...

  8. 我鼓捣的数据库数据生成word文档的方法!

    <script language="javascript" src="/js/content_top.js" type="text/javasc ...

  9. 易语言逐条读access数据_[原创]用易语言对ACCESS数据库进行基本操作

    用易语言对ACCESS数据库进行基本操作 本人弄这个例程前,对数据库知道的不多,仅会一些简单的操作,根本不懂SQL的命令,可以说,在这方面的知识就是一空二白. 在易语言的论坛里,我能找到许多关于易语言 ...

  10. 易语言逐条读access数据_易语言对ACCESS数据库基础(适合新手)

    学习使用数据库,难免要使用SQL语句.外部数据库使用SQL语句可以快速地完成对数据库的种种操作,如:查询.修改.插入记录.删除记录等.至于更多的,比如:创建表.删除表.加密数据等等,等我们能够比较熟练 ...

最新文章

  1. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  2. Tomcatserverhttps协议配置简单介绍
  3. matlab中plot同时绘制两个函数时向量长度不一致的解决办法
  4. 【C语言学习笔记】字符串拼接的3种方法 .
  5. boost::condition_variable相关的测试程序
  6. Netty事件传播机制
  7. KTV歌曲推荐-深入浅出协同过滤
  8. php redis 读写分离类,yii实现redis读写分离
  9. java爬虫之基于httpclient的简单Demo(二)
  10. [bash] 打包某目录(可以是绝对路径)下的指定扩展名的文件
  11. 程序员创业的两难困境
  12. matlab实现cnn代码,CNN 经典的卷积神经网络MATLAB实现源码,可直接运行。 276万源代码下载- www.pudn.com...
  13. 硅谷35岁以后的程序员都在做什么?
  14. 【数据结构笔记14】微软面试经典 - 逆转链表问题(Reversing Linked List)
  15. 微信小程序弹框显示自定义内容(1)
  16. safari查看html代码,iPhone不越狱safari查看网页源代码方法
  17. 微信翻译,快把上海老外搞疯了
  18. Apollo微服务配置中心详解
  19. word中如何设置奇偶页不同的页眉和页脚,怎么从指定页开始加页码
  20. MVC框架中分页的实现

热门文章

  1. [JSOI2008] 最小生成树计数
  2. SpringMVC实现AJax以及RestFull风格
  3. 札记:Fragment基础
  4. IoC、DI、AOP
  5. Android中删除照片操作
  6. 使用include实现布局(layout)复用
  7. windows下重设mysql的root密码
  8. Linux如何产看系统信息
  9. 栈的理解以及如何计算程序所需栈的大小并在IAR中设置栈
  10. [转]Android 超高仿微信图片选择器 图片该这么加载