实例中主要目的是解析jxl使用流程以及jxl绘制Excel的写法思路,代码掩去了项目中的真实数据,请根据需求酌情修改,如果有帮助到有需要的人,不胜欢喜。

Dao层为查询数据库,返回list数据,此处省略。

==============service

public void exportExcel(HttpServletResponse response){
try{
//列坐标
int columIndex[] = {0,1,2,3,4,5,6,};
//每一列宽度
int colwidth[] = {10,10,10,10,10,10};
//每一列字段key
String[] dataKey = {"test1","test2","test3","test4","test5","test6"};
//列表数据
List<Map<String,Object>> dataList = tableTestDao.findTableData();
//合计每一列的key
String[] countKey = {"test1","test2","test3","test4","test5","test6"}; //导出execl
tableExcelService.exportExcel( FILE_NAME, response, "测试表格", columIndex, colwidth, dataKey, dataList, countKey, "three" );
}catch (Exception e) {
throw new BusinessException(e, ExceptionEnum.NULL, e.getMessage());
}
}

=================TableExcelService工具类方法(1)

    /**
* 导出excel
* @param fileName文件名
* @param response
* @param title标题名
* @param columIndex列坐标
* @param colwidth每一列宽度
* @param dataKey每一列字段key
* @param dataList列表数据
* @throws Exception
*/
public void exportExcel(String fileName,HttpServletResponse response,String title,
int[] columIndex,int[] colwidth,String[] dataKey,List<Map<String,Object>> dataList,
String falg ) throws Exception{
OutputStream os=null;
WritableWorkbook workbook=null;
try{
os=response.getOutputStream();
fileName=URLEncoder.encode(fileName,"GB2312");
fileName=URLDecoder.decode(fileName, "ISO8859_1");
response.setHeader("Content-Disposition","attachment;filename="+fileName+".xls");
response.setContentType("application/msexcel");
workbook = Workbook.createWorkbook(os);
// 自定义的颜色
Color color = Color.decode("#CCFFCC");
workbook.setColourRGB(Colour.GREEN, color.getRed(),color.getGreen(), color.getBlue());
//创建excel第一个sheet页
WritableSheet sheet = workbook.createSheet("Sheet1", 0);
//创建标题和表头
if("three".equals( falg )||"four".equals( falg )){
sheet = createTableHead(sheet,title,columIndex,colwidth);
}else if("one".equals( falg )){
sheet = createTableHeadOne(sheet,title,columIndex,colwidth);
}else if("two".equals( falg )){
sheet = createTableHeadTwo(sheet,title,columIndex,colwidth);
}
//表格样式
WritableCellFormat tdWcfF = new WritableCellFormat();
tdWcfF.setBorder(Border.ALL, BorderLineStyle.THIN);
tdWcfF.setAlignment(Alignment.CENTRE);
tdWcfF.setVerticalAlignment(VerticalAlignment.CENTRE);
//填入列表数据
int startRow = 4;//从第五行开始填入值
Map<String,Object> dataMap = null;
Object obj=null;
for(int row = 0;row <dataList.size();row++){
dataMap = dataList.get( row );
for(int col=0;col<dataKey.length;col++){
obj = dataMap.get(dataKey[col]);
sheet.addCell(new Label(col,row+startRow,obj==null?"0":obj.toString(),tdWcfF));
}
}
//合计
if("three".equals( falg )||"four".equals( falg )){
int numStartRow = startRow+dataList.size();//到第几行了
sheet.mergeCells(0, numStartRow, 1, numStartRow);
sheet.addCell(new Label(0,numStartRow,"测试",tdWcfF));
for(int col=0;col<countKey.length;col++){
obj = countMap.get(countKey[col]);
sheet.addCell(new Label(col+2,numStartRow,obj==null?"0":obj.toString(),tdWcfF));
}
}else if("one".equals( falg )){
int numStartRow = startRow+dataList.size();//到第几行了
sheet.mergeCells(0, numStartRow, 0, numStartRow);
sheet.addCell(new Label(0,numStartRow,"测试",tdWcfF));
for(int col=0;col<countKey.length;col++){
obj = countMap.get(countKey[col]);
sheet.addCell(new Label(col+1,numStartRow,obj==null?"0":obj.toString(),tdWcfF));
}
}else if("two".equals( falg )){
int numStartRow = startRow+dataList.size();//到第几行了
sheet.mergeCells(0, numStartRow, 1, numStartRow);
sheet.addCell(new Label(0,numStartRow,"测试",tdWcfF));
for(int col=0;col<countKey.length;col++){
obj = countMap.get(countKey[col]);
sheet.addCell(new Label(col+2,numStartRow,obj==null?"0":obj.toString(),tdWcfF));
}
} workbook.write();
}catch (Exception e) {
throw new RuntimeException(e.getMessage(),e);
}finally{
if(workbook != null) {
workbook.close();
workbook=null;
}
if(os != null) {
os.flush();
os.close();
os=null;
}
}
}

===========TableExcelService工具类方法(2)

   /**
* 创建标题和表头
* @param sheet
* @param title
* @return
* @throws Exception
*/
private WritableSheet createTableHead(WritableSheet sheet,String title,
int[] columIndex,int[] colwidth) throws Exception{
/*****格式设置******/
//标题
WritableCellFormat titleWcfF = new WritableCellFormat();
//边线细线
titleWcfF.setBorder(Border.ALL, BorderLineStyle.THIN);
//水平居中
titleWcfF.setAlignment(Alignment.CENTRE);
//垂直居中
titleWcfF.setVerticalAlignment(VerticalAlignment.CENTRE);
//设置显示的字体样式,字体,字号,是否粗体,字体颜色
titleWcfF.setFont(new WritableFont(WritableFont.createFont("楷体_GB2312"),14,WritableFont.NO_BOLD,false,
UnderlineStyle.NO_UNDERLINE,Colour.BLACK));
//表头
WritableCellFormat thWcfF = new WritableCellFormat();
thWcfF.setBorder(Border.ALL, BorderLineStyle.THIN);
thWcfF.setAlignment(Alignment.CENTRE);
thWcfF.setVerticalAlignment(VerticalAlignment.CENTRE);
thWcfF.setBackground(jxl.format.Colour.GREEN);
//创建标题,列,行,到第19列,到第0行
sheet.mergeCells(0, 0, 19, 0);
sheet.addCell(new Label(0,0,title,titleWcfF));
//表头创建
sheet.mergeCells(0, 1, 1, 3);//名称
sheet.addCell(new Label(0,1,"测试1",thWcfF));
//业务数(单位:个)列,行,到第19列,到第1行
sheet.mergeCells(2, 1, 19, 1);
sheet.addCell(new Label(2,1,"测试2",thWcfF));
sheet.mergeCells(2, 2, 10, 2);
sheet.addCell(new Label(2,2,"测试3",thWcfF));
sheet.mergeCells(11, 2, 19, 2);
sheet.addCell(new Label(11,2,"测试4",thWcfF));
sheet.mergeCells(2, 3, 3, 3);
sheet.addCell(new Label(2, 3,"测试5",thWcfF));
sheet.mergeCells(4, 3, 5, 3);
sheet.addCell(new Label(4, 3,"测试6",thWcfF));
//单个单元格表头第6列,第3行,单元格内容,单元格样式
sheet.addCell(new Label(6, 3,"测试7",thWcfF));
sheet.addCell(new Label(7, 3,"测试8",thWcfF));
sheet.addCell(new Label(8, 3,"测试9",thWcfF));
sheet.addCell(new Label(9, 3,"测试10",thWcfF));
sheet.addCell(new Label(10, 3,"测试11",thWcfF));
sheet.mergeCells(11, 3, 12, 3); //设置列宽
for(int i=0;i<columIndex.length;i++){
sheet.setColumnView(columIndex[i], colwidth[i]);
}
return sheet;
}

jxl应用事例的更多相关文章

  1. java的jxl技术导入Excel

    项目结构: http://www.cnblogs.com/hongten/gallery/image/112177.html 在项目中我们看到Reference Libraries中的jxl.jar包 ...

  2. jxl导入导出实例

    1 package com.tgb.test; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.Ar ...

  3. jxl读取Excel表格数据

    调用jxl包实现Excel表格数据的读取,代码如下: import java.io.File; import java.io.IOException; import java.util.ArrayLi ...

  4. 通过jxl 读取excel 文件中的日期,并计算时间间隔

    java读取excel里面的日期会出现相差8小时的问题. 比如excel里面有一个日期是:2012-7-2 17:14:03秒,用Cell cell=readSheet.getCell(colNo, ...

  5. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  6. 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.j ...

  7. JXL操作Excel

    jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI.其中功能相对POI比较弱一点.但jExcelAPI对中文 ...

  8. OAF_文件系列11_实现OAF读写Excel包JXL和POI的区别(概念)

    20150803 Created By BaoXinjian

  9. OAF_文件系列10_实现OAF将数据资料导出Excel到本地JXL(案例)

    20150729 Created By BaoXinjian

随机推荐

  1. docker 小技巧 docker network create br-name 指定IP地址

    在某些情况下,使用 docker network create br-name 命令创建网络的时候,会创建一个新的网桥,该网桥的默认IP地址为172.18.0.0\16(或相临的IP地址段) 这个ip ...

  2. Django缓存机制--rest_framework中节流源码使用的就是django提供的缓存api

    一.配置缓存   https://www.jb51.net/article/124434.htm 二.缓存全站.页面.局部   三.自我控制的简单缓存API API 接口为:django.core.c ...

  3. HttpInvoker http请求工具类

    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import j ...

  4. 深入理解AMQP协议转载

    转自https://blog.csdn.net/weixin_37641832/article/details/83270778 文章目录 一.AMQP 是什么二.AMQP模型工作过程深入理解三.Ex ...

  5. MySQL系列:性能优化

    1. 优化简介 MySQL性能优化包括:查询优化.数据库结构优化.MySQL服务器优化等. 2. 查询优化 2.1 分析查询语句 MySQL提供EXPLAIN和DESCRIBE,用来分析查询语句. E ...

  6. Python——Set集合

    一.定义 Set集合用于表示相互之间无需的一种组合对象,包括:并集.交集.补集 二.集合的两种模式 sample = set()  初始化普通集合 sample = frozenset() 初始化不可 ...

  7. JQuery的Ajax技术

    jquery是一个优秀的js框架,自然对js原生的ajax进行了封装, 封装后的ajax的操作方法更简洁,功能更强大,与ajax操作 相关的jquery方法有如下几种: Ajax 请求 $.ajax( ...

  8. Spring MVC 使用介绍(六)—— 注解式控制器(二):请求映射与参数绑定

    一.概述 注解式控制器支持: 请求的映射和限定 参数的自动绑定 参数的注解绑定 二.请求的映射和限定 http请求信息包含六部分信息: ①请求方法: ②URL: ③协议及版本: ④请求头信息(包括Co ...

  9. mysql如何直接查出从1开始递增的数

    比如我的一个sql语句 SELECT nick_name FROM t_user ; 得到的结果是:张三李四王五 而现在我想要的结果是:1 张三2 李四3 王五 应该如何写sql呀? 答案就是用 @r ...

  10. git 操作命令详解

    git 什么是git 开源的分布式版本控制系统, 用于高效的管理大小项目和文件 代码管理工具 防止代码丢失, 做备份 代码版本管控, 设置节点, 多版本切换 建立分支各自开发, 互不影响, 方便合并 ...