【java工具类】POI导出excel
POI的maven依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
EasyExcel.java的代码:
public static void POIExcel(List<Map<String,Object>> AllDataList, String excelPath) throws IOException{
OutputStream out = new FileOutputStream(excelPath);
String sheetName = "";
List<List<String>> titles = new ArrayList<List<String>>();
List<List<String>> sheetData = new ArrayList<List<String>>();
int size = AllDataList.size();
Map<String,Object> map = new HashMap<>();
XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
//超链接样式
XSSFCellStyle hlink_style = xssfWorkbook.createCellStyle();
XSSFFont hlink_font = xssfWorkbook.createFont();
hlink_font.setUnderline(HSSFFont.U_SINGLE);
hlink_font.setColor(HSSFColor.BLUE.index);
hlink_style.setFont(hlink_font);
//循环sheet
for(int i=0 ; i<size ; i++ ){
map = AllDataList.get(i);
sheetName = StringUtils.nvlString(map.get("sheetName"));
titles = (List<List<String>>) map.get("tabHeader");
sheetData = (List<List<String>>) map.get("sheetData");
XSSFSheet sheet = xssfWorkbook.createSheet(sheetName);
//标题行
XSSFRow titlerRow = sheet.createRow(0);
//循环标题
int t=0;
for(List<String> ls : titles){
titlerRow.createCell(t).setCellValue(ls.get(0));
t++;
}
//循环行
int row = 1;
for(List<String> ls : sheetData){
XSSFRow dataRow = sheet.createRow(row);
//循环列
for(int col=0;col<ls.size();col++){
dataRow.createCell(col).setCellValue(ls.get(col));
if(col==0){
File tempFile =new File(ls.get(col));
String fileName = tempFile.getName();
XSSFCell cell = dataRow.getCell(0);
cell.setCellFormula("HYPERLINK(\"./"+fileName+"\",\""+fileName+"\")");
cell.setCellStyle(hlink_style);
}
}
row++;
}
}
xssfWorkbook.write(out);
xssfWorkbook.close();
}
调用:
//excel生成路径
String path = "D:\\exportTest\\" + System.currentTimeMillis() + ".xlsx";
File xlsFile = new File(path);
//文件夹不存在就创建
if (!xlsFile.getParentFile().exists() && !xlsFile.getParentFile().isDirectory())
{
xlsFile.getParentFile().mkdir();
}
//生成excel
EasyExcel.POIExcel(AllDataList,path);
其中,参数AllDataList的传入格式为List<Map<String,Object>>:

格式较复杂,List中每条数据就是一个sheet页内容,主要是sheet页名称(String)、sheet页表头(List<List<String>>)、sheet页数据(List<List<String>>)
记录一下,以后用到的话可根据需要的格式酌情修改。
【java工具类】POI导出excel的更多相关文章
- java工具类POI导出word
1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- java 通过Apache poi导出excel代码demo实例
package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...
- java中使用 POI导出excel表格的简单实现
大概流程分7步: 1.创建工作簿 --> 2.创建sheet表 --> 3.创建row行(建议使用循环) --> 4.用row行逐一创建单元格(建议使用循环) --> 5.单元 ...
- Java Web利用POI导出Excel简单例子
采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private ...
- java使用poi导出excel
继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...
- 使用POI导出EXCEL工具类并解决导出数据量大的问题
POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
随机推荐
- spring实战第五版总结
- Django 调用支付宝接口
目录 一 支付宝接口 二 视图函数 支付宝支付 正式环境:用营业执照,申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appD ...
- Elasticsearch-使用映射来定义各种文档
ES-使用映射来定义各种文档 每篇文档属于一种类型,而每种类型属于一个索引.从数据的逻辑划分来看,可以认为索引是数据库,而类型是数据库中的表.类型包含了映射中每个字段的定义.映射包括了该类型的文档中可 ...
- Matcher和Pattern总结
Matcher.Pattern简介 java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pat ...
- C++中的类型识别
1,为什么会提出类型识别概念呢? 1,为什么在 C 语言中没有提出这个概念呢,就是因为在 C++ 中引入了面向对象的特性,面向对象里面有一个非常重要的原则就是赋值兼容性原则: 2,在面向对象中可能出现 ...
- springboot基于CORS处理跨域问题
1. 为什么有跨域问题 跨域不一定都会有跨域问题. 因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击. 因此:跨域问 ...
- transform(转https://blog.csdn.net/qq_24189933/article/details/79293870)
transform 前面我们一起学习了CSS3中的渐变.圆角.阴影等几个属性的使用,今天开始我们一起来学习有关于CSS3制作动画的几个属性:变形(transform).转换(transition)和动 ...
- mybatis中foreach的用法以及特殊的情况的用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separator,close. ...
- luogu P4076 [SDOI2016]墙上的句子
luogu loj 题意看了我半天(逃 (应该是我语文太差了) 题意是要确定每一行和每一列的看单词的顺序,使得同时正着出现和反着出现在里面的单词数量最少,每行和每列的性质是这一行所有单词反过来的单词要 ...
- 国际化:node导语言包
项目做国际化,是离不开语言包的en.json.zh-CN.json等等.难道要一个一个json文件的写吗???不!!!只要我们写在excel里,然后用nodejs导出我们需要的语言包就可以了!这样大大 ...