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的更多相关文章

  1. java工具类POI导出word

    1.新建一个word,里面填写内容,如: 2.导出wordjava类 /** * POI导出word测试 * @throws Exception */ @RequestMapping(value=&q ...

  2. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

  3. java 通过Apache poi导出excel代码demo实例

    package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutput ...

  4. java中使用 POI导出excel表格的简单实现

    大概流程分7步: 1.创建工作簿 --> 2.创建sheet表 --> 3.创建row行(建议使用循环) --> 4.用row行逐一创建单元格(建议使用循环) --> 5.单元 ...

  5. Java Web利用POI导出Excel简单例子

    采用Spring mvc架构: Controller层代码如下 @Controller public class StudentExportController{ @Autowired private ...

  6. java使用poi导出excel

    继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...

  7. 使用POI导出EXCEL工具类并解决导出数据量大的问题

    POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...

  8. Java POI 导出EXCEL经典实现 Java导出Excel

    转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...

  9. 重构:以Java POI 导出EXCEL为例

    重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...

  10. 重构:以Java POI 导出EXCEL为例2

    前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...

随机推荐

  1. AspNet Core Swagger4.0 生成请求model描述

    今天给大家分享 swagger 俩个冷门的小技巧 获取控制器描述 将 IncludeXmlComments 方法第二个参数设置为 true 即可 public static void IncludeX ...

  2. 20191224 Spring官方文档(Overview)

    Spring框架概述 从Spring Framework 5.1开始,Spring需要JDK 8+(Java SE 8+),并提供对JDK 11 LTS的现成支持.建议将Java SE 8更新60作为 ...

  3. python+selenium下载文件——Chrome

    from selenium import webdriver import time options = webdriver.ChromeOptions() prefs = { 'profile.de ...

  4. Mysql-慢查询排查

    1.开启慢日志 2.使用show full processlist抓出慢查询语句 3.使用explain分析语句 4. set global profiling = ON

  5. Oracle数据库跟踪存储过程

    1.[右击]该存储过程 ——>勾选[添加调试信息]——>点击[测试]选项 2.输入对应参数,点击下图左上角红框按钮,开始跟踪,可逐语句逐过程跟踪

  6. requests实现文件下载, 期间显示文件信息&下载进度_python3

    requests实现文件下载, 期间显示文件信息&下载进度 """使用模块线程方式实现网络资源的下载 # 实现文件下载, 期间显示文件信息&下载进度 # ...

  7. day 01 常量 注释 int(整型) 用户交互input 流程控制语句if

    python的编程语言分类(重点) if 3 > 2: 编译型: 将代码一次性全部编译成二进制,然后再执行. 优点:执行效率高. 缺点:开发效率低,不能跨平台. 代表语言:C 解释型: 逐行解释 ...

  8. 工具使用——VMware安装及使用

    一.VMware的安装 本文使用VMware 14 pro,双击打开安装包,点击下一步: 选中我接受许可协议中的条款,点击下一步: 选择安装路径,点击下一步: 点击下一步: 点击下一步: 点击安装: ...

  9. ROPE

    #include <ext/rope> using namespace __gnu_cxx; ]; rope<int> x; rope<int> x(a,a + n ...

  10. IDL_MCTK(MODIS Conversion Toolkit)

    1.CONVERT_MODIS_DATA CONVERT_MODIS_DATA [,IN_FILE= | | }] [,GEOLOC_FILE= | | }] [,CALIB_METHOD={ | | ...