使用JXL进行后台生成excel文件
2016-07-05 15:14
309 查看
现在公司项目,由于业务需要进行进行利用表数据进行导出对应的excel表出来,鉴于自己使用的是JXL,就用JXL进行讲述吧,
JXL使用比较简单明了,也支持中文,API也比较全,并且也支持单元格的定义。下面贴上自己稍微封装好的源码,可能封装得不是很好,不过也请海涵呢。
一.下载对应jxl.jar包,导入程序,或者使用maven引入依赖包
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6</version>
</dependency>
此处提供个jxl 的jar下载路径:http://download.csdn.net/detail/beu425210220/9567828 点击打开链接
二.然后详情看源码,大概步骤是
1.创建WritableWorkbook对象,
2.利用WritableWorkbook.createSheet()生成WritableSheet表内容页
3.利用WritableSheet设置列的视图setColumnView(可有可无,有默认的)
4.双循坏写入head跟data数据库。
4.进行WritableWorkbook的写操作。
源代码如下:
JXL使用比较简单明了,也支持中文,API也比较全,并且也支持单元格的定义。下面贴上自己稍微封装好的源码,可能封装得不是很好,不过也请海涵呢。
一.下载对应jxl.jar包,导入程序,或者使用maven引入依赖包
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6</version>
</dependency>
此处提供个jxl 的jar下载路径:http://download.csdn.net/detail/beu425210220/9567828 点击打开链接
二.然后详情看源码,大概步骤是
1.创建WritableWorkbook对象,
2.利用WritableWorkbook.createSheet()生成WritableSheet表内容页
3.利用WritableSheet设置列的视图setColumnView(可有可无,有默认的)
4.双循坏写入head跟data数据库。
4.进行WritableWorkbook的写操作。
源代码如下:
/** * * @param file 要生成的excel文件 * @param sheetTitle 工作表标题 * @param headList 表头List * @param dataList 数据List * @param isSeq 是否需要序号列 * @return true or false */ private boolean exportToExcel(File file, String sheetTitle, List headList, List> dataList, boolean isSeq) { logger.info("list:{" + dataList + "}"); try { WritableWorkbook wwb; wwb = Workbook.createWorkbook(file); WritableSheet ws1 = wwb.createSheet(sheetTitle, 0); // 设置行高 ws1.setRowView(0, 600, false); // 按照需求文档中的模版设置默认附件一的列宽 int k = 0; if (isSeq == true) { ws1.setColumnView(k++, 10); } for (String head : headList) { ws1.setColumnView(k++, 20); } /* 定义附件一字体样式制定 */ // 表头 WritableFont font1_tableName = new WritableFont( WritableFont.createFont("宋体"), 12, WritableFont.BOLD); // 内容 WritableFont font1_tableContent = new WritableFont( WritableFont.createFont("仿宋_GB2312"), 10, WritableFont.NO_BOLD); /* 定义附件一显示格式, */ // 表头 WritableCellFormat wcf1_tableName = new WritableCellFormat( font1_tableName); wcf1_tableName.setAlignment(Alignment.CENTRE); wcf1_tableName.setVerticalAlignment(VerticalAlignment.CENTRE); wcf1_tableName.setWrap(true); // 下面定义的是特殊说明居中部分 WritableCellFormat wcf1_tableContent_center = new WritableCellFormat( font1_tableContent, NumberFormats.TEXT); wcf1_tableContent_center.setAlignment(Alignment.CENTRE); wcf1_tableContent_center .setVerticalAlignment(VerticalAlignment.CENTRE); wcf1_tableContent_center.setBorder(Border.ALL, BorderLineStyle.THIN); wcf1_tableContent_center.setWrap(true); // 下面定义的是特殊说明要左对齐部分 WritableCellFormat wcf1_tableContent_left = new WritableCellFormat( font1_tableContent, NumberFormats.TEXT); wcf1_tableContent_left.setAlignment(Alignment.LEFT); wcf1_tableContent_left .setVerticalAlignment(VerticalAlignment.CENTRE); wcf1_tableContent_left.setBorder(Border.ALL, BorderLineStyle.THIN); wcf1_tableContent_left.setWrap(true); // 下面定义的是特殊说明要右对齐部分 WritableCellFormat wcf1_tableContent_right = new WritableCellFormat( font1_tableContent, NumberFormats.TEXT); wcf1_tableContent_right.setAlignment(Alignment.RIGHT); wcf1_tableContent_right .setVerticalAlignment(VerticalAlignment.CENTRE); wcf1_tableContent_right.setBorder(Border.ALL, BorderLineStyle.THIN); wcf1_tableContent_right.setWrap(true); // 是否写入表头 int i = 0; if (headList != null && headList.size() > 0) { // 循环写入表头 int j = 0; if (isSeq == true) {// 判断是否需要序号列 ws1.addCell(new Label(j++, 0, "序号", wcf1_tableName)); } for (String head : headList) { ws1.addCell(new Label(j++, 0, head, wcf1_tableName)); } i++; } // 数据从第二行开始 for (List subList : dataList) { int j = 0; if (isSeq == true) {// 判断是否需要序号列的内容列 ws1.addCell(new Label(j++, i, i + "", wcf1_tableContent_right)); } for (String data : subList) { ws1.addCell(new Label(j++, i, data, wcf1_tableContent_left)); // logger.info("j:["+j+"],i:["+i+"]"+",data:{"+data+"}"); } i++; } // 写入Exel工作表 wwb.write(); // 关闭Excel工作薄对象 wwb.close(); } catch (Exception ex) { logger.error(ex.getMessage(), ex); ex.printStackTrace(); return false; } return true; }
相关文章推荐
- 储蓄银行不良贷款增加
- OPENGL消除棱角
- ArrayList 源码分析
- Java对MySQL数据库进行连接、查询和修改
- hdu_5145_NPY and girls(莫队算法+组合)
- 拓展jquery.slotmachine.js,设置停止位置
- redis 高速缓存框架
- login SMTP send mail error : Unable to read data from the transport connection: net_io_connectionclosed
- 【转载】怎么理解Condition
- storm基础系列之二----zookeeper的作用
- Super Ugly Number
- configparser模块
- Java正则表达式防注入小例子
- DBUtil简单代码实现
- Spring官网下载dist.zip的几种方法
- 记一次Oracle dataguard不传输归档问题
- 借鉴
- 字符串-英语数字转换器(数据结构基础 第4周)
- fir.im 内测应用同包名多个版本
- 使用redis订阅/发布创建简单聊天室