Java XSSF 导出excel 工具类
参数解释: title:导出excel标题、headers 导出到excel显示的列头、
columns 对应数据库字段 、list 导出数据
1、pox中添加依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15-beta2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.17</version>
</dependency>
2、添加工具类
public void expoortExcelx(String title, String[] headers, String[] columns,
List<T> list, OutputStream out, String pattern) throws NoSuchMethodException, Exception{
//创建工作薄
XSSFWorkbook workbook=new XSSFWorkbook();
//创建表格
Sheet sheet=workbook.createSheet(title);
//设置默认宽度
sheet.setDefaultColumnWidth(25);
//创建样式
XSSFCellStyle style=workbook.createCellStyle();
//设置样式
style.setFillForegroundColor(IndexedColors.GOLD.index);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
style.setBorderBottom(CellStyle.BORDER_THIN);
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setBorderRight(CellStyle.BORDER_THIN);
style.setBorderTop(CellStyle.BORDER_THIN);
//生成字体
XSSFFont font=workbook.createFont();
font.setColor(IndexedColors.VIOLET.index);
font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);
//应用字体
style.setFont(font); //自动换行
style.setWrapText(true);
//声明一个画图的顶级管理器
Drawing drawing=(XSSFDrawing) sheet.createDrawingPatriarch();
//表头的样式
XSSFCellStyle titleStyle=workbook.createCellStyle();//样式对象
titleStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);//水平居中
titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
//设置字体
XSSFFont titleFont=workbook.createFont();
titleFont.setFontHeightInPoints((short)15);
titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体
titleStyle.setFont(titleFont);
sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headers.length-1));
//指定合并区域
Row rowHeader = sheet.createRow(0);
//XSSFRow rowHeader=sheet.createRow(0);
Cell cellHeader=rowHeader.createCell(0);
XSSFRichTextString textHeader=new XSSFRichTextString(title);
cellHeader.setCellStyle(titleStyle);
cellHeader.setCellValue(textHeader); Row row=sheet.createRow(1);
for(int i=0;i<headers.length;i++){
Cell cell=row.createCell(i);
cell.setCellStyle(style);
XSSFRichTextString text=new XSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
//遍历集合数据,产生数据行
if(list!=null&&list.size()>0){
int index=2;
for(T t:list){
row=sheet.createRow(index);
index++;
for(short i=0;i<columns.length;i++){
Cell cell=row.createCell(i);
String filedName=columns[i];
String getMethodName="get"+filedName.substring(0,1).toUpperCase()
+filedName.substring(1);
Class tCls=t.getClass();
Method getMethod=tCls.getMethod(getMethodName,new Class[]{});
Object value=getMethod.invoke(t, new Class[]{});
String textValue=null;
if(value==null){
textValue="";
}else if(value instanceof Date){
Date date=(Date)value;
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
textValue = sdf.format(date);
}else if(value instanceof byte[]){
row.setHeightInPoints(80);
sheet.setColumnWidth(i, 35*100);
byte[] bsValue=(byte[])value;
XSSFClientAnchor anchor=new XSSFClientAnchor(0,0,1023,255,6,index,6,index);
anchor.setAnchorType(2);
drawing.createPicture(anchor, workbook.addPicture(bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG));
}else{
// 其它数据类型都当作字符串简单处理
textValue=value.toString();
} if(textValue!=null){
Pattern p = Pattern.compile("^//d+(//.//d+)?$");
Matcher matcher = p.matcher(textValue);
if (matcher.matches()) {
// 是数字当作double处理
cell.setCellValue(Double.parseDouble(textValue));
} else {
XSSFRichTextString richString = new XSSFRichTextString(
textValue);
// HSSFFont font3 = workbook.createFont();
// font3.setColor(HSSFColor.BLUE.index);
// richString.applyFont(font3);
cell.setCellValue(richString);
}
} }
}
}
workbook.write(out);
}
3、
response.setHeader("Content-Disposition", "attachment; filename="+DateUtil.DateToString()+".xlsx");
OutputStream out =response.getOutputStream();
ExportExcelUtil.expoortExcelx("表头",headers,clouns,list,out,"yyyy-MM-dd HH:mm:ss");
Java XSSF 导出excel 工具类的更多相关文章
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- javaEE开发之导出excel工具类
web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...
- java导出excel工具类
java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...
- 导出Excel工具类
import java.io.OutputStream; import java.lang.reflect.Method; import java.text.SimpleDateFormat; imp ...
- 使用POI导出EXCEL工具类并解决导出数据量大的问题
POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...
- JXL导出Excel工具类
将Excel中的数据读取到List<Map<String, Object>>集合中 package com.mvc.util; import java.io.File; ...
- NPOI导入导出Excel工具类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Ref ...
- JAVA实现导出excel功能,封装通用导出工具类
引入maven <!--excel导出--> <dependency> <groupId>net.sourceforge.jexcelapi</groupId ...
随机推荐
- 哪里获取ZBrush简体中文版?
ZBrush®精简版(ZBrush简体中文版)ZBrushCore发布已经有一段日子了,相信不少人早已迫不及待地开始尝试了,不知道你们的体验如何?毋庸置疑的是,ZBrushCore专为刚接触3D并希望 ...
- spring的JdbcTemplate
一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象. 第一种方式:我们可以在自己定 ...
- laravel报错:MassAssignmentException
报这种错误是因为没有设置白名单或者黑名单.在使用fill填充时,需要设置白/黑名单. $model->fill($params);return $model->save(); 找到对应的m ...
- HYSBZ-1566 管道取珠 区间dp
题目链接:https://cn.vjudge.net/problem/HYSBZ-1566 题意 思路 已经说了,面对\sum a^2的时候把状态分两个, 当这两个状态相同时,满足题意的方案数即变为a ...
- [转载] C 陷阱与缺陷( C traps and Pitfalls )
本文转自 https://www.xuebuyuan.com/1951579.html 自己找工作过程中复习过的书包括<C traps and Pitfalls>,<编程珠玑> ...
- React和Vue中,是如何监听变量变化的
React 中事件监听 本地调试React代码的方法 先将React代码下载到本地,进入项目文件夹后yarn build 利用create-react-app创建一个自己的项目 把react源码和自己 ...
- 【hdu 6319】Ascending Rating
[链接] 我是链接,点我呀:) [题意] 给你一个长为n的数组a 让你对于每个长度为m的窗口. 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数. [题解] 单调队列. 从后往前滑动窗口. ...
- Apache Mahout 0.9、10.1、11. CardinalityException: Required cardinality 60 but got 29
我们可以使用Apache Mahout来快速创建高效扩展性又好的机器学习应用.Mahout结合了诸如H2O算法.Scala.Spark和Hadoop MapReduce等模块,为开发人员提供了一个 ...
- HDU 4325 Contest 3
很明显的区间加减单点查询.但由于规模大,于是离散化.在离散化的时候,可以把要查询的点也加入离散化的数组中. #include <iostream> #include <algorit ...
- 怎样在Nginxserver中启用Gzip压缩
原文链接: Enable GZIP Compression on nginx Servers原文日期: 2014年7月16日翻译日期: 2014年7月19日翻译人员: 铁锚 速度决定一切,没有什么比一 ...