通用导出功能:

  1.支持Excel xlsx、xls

  2.支持CSV文件导出

  3.数据库查询分页导出、内存导出

4.支持大批量数据导出

使用步骤如下

导入jar

<dependency>
<groupId>com.github.catdou</groupId>
<artifactId>common-export</artifactId>
<version>1.3</version>
</dependency>

导出方式一:List 数据导出

1.创建每一列对应的po字段映射关系

public ExportParam buildUserExportParam() {
Map<String, String> fieldColumnMap = new HashMap<>();
fieldColumnMap.put("A", "userName");
fieldColumnMap.put("C", "seq");
fieldColumnMap.put("B", "passWord");
// build setter method
List<Method> getterMethod = ExportCommon.buildParamGetter(User.class, fieldColumnMap);
return new ExportParam()
.setHeader("username,password,seq")
.setGetterMethod(getterMethod);
}

2.导出数据到文件

csv 文件

public void testExportCsvPath() {
String exportDir = "file" + File.separator + UUID.randomUUID().toString();
File dirFile = new File(exportDir);
dirFile.mkdirs();
String filePath = exportDir + File.separator + "test.csv";
ExportParam exportParam = buildUserExportParam();
CsvExport csvExport = new CsvExport(filePath, exportParam);
List<User> userList = createDataList(100);
csvExport.exportList(userList); }

excel 文件

public void testManySheet() {
String exportDir = "file" + File.separator + UUID.randomUUID().toString();
File dirFile = new File(exportDir);
dirFile.mkdirs();
String filePath = exportDir + File.separator + "test-many.xlsx";
ExportParam exportParam1 = buildUserExportParam();
ExportParam exportParam2 = buildUserExportParam();
Map<Integer, ExportParam> exportParamMap = new HashMap<>(16);
exportParamMap.put(0, exportParam1);
exportParamMap.put(1, exportParam2);
ExcelMultiSheetExport excelMultiSheetExport = new ExcelMultiSheetExport(filePath, null,
false, exportParamMap);
List<User> userList = createDataList(Constants.EXCEL_MAX_ROW_XLSX * 3);
excelMultiSheetExport.exportListByParamIndex(userList, 0);
excelMultiSheetExport.exportListByParamIndex(userList, 1, true);
}

导出方式二:数据获取方法导出

数据量比较大的情况,这时候需要分页查询导出,需要设置查询方法,符合条件数据的总条数

public void testExcel2007() {
ExportParam exportParam = buildUserExportParam();
String exportDir = "file" + File.separator + UUID.randomUUID().toString();
File dirFile = new File(exportDir);
dirFile.mkdirs();
String filePath = exportDir + File.separator + "test.xlsx";
List<User> userList = createDataList(Constants.EXCEL_MAX_ROW_XLSX * 2);
BaseExport baseExport = new ExcelExport(filePath, null, false, exportParam);
baseExport.exportList(userList);
} public void testManySheet() {
String exportDir = "file" + File.separator + UUID.randomUUID().toString();
File dirFile = new File(exportDir);
dirFile.mkdirs();
String filePath = exportDir + File.separator + "test-many.xlsx";
ExportParam exportParam1 = buildUserExportParam();
ExportParam exportParam2 = buildUserExportParam();
Map<Integer, ExportParam> exportParamMap = new HashMap<>(16);
exportParamMap.put(0, exportParam1);
exportParamMap.put(1, exportParam2);
ExcelMultiSheetExport excelMultiSheetExport = new ExcelMultiSheetExport(filePath, null,
false, exportParamMap);
List<User> userList = createDataList(Constants.EXCEL_MAX_ROW_XLSX * 3);
excelMultiSheetExport.exportListByParamIndex(userList, 0);
excelMultiSheetExport.exportListByParamIndex(userList, 1, true);
}

项目地址

https://github.com/CatDou/common-export

如果大家有好的想法,fork代码到你的仓库,然后pull request.

Java 导出Excel xlsx、xls, CSV文件的更多相关文章

  1. Java导出Excel和CSV(简单Demo)

    Java导出Excel和CSV的简单实现,分别使用POI和JavaCSV. JavaBean public class ReportInfo { int id; String date; int nu ...

  2. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  3. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

  4. Java 解析Excel(xls、xlsx两种格式)

    Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...

  5. [转载]Java导出Excel

    一.需求介绍 当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开.或者是:用户已经习惯用E ...

  6. java导出excel表格

    java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...

  7. java导出excel报表

    1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream;import java.util.List;impo ...

  8. java导出excel工具类

    java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...

  9. xls/csv文件转换成dbf文件

    转至:https://blog.csdn.net/linhai1028/article/details/80211252 编写的一个小脚本,主要是利用python中的pandas,xlrd,dbfpy ...

随机推荐

  1. 微信内置浏览器对于html5的支持

    微信内置浏览器对于html5的支持 来源: 作者: 热度:102 日期:14-06-10, 09:10 AM 我在做针对微信的HTML5应用, 目前遇到的几个问题是 一. 安卓版微信直接调用系统浏览器 ...

  2. OpenCV-Python 形态学转换 | 十七

    目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等. 我们将看到不同的功能,例如:cv.erode(),cv.dilate(), cv.morphologyEx()等. ...

  3. if-else、switch、while、for

    文章主要会涉及如下几个问题: if-else 和 switch-case 两者相比谁的效率会高些?在日常开发中该如何抉择? 如何基于赫夫曼树结构减少 if-else 分支判断次数? 如何巧妙的应用 d ...

  4. Visio2013 专业版激活码和激活工具 亲测有效

    Visio2013密钥 专业版:Visio Professional 2013 KEY C2FG9-N6J68-H8BTJ-BW3QX-RM3B3 2NYF6-QG2CY-9F8XC-GWMBW-29 ...

  5. [HOJ2662]Pieces Assignment<状态压缩dp>

    描述: 有一个n*m的棋盘(n.m≤80,n*m≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻(每个棋子最多和周围4个棋子相邻).求合法的方案总数. 输入: 本题有多组测试数据,每组 ...

  6. 403 Invalid CORS request 跨域问题

    5.跨域问题 跨域:浏览器对于javascript的同源策略的限制 . 以下情况都属于跨域: 跨域原因说明 示例 域名不同 www.jd.com 与 www.taobao.com 域名相同,端口不同 ...

  7. Educational Codeforces Round 84 (Rated for Div. 2)

    A. Sum of Odd Integers(思维) 思路 这一题看完ans之后觉得是真简单,不过有一些地方还是要理解的. 这一题输出YES,有两个条件 kk%2 == n%2k,这个条件的意思是 k ...

  8. D3属性大全

    https://www.cnblogs.com/bester-ace/articles/10948793.html https://www.cnblogs.com/qingmingsang/artic ...

  9. Java 配 Shell 等于美酒加咖啡

    化学中我们得知「氢气加氧气在点燃的情况下会生成水」. 生活中我们得知「良辰加美景的情况下会得到千金春宵一刻」. 技术上又何尝不是如此呢?先假设一个场景:BOSS 让你实现一个服务监控的指挥室,能看到每 ...

  10. stm32:extern关键字

    参考:http://c.biancheng.net/view/404.html 1.在一个文件中: #include <stdio.h> int max(int x,int y); int ...