1. POImaven依赖:
    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
    </dependency>
  1. EasyExcel.java的代码:
  1. public static void POIExcel(List<Map<String,Object>> AllDataList, String excelPath) throws IOException{
  2.  
  3. OutputStream out = new FileOutputStream(excelPath);
  4.  
  5. String sheetName = "";
  6. List<List<String>> titles = new ArrayList<List<String>>();
  7. List<List<String>> sheetData = new ArrayList<List<String>>();
  8. int size = AllDataList.size();
  9. Map<String,Object> map = new HashMap<>();
  10.  
  11. XSSFWorkbook xssfWorkbook = new XSSFWorkbook();
  12.  
  13. //超链接样式
  14. XSSFCellStyle hlink_style = xssfWorkbook.createCellStyle();
  15. XSSFFont hlink_font = xssfWorkbook.createFont();
  16. hlink_font.setUnderline(HSSFFont.U_SINGLE);
  17. hlink_font.setColor(HSSFColor.BLUE.index);
  18. hlink_style.setFont(hlink_font);
  19.  
  20. //循环sheet
  21. for(int i=0 ; i<size ; i++ ){
  22. map = AllDataList.get(i);
  23. sheetName = StringUtils.nvlString(map.get("sheetName"));
  24. titles = (List<List<String>>) map.get("tabHeader");
  25. sheetData = (List<List<String>>) map.get("sheetData");
  26.  
  27. XSSFSheet sheet = xssfWorkbook.createSheet(sheetName);
  28. //标题行
  29. XSSFRow titlerRow = sheet.createRow(0);
  30. //循环标题
  31. int t=0;
  32. for(List<String> ls : titles){
  33. titlerRow.createCell(t).setCellValue(ls.get(0));
  34. t++;
  35. }
  36. //循环行
  37. int row = 1;
  38. for(List<String> ls : sheetData){
  39. XSSFRow dataRow = sheet.createRow(row);
  40. //循环列
  41. for(int col=0;col<ls.size();col++){
  42. dataRow.createCell(col).setCellValue(ls.get(col));
  43. if(col==0){
  44. File tempFile =new File(ls.get(col));
  45. String fileName = tempFile.getName();
  46. XSSFCell cell = dataRow.getCell(0);
  47. cell.setCellFormula("HYPERLINK(\"./"+fileName+"\",\""+fileName+"\")");
  48. cell.setCellStyle(hlink_style);
  49. }
  50. }
  51. row++;
  52. }
  53. }
  54.  
  55. xssfWorkbook.write(out);
  56. xssfWorkbook.close();
  57. }

调用:

  1. //excel生成路径
  2. String path = "D:\\exportTest\\" + System.currentTimeMillis() + ".xlsx";
  3. File xlsFile = new File(path);
  4. //文件夹不存在就创建
  5. if (!xlsFile.getParentFile().exists() && !xlsFile.getParentFile().isDirectory())
  6. {
  7. xlsFile.getParentFile().mkdir();
  8. }
  9. //生成excel
  10. 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. 微信小程序 解析html格式内容

    需要引入html-view文件 1/js 代码 const HtmlParser=require('../../utils/html-view/index') data: { coupon_text: ...

  2. 2019/12.09centos安装 | 无密钥登陆

    centos配置 1.安装位置选择(我要配置分区) →完成 2.添加新挂载点:/boot  400M /swap 4GB / 期望容量空 3.设置root密码:字母+数字 4.重启 5.点击编辑,NA ...

  3. 【Linux 网络编程】MTU(Maximum Transmission Uint)

    (1)以太网和IEEE802.3对数据帧的长度都是有限制的,其最大分别是1500和1492字节,成为MTU. (2)如果IP层有一个数据要传输,而且数据的长度比链路层的MTU要大,那么IP层就要进行分 ...

  4. 【Linux 网络编程】OSI七层模型

    OSI(Open System Interconnection)开放系统互联模型(1)应用层: 应用层与应用程序界面沟通,以达到展示给用户的目的.(2)表示层: 表示层对网络传输的数据进行交换,使得多 ...

  5. mysql生成全局id(转)

    由于数据量以及IO效率的因素,很多项目对数据支持的数据库会采取分库分表的方式.使用了分库分表之后需要解决的一个问题就是主键的生成.多个表之间的主键就不能用数据库本身的自增主键来支持,因为不同表之间生成 ...

  6. Spring Boot解决无法访问图片的问题

    找了很多Spring Boot项目访问图片的解决方式,发现都是配置的,有时配置了也没有用.然后自己研究了一种简单操作的方法. 1,在Spring Boot的static目录下创建一个新目录img(或者 ...

  7. List<HashMap<String,String>> list, 根据hashmap中的某个键的值排序

    来源https://blog.51cto.com/zhaodan/1725249 //可以使用Collections.sort(List list, Comparator c)来实现 这里举例hash ...

  8. MYSQL 的事物处理(四大特性)

    什么是事物? MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库 ...

  9. C# System.Reflection (反射)

    在使用.NET创建的程序或组件时,元数据(metadata)和代码(code)都存储于“自成一体”的单元中,这个单元称为装配件.我们可以在程序运行期间访问这些信息. 在System.Reflectio ...

  10. homebrew学习(五)之homebrew cask和homebrew services

    homebrew cask 如果我想安装Chrome浏览器怎么办?试试下面的命令: brew install google-chrome 发现并不能安装,没有该软件.怎么办?好消息是一个叫做homeb ...