使用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 ...
随机推荐
- 百度官方wormHole后门检测记录(转)
本次这个安卓后门真是哔了狗了,刚加入大安卓阵营就出了这个篓子,跟你root不root和什么安卓版本没有版毛钱关系,完全是百度SDK官方提供的后门,不是漏洞,人为的. 乌云地址:http://drops ...
- Andriod Studio科普文章——3.大约gradle常见问题插头
1.andriod gradle插件版本号过低. 错误位置: dependencies{ classpath 'com.android.tools.build:gradle:0.10.2' } 提示信 ...
- TFS 2010 使安装更容易,让VSS历史
一转眼VS 2010 RC(Release Candidate)版本号已经公布一月多了,RTM(Release To Manufacturer)版本号也快妥了,已经进入了最后的倒计时,仅仅等4月12号 ...
- Matrix (二维树状数组)
Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...
- HDU1051 Wooden Sticks 【贪婪】
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 关于C#操作INI文件的总结
原文:关于C#操作INI文件的总结 INI文件其实是一种具有特定结构的文本文件,它的构成分为三部分,结构如下: [Section1]key 1 = value2key 1 = value2--[S ...
- [Java] 一、对象的创建 & 销毁
*1.考虑静态工厂方法(static factory method)代替构造器?!优势?不足? 服务提供者架构: 1.服务接口(Service Interface) -- 提供者实现的: 2.提供者注 ...
- 每日算法37:Rotate Image (图像旋转)
You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwise). ...
- 【百度地图API】如何利用地图API制作汽车沿道路行驶的动画?——如何获得道路层数据
原文:[百度地图API]如何利用地图API制作汽车沿道路行驶的动画?--如何获得道路层数据 有几个做汽车导航的朋友问我说,他们想在地图上制作一辆车沿着道路行驶的动画.可是,百度地图的道路数据并没有公开 ...
- 勾选Create git respository的作用
在Xcode中创建项目时会弹出Source Control选项,勾选Create git repository选项可以帮助我们对照以前项目中代码中修改的部分,为开发提供方便. 在项目完成到一定程度时, ...