使用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 ...
随机推荐
- 【剑指offer】数字数组中只出现一次(2)
转载请注明出处:http://blog.csdn.net/mmc_maodun/article/details/27800577 题目:一个int数组中有三个数字a.b.c仅仅出现一次,其它数字都出现 ...
- react.js 从零开始(一)
React 是什么? 网络上的解释很多...我这里把他定义为 通过javascript 的形式组件化 html的框架... React 仅仅是 VIEW 层. React 提供了模板语法以及一些函数钩 ...
- Effective C++学习笔记(Part One:Item 1-4)
最近的最终effectvie C++仔细阅读侧,我很惊讶C++动力和魅力.最近的" LL最近记得阅读体验和读书笔记其.必要查找使用,是什么假设总结不合适.欢迎批评: 如今仅仅列出框架,近期会 ...
- 使用 CodeIgniter 框架快速开发 PHP 应用(一)
原文:使用 CodeIgniter 框架快速开发 PHP 应用(一) 对 CodeIgniter 的介绍大多数PHPer都想写出运行状态良好的应用程序,而且希望尽可能做得简单且不费事.这篇文章是有关 ...
- Android中的“再按一次返回键退出程序”实现[转]
用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...
- XSS学习笔记(五)-XSS防御
如果只生产XSS的地方都与输入或输出相关联的.所以错过了主要矛盾.而且,我们将有一个解决问题的办法:您可以输入端砚格过滤,是可能的过滤输出时间,输出到用户的GET或POST中是否有敏感字符: 输入过滤 ...
- 如何让虚拟机识别插入的USB闪存驱动器
首先,打开虚拟机,再就是工具栏 有一台虚拟机 -> 移动设备 -> usb ->欧克. 版权声明:本文博主原创文章,博客,未经同意不得转载.
- 《STL源代码分析》---stl_list.h读书笔记
STL在列表list它是一种经常使用的容器.list不连续双向链表在内存,而且是环形. 理解列表如何操作的详细信息,然后.阅读STL名单上的代码是最好的方法. G++ 2.91.57.cygnus\c ...
- GG同步sqlserver报错一个案例 Invalid date format
在里面Oracle表同步sqlserver时间,在sqlserver当应用程序数据的结束.您可能会遇到这个错误. 2014-05-17 17:20:24 WARNING OGG-01154 SQL e ...
- 【iOS发展-70】点菜系统案例:使用文本框inputView和inputAccessoryView串联UIPickerView、UIDatePicker和UIToolBar
(1)效果 (2)先在storyboard中设计界面,然后源码(直接在ViewController中码) #import "ViewController.h" @interface ...