使用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 ...
随机推荐
- JavaScript中的各种奇葩问题
原文:JavaScript中的各种奇葩问题 JavaScript浮点数 var a = (0.1 + 0.2) + 0.3; var b = 0.1 + (0.2 + 0.3); console.lo ...
- Python开发一个csv比较功能相关知识点汇总及demo
Python 2.7 csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二 ...
- 现代JVM内存管理方法的发展历程,GC的实现及相关设计概述(转)
JVM区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园).Survivor Space(幸存者区).Tenured Gen(老年代-养老区). 非heap区又分: ...
- Android Animation 动画Demo(Frame帧动画)
上一页介绍Animation动画第一:Tween吐温动画. 本文介绍了以下Animation也有动画的形式:Frame帧动画. Frame动画是一系列照片示出的顺序按照一定的处理,和机制,以放电影很阶 ...
- Skype发布视频API
原文:Skype发布视频API 相信很多人对Skype多少都应该有一些了解,如果以前没有使用过它的服务的话,也应该在最近的新闻中听说过它的大名.因为,它和我们每天都在接触的公司--Mircrosoft ...
- BZOJ 1025 SCOI2009 游戏 动态规划
标题效果:特定n.行定义一个替代品1~n这种更换周期发生后,T次要(T>0)返回到原来的顺序 找到行的所有可能的数 循环置换分解成若干个,然后行位移数是这些周期的长度的最小公倍数 因此,对于一些 ...
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
原文:ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 在上一篇中说了如何实现最近路径分析,本篇将讨论如何实现最近设施点分析. 最近设施点分析实际上和路径分析有些相识,实现的过程 ...
- poj 1679 The Unique MST 【次小生成树】【模板】
题目:poj 1679 The Unique MST 题意:给你一颗树,让你求最小生成树和次小生成树值是否相等. 分析:这个题目关键在于求解次小生成树. 方法是,依次枚举不在最小生成树上的边,然后加入 ...
- 随记一个C的毫秒级群PING
正好公司为了检测前台网络,力图收集有力证据与某CDN PK,所以随手写了一个群PING的程序. 写的内容比较简单,没有去特别追求线程效率,也没有去用LINUX 2.6+的殿堂级神器,以追求实现效率为主 ...
- MVC验证02-自定义验证规则、邮件验证
原文:MVC验证02-自定义验证规则.邮件验证 本文体验MVC自定义验证特性,来实现对邮件的验证.对于刚写完的自定义验证特性,起初只能支持后端验证.如果要让前端jquery支持,还必须对jquery的 ...