使用POI导出excel
引言:对于excel的导出,首先是将数据写到WorkBook中,然后将book以流的形式写出即可,看代码:
public void exportResultInfo(String fileName,String savePath) throws Exception{
HSSFWorkbook book = new HSSFWorkbook();
String[] greenUrlLabel = new String[] { "A", "B", "C",
"D", "E", "F" };
createSheet2(book, "result_info", greenUrlLabel, dataList);
downLoad(book, fileName, savePath);
}
部分代码解释: dataList是从数据中获取到的数据,也就是你想导出的数据
createSheet2(book, "result_info", greenUrlLabel, dataList);将数据写到book中
downLoad(book, fileName, savePath);将book写到excel中,对应的方法分别如下。
将数据写到book中:
public void createSheet2(HSSFWorkbook book, String sheetName,
String[] label, List<Object[]> list) { // 单sheet 最大行数
// final Integer MAX_ROW_SIZE = 65536;
final Integer MAX_ROW_SIZE = 65535;
// 创建Sheet并设置sheetName
HSSFSheet sheet = null; // sheet number
int sheetNum = 0; // sheet data row
int rowCount = 0;
sheet = book.createSheet(sheetName);
sheetNum++;
// 首行填写表头
HSSFRow row00 = sheet.createRow(rowCount++);// 创建行 rowCount+1
for (int t = 0; t < label.length; t++) {
HSSFCell cell0 = row00.createCell(t);
cell0.setCellValue(label[t]);
} // 数据行遍历
if (list != null && list.size() > 0) {
for (int i = 1; i <= list.size(); i++) { // rowCount 为0时 新sheet初始化、表头数据初始化
if (rowCount == 0) {
// 创建新Sheet
sheet = book.createSheet(sheetName + "_" + sheetNum);
sheetNum++; // 首行填写表头
HSSFRow row0 = sheet.createRow(rowCount++);// 创建行
// rowCount+1
for (int t = 0; t < label.length; t++) {
HSSFCell cell0 = row0.createCell(t);
cell0.setCellValue(label[t]);
} } // 创建数据行
HSSFRow row = sheet.createRow(rowCount++); // 第二行开始
Object[] objects = list.get(i - 1); // 填写数据集合的第一行 // 列循环
if (objects != null && objects.length > 0) {
for (int j = 1; j <= objects.length; j++) {
// 创建Cell
HSSFCell cell = row.createCell(j - 1); // 获取数据对象
Object obj = objects[j - 1];
// 填写数据
cell.setCellValue(new HSSFRichTextString(
getStringValueFromObject(obj)));
}
} // rowcount 归零判断 归零 新Sheet页面的开始
if (rowCount == MAX_ROW_SIZE) {
rowCount = 0;
}
Contants.expCount++;
}
}
}
部分代码解释:由于早期的excel最大的行数只能到65535,所以在这地方做了判断,但数据条数大于这个数的时候,重新开一个sheet页,进行写入。
将book写到excel中:
public String downLoad(HSSFWorkbook workbook, String fileName,
String savePath) throws IOException {
FileOutputStream fos = null;
ByteArrayOutputStream byteos = null;
try {
// 将HSSFWorkbook 写入字节流
byteos = new ByteArrayOutputStream();
workbook.write(byteos); // 获取所有字节及其长度
byte[] xlsBytes = byteos.toByteArray();
int length = xlsBytes.length;
// 获取 流ServletOutputStream
File file = new File(savePath + File.separator + fileName);
if (!file.getParentFile().exists())
file.getParentFile().mkdirs();
if (!file.exists())
file.createNewFile();
fos = new FileOutputStream(file);
fos.write(xlsBytes);
System.out.println("End of transform the file :" + fileName);
fos.flush();
} catch (final IOException e) {
throw e;
} finally {
// 关闭字节流
if (byteos != null) {
byteos.close();
}
if (fos != null)
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
这块就是将book写到对于的excel文件中,这里的filename可以自己给定。对于解析所需要的包的可以在这里下载http://download.csdn.net/detail/javaweiming/5849101。
使用POI导出excel的更多相关文章
- poi导出excel
Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...
- POI导出excel的简单demo
目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...
- [转载]poi导出excel,可以自定义保存路径
poi导出excel比js导出excel安全性更好,在使用poi导出excel时,先要导入poi-3.5-FINAL-20090928.jar包到你项目的lib目录下,我这里选择是3.5版的 1.ac ...
- POI导出EXCEL经典实现
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
- 关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生内存溢出问题,SXSSFWorkbook是一种大数据量导出格式,csv是另一种excel导出的一种轻快的 ...
- 关于poi导出excel方式HSSFWorkbook(xls).XSSFWorkbook(xlsx).SXSSFWorkbook.csv的总结
1.HSSFWorkbook(xls) import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermo ...
随机推荐
- springMVC框架建设进程
1.创建Dynamic Web Project 2.导入spring和springmvc所须要的文件 3.配置web.xml文件 3.1 监听spring上下文容器 3.2 载入spring的xml文 ...
- Oracle 多表关联更新
drop table course; create table course ( id integer, teacherNo integer, teacherDesc ), teacherName ) ...
- jvm对大对象分配内存的特殊处理(转)
前段日子在和leader交流技术的时候,偶然听到jvm在分配内存空间给大对象时,如果young区空间不足会直接在old区切一块过去.对于这个结论很好奇,也比较怀疑,所以就上网搜了下,发现还真有这么回事 ...
- RTP 记录 log 该机制
我们 RCV 在这里,经常跑concurrent request RTP: Receiving Transaction Processor, 它主要是用来处理 RCV_TRANSACTIONS_INT ...
- EF中的transaction的使用范例
注意一点: 在EF中使用事物后,对于一个新增的model,在saveChanges后,可以得到该实体的自增ID,但在提交事物之前, 该数据并没有真正的新增到DB中,但此时可以得到model新增的自增I ...
- 《STL源代码分析》---stl_list.h读书笔记
STL在列表list它是一种经常使用的容器.list不连续双向链表在内存,而且是环形. 理解列表如何操作的详细信息,然后.阅读STL名单上的代码是最好的方法. G++ 2.91.57.cygnus\c ...
- jquery中DOM的操作方法
先介绍几个比较简单的方法,不经常用到,做个记录 1. filter() 方法 顾名思义,filter是一个过滤器,如果给定表示 DOM 元素集合的 jQuery 对象,.filter() 方法会用匹配 ...
- javascript权威指南(1)
javascript常用知识点: http://www.cnblogs.com/pingfan1990/p/4309223.html Function.prototype.bind()Function ...
- Android L下载
Android L千呼万唤最终出来了,那么我们先下载下来一睹为快,那么怎么去拿到最新的L的分支 那依照傻瓜步骤总结下(Linux Ubuntu) 1.获取repo文件 (1).curl https:/ ...
- JavaScript Date对象介绍
原文:JavaScript Date对象介绍 Date 日期和时间对象 1. 介绍 Date对象,是操作日期和时间的对象.Date对象对日期和时间的操作只能通过方法. 2. 构造函数 2.1 new ...