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 ){
//创建一个EXCEL
WritableWorkbook 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() {
@Override
public 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;
}

jxl读数据库数据生成xls 并下载的更多相关文章

  1. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  2. Java读取数据库数据生成柱状图

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

  3. 数据库数据生成Excel表格(多用在导出数据)

    最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...

  4. EasyUI_tree根据数据库数据生成树形结构JSON格式

    @Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...

  5. phpexcel生成excel并下载

    Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...

  6. django根据已有数据库表生成model类

    django根据已有数据库表生成model类 创建一个Django项目 django-admin startproject 'xxxx' 修改setting文件,在setting里面设置你要连接的数据 ...

  7. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  8. DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)

    前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...

  9. Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页

    models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...

随机推荐

  1. Ref和Out参数的区别(转帖)

    首先,如果不使用这两个关键字,那是什么样 呢? 看下面的例子: using System;   class Test   {   static void Swap(ref int x, ref int ...

  2. Linux系统安装-系统分区

    ctrl+alt+enter全屏

  3. 夺命雷公狗-----React_native---5---初步读懂代码模式

    我们的代码一般导出会用两种方式,如下所示: 这两种方法都是可以的.... 引入方式其实也是很简单的,如下所示: 这样即可...

  4. win7远程桌面连接windows2008服务器,连接启动很慢。我是这样解决的。

    1.在本地链接属性中把IPv6勾选取消掉. 2.在window命令中运行 (cmd) netsh int tcp setglobal autotuninglevel=disable 祝君成功!

  5. uexWeiXin插件

    uexWeiXin插件 接入指引 常用功能 接入指引 Android 准备一个应包名:平台默认包名:org.zywx.wbpalmstar.widgetone.uex加上应用id AppCan平台默认 ...

  6. Unable to execute dex: GC overhead limit exceeded

    Android打包时下面的错误: Unable to execute dex: GC overhead limit exceeded GC overhead limit exceeded 解决的方法: ...

  7. Windows7下的免费虚拟机(微软官方虚拟机)

    前言: 不是说windows7自带的虚拟机最好用,而是他是正式版的,免费的,只要你是windows7用户,就可以免费使用: 其实我最推荐的还是Vmware: 微软为什么提供免费的虚拟机呢? 因为vis ...

  8. C#控制台项目更改运行文件

    这个是极光推送的C# demo,里面有几个文件,要先后运行.这是第一次遇见,所以一下子找不到北,摸索了好一会儿才知会.于是做了这面一个记录. 右击鼠标,查看属性弹出这个这面,然后选择要启动的对象.保存 ...

  9. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    手机客户端向服务器提交Http请求时,Tomcat抛出错误: 十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Proces ...

  10. YTU 3027: 哈夫曼编码

    原文链接:https://www.dreamwings.cn/ytu3027/2899.html 3027: 哈夫曼编码 时间限制: 1 Sec  内存限制: 128 MB 提交: 2  解决: 2 ...