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 ){
//创建一个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 并下载的更多相关文章
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- Java读取数据库数据生成柱状图
此案例是用swing显示数据的.须要引入jfreechart相关包.不同版本号可能包不同样.本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class ...
- 数据库数据生成Excel表格(多用在导出数据)
最近在项目开发中遇到这样一个需求,用户聊天模块产品要求记录用户聊天信息,但只保存当天的,每天都要刷新清空数据,但聊天记录要以Excel的形式打印出来,于是就引出了将数据库的数据导出成Excel表格的需 ...
- EasyUI_tree根据数据库数据生成树形结构JSON格式
@Entitypublic class PubComp { @Id private String aguid; // 菜单ID private String pguid; // 父菜单 private ...
- phpexcel生成excel并下载
Loader::import('PHPExcel.Classes.PHPExcel'); // tp5中只需将phpexcel文件放入extend文件夹中,即可采用该方法引入,需要先 use thin ...
- django根据已有数据库表生成model类
django根据已有数据库表生成model类 创建一个Django项目 django-admin startproject 'xxxx' 修改setting文件,在setting里面设置你要连接的数据 ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- Django数据操作F和Q、model多对多操作、Django中间件、信号、读数据库里的数据实现分页
models.tb.objects.all().using('default'),根据using来指定在哪个库里查询,default是settings中配置的数据库的连接名称. 外话:django中引 ...
随机推荐
- (二)ADS1.2的安装教程以及使用 调试 (不会 AXD 调试工具)
安装教程: 参考百度 http://jingyan.baidu.com/article/cdddd41c7db85253cb00e1ae.html 具体使用看: 杨铸的那本书(嵌入式底层软件驱动开发) ...
- 18.有一个网页地址, 比如PHP开发资源网主页: http://www.phpres.com/index.html,如何得到它的内容?
方法1(对于PHP5及更高版本): $readcontents = fopen("http://www.phpres.com/index.html", "rb" ...
- C#树状图 初始默认选中节点
效果图: <script type="text/javascript"> $(document).ready(function () { GetTree(); GetG ...
- [原创]Android Lollipop (5.0) 原生代码 Settings 首页加载逻辑分析
主入口为com.android.settings.Settings. 这只是一个wrapper的类, 它继承于 SettingsActivity类,并且声明了一堆公有的继承于SettingsActiv ...
- mysql大数据分表后查询
当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度,举例说明: 1亿条数据,分100张表 1.首先创建100张表 $i=0;while($i<=99){echo "$n ...
- Meteor全栈开发平台 - 不仅仅是前端
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .网站上有对应每一 ...
- viewport设置
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable ...
- IOS 7 风格Checkbox
Switchery Switchery is a simple component that helps you turn your default HTML checkbox inputs into ...
- Upnp资料整理
系统,软件和路由器都要打开upnp功能. windows7下,分别启动 function discovery resources publication; Upnp device host; SSDp ...
- 一个可拖拽的DIV框框
http://codepen.io/lrelia/pen/bEyLB 使用了JQuery UI库, draggable来自于JQuery UI库