用poi来导出数据到excel文档
package cn.com.dyg.work.common.utils; import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFWorkbookFactory;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.apache.poi.xssf.usermodel.XSSFWorkbookFactory; import java.util.List; /**
* 导出Excel公共方法
*
* @author yxb
* @version 1.0
*/
public class ExportExcelTool { //显示的导出表的标题
private String title;
//导出表的列名
private String[] rowName; private List<Object[]> dataList;
private boolean xssf; private String[] fieldNames; //构造方法,传入要导出的数据
public ExportExcelTool(String title, String[] rowName, String[] fieldNames, List<Object[]> dataList, boolean xssf) {
this.dataList = dataList;
this.rowName = rowName;
this.title = title;
this.xssf = xssf;
this.fieldNames = fieldNames;
} /**
* Create a new empty Workbook, either XSSF or HSSF depending
* on the parameter
*
* @return The created workbook
*/
public Workbook create() {
if (xssf) {
return XSSFWorkbookFactory.createWorkbook();
} else {
return HSSFWorkbookFactory.createWorkbook();
}
} /*
* 导出数据
* */
public Workbook export() {
try {
Workbook workbook = create(); // 创建工作簿对象
Sheet sheet = workbook.createSheet(title); // 创建工作表 // 产生表格标题行
Row rowm = sheet.createRow(0);
Cell cellTiltle = rowm.createCell(0); rowm.setHeight((short) (25 * 35)); //设置高度 //sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (rowName.length - 1)));
cellTiltle.setCellValue(title); // 定义所需列数
int fieldRow = fieldNames.length;
Row fieldName = sheet.createRow(1); // 在索引2的位置创建行(最顶端的行开始的第二行) fieldName.setHeight((short) (25 * 25)); //设置高度 // 将列头设置到sheet的单元格中
for (int n = 0; n < fieldRow; n++) {
Cell cellRowName = fieldName.createCell(n); //创建列头对应个数的单元格
RichTextString text;
if (xssf)
text = new XSSFRichTextString(fieldNames[n]);
else
text = new HSSFRichTextString(fieldNames[n]);
cellRowName.setCellValue(text); //设置列头单元格的值
} // 定义所需列数
int columnNum = rowName.length;
Row rowRowName = sheet.createRow(2); // 在索引2的位置创建行(最顶端的行开始的第二行) rowRowName.setHeight((short) (25 * 25)); //设置高度 // 将列头设置到sheet的单元格中
for (int n = 0; n < columnNum; n++) {
Cell cellRowName = rowRowName.createCell(n); //创建列头对应个数的单元格
RichTextString text;
if (xssf)
text = new XSSFRichTextString(rowName[n]);
else
text = new HSSFRichTextString(rowName[n]);
cellRowName.setCellValue(text); //设置列头单元格的值
} //将查询出的数据设置到sheet对应的单元格中
for (int i = 0; i < dataList.size(); i++) { Object[] obj = dataList.get(i);//遍历每个对象
Row row = sheet.createRow(i + 3);//创建所需的行数 row.setHeight((short) (25 * 20)); //设置高度 for (int j = 0; j < obj.length; j++) {
Cell cell; //设置单元格的数据类型
cell = row.createCell(j, CellType.STRING);
if (!"".equals(obj[j]) && obj[j] != null) {
cell.setCellValue(obj[j].toString()); //设置单元格的值
}
}
}
//让列宽随着导出的列长自动适应
for (int colNum = 0; colNum < columnNum; colNum++) {
int columnWidth = sheet.getColumnWidth(colNum) / 256;
for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
Row currentRow;
//当前行未被使用过
if (sheet.getRow(rowNum) == null) {
currentRow = sheet.createRow(rowNum);
} else {
currentRow = sheet.getRow(rowNum);
}
if (currentRow.getCell(colNum) != null) {
Cell currentCell = currentRow.getCell(colNum);
if (currentCell.getCellType() == CellType.STRING) {
int length = currentCell.getStringCellValue().getBytes().length;
if (columnWidth < length) {
columnWidth = length;
}
}
}
}
if (colNum == 0) {
sheet.setColumnWidth(colNum, (columnWidth - 2) * 256);
} else {
sheet.setColumnWidth(colNum, (columnWidth + 4) * 256);
} }
//
// if (workbook != null) {
// try {
// String fileName = "C:\\Users\\yangxiaobo\\Desktop/" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString();
// if (xssf)
// fileName += ".xlsx";
// else
// fileName += ".xls";
// FileOutputStream out = new FileOutputStream(fileName);
// workbook.write(out);
// out.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
// } // String fileName = "" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString();
// if (xssf)
// fileName += ".xlsx";
// else
// fileName += ".xls";
return workbook;
} catch (Exception e) {
e.printStackTrace();
} return null;
}
}
用poi来导出数据到excel文档的更多相关文章
- NPOI 2.1.1 系列(2) 使用NPOI读取List或者datatable数据生成 Excel文档 ;Npoi生成 xlsx 2007以上文档
结合上一篇文章 NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx ...
- java 导出数据为word文档(保持模板格式)
导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换 如 aaaaa ...
- POI Java 导出数据到Excel
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifac ...
- PHP:引用Phpword导出数据到word文档
下载地址https://www.cnwenhui.cn/html/show-597.html(其中有中文使用手册可以下载看看) 1.首先要下载Phpword类库,放在如下图目录下 2.调用方法 pub ...
- struts2中利用POI导出Excel文档并下载
1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...
- 使用poi导出数据到excel
一.首先是导入poi所需要的jar包,我是用的是maven,添加jar包依赖 <dependency> <groupId>org.apache.poi</groupId& ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- spring boot 使用POI导出数据到Excel表格
在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表 ...
- 从数据库导出数据到excel之POI操作
项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...
随机推荐
- maven地址配置为阿里maven仓库,附ali maven官方指南链接
一.参考链接 官方指南 链接地址:https://help.aliyun.com/document_detail/102512.html?spm=a2c40.aliyun_maven_repo.0.0 ...
- 新建swap分区
1.在一块新盘上创建一个主分区,大小为1G大小. 2.将该硬盘数据变更为82(swap),并进行保存 3.查看是否已经将新建分区更改成了swap分区 4.将/dev/sdb2的标签设置为swap-sd ...
- 关于mysql,sqlserverl,与oracle数据库连接总结
首先准备工具类,其中需要修改的地方分别做标注 代码一sqlserver为例,不同数据库只需修改我所标记的第一处和第二处 mysql 第一处应为:com.mysql.jdbc.Driver ...
- 零拷贝的原理及Java实现
在谈论Kafka高性能时不得不提到零拷贝.Kafka通过采用零拷贝大大提供了应用性能,减少了内核和用户模式之间的上下文切换次数.那么什么是零拷贝,如何实现零拷贝呢? 什么是零拷贝 WIKI中对其有如下 ...
- Ubuntu caffe 测试matlab接口
这是17年8月份新增的: make matcaffe error 255解决:在Makefile里面,大约第410行那一句话CXXFLAGS += -MMD -MP下面添加CXXFLAGS += -s ...
- Spring框架的七大模块
转载于:https://www.cnblogs.com/Z-wen/p/11681211.html Spring框架的七大模块 1. Spring Core:Core封装包是框架的最基础部分,提供 ...
- CF 680D 堆塔
D. Bear and Tower of Cubes time limit per test 2 seconds memory limit per test 256 megabytes input s ...
- axios多并发请求
场景: 点击导出Excel按钮实现,姓名列表中前五个的所有的文章数据发送给后端,姓名列表中点击过的数据会被存放到localStorage中: 思路: 点击导出按钮,把前五个数据逐个和localStor ...
- plt.plot() 无法使用参数ax
问题参考 TypeError: inner() got multiple values for keyword argument 'ax' fig, ax=plt.subplots(2,1) plt. ...
- shiro.ini
# # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreeme ...