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. Leetcode: Find Leaves of Binary Tree

    Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves ...

  2. listener does not currently know of SID项目部署报数据库错

    百度以后是数据库配置错误啊,但是我觉得就是对的呀,也去验证过了. 反正知道问题就是在databaseurl那里,但是原因是什么呢?其他地方部署都是好的呀! 集群问题啊,数据库人员采用集群方式配置数据库 ...

  3. Android targetSdkVersion 对生命周期的影响

    一直都认为当手机进入休眠时,Activity的生命周期会进入onPause()-->onStop()状态,但是今天偶然遇到了一个百思不得其解的问题,如果在AndroidMainfest.xml文 ...

  4. 为什么使用spring

    现在基本的项目都会用到spring框架,那么我们为什么要使用spring呢?下面为大家总结一下,希望大家指正. spring是一个轻量级的容器框架,其核心是IOC(控制反转也叫依赖注入)和AOP(面向 ...

  5. Python快速建站系列-Part.Five.3-个人主页及资料页面

    |版权声明:本文为博主原创文章,未经博主允许不得转载. 第五部分最后一节,完成个人主页里资料页面的个人资料的展示和修改功能,不过毕竟功能比较少,个人资料其实只有昵称一项,手动滑稽. 一如既往先写出来u ...

  6. python学习笔记系列----(五)输入和输出

    这一章主要是讲述程序展示其数据的一些方法,一般都是直接按照一定的格式输出在屏幕,或者写入到文件以便以后使用.按照一定格式的输出,在python中实际就是对str的操作,主要就是介绍了formart() ...

  7. python学习笔记系列----(三)数据结构

    这一章主要是介绍了python一些常用的数据结构,比如list,tuple,dictionary,set,以及一些实用遍历技巧,主要讲的还是list. 3.1 list 主要介绍了list的一些常用的 ...

  8. linux虚拟机上不了网--桥接方式--问题一直未解决

    转载的:可是自己的虚拟机就是上不了网,无线网卡该配的也配了还是不行,如果真有台物理机器就行了,省了好多事:但是模拟性能时肯定不行了:有人知道是什么原因不? 虚拟机网络模式 无论是vmware,virt ...

  9. C#的HTTP协议中POST与GET的区别

    引言 HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来.但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态 ...

  10. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...