通用导出功能:

  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. “GANs”与“ODEs”:数学建模的终结?

    在本文中,我想将经典数学建模和机器学习之间建立联系,它们以完全不同的方式模拟身边的对象和过程.虽然数学家基于他们的专业知识和对世界的理解来创建模型,而机器学习算法以某种隐蔽的不完全理解的方式描述世界, ...

  2. coding++:thymelef 模板报错 the entity name must immediately follow the '&' in the entity reference

    thymelef模板里面是不能实用&符号的 要用&转义符代替,官网也有文档说明可以用官方的通配符代替, 官方文档 http://www.thymeleaf.org/doc/tutori ...

  3. Java多线程问题40个

    1.多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡.所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然 ...

  4. LeetCode47, 全排列进阶,如果有重复元素怎么办?

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第28篇,依然是全排列的问题. 如果对全排列不熟悉或者是最近关注的同学可以看一下上一篇文章: LeetCode46 回 ...

  5. javax.el.PropertyNotFoundException: 类型[cn.cqsw.pojo.Course]上找不到属性[CourseId]

    今天在JSP利用EL表达式取值报了 "javax.el.PropertyNotFoundException” 1 Caused by: org.apache.jasper.JasperExc ...

  6. [WPF]为什么使用SaveFileDialog创建文件需要删除权限?

    1. 问题 好像很少人会遇到这种需求.假设有一个文件夹,用户有几乎所有权限,但没有删除的权限,如下图所示: 这时候使用SaveFileDialog在这个文件夹里创建文件居然会报如下错误: 这哪里是网络 ...

  7. ANTLR随笔(二)

    安装ANTLR 作者的电脑是MAC的操作系统macOS Catalina 10.15.2. 安装步骤后linux操作的系统的一样, Windows系统大致步骤一样,但是环境变量等配置有差别,作者很久没 ...

  8. Vertica的这些事(三)——Vertica中实现Oracle中的ws_concat功能

    vertica中没有类似Oracle中的ws_concat函数功能,需要开发UDF,自己对C++不熟悉,所有只有想其他方法解决了. 上代码: SELECT node_state, MAX(DECODE ...

  9. 1061 Dating (20分)

    Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4hhGE 2984akDfkkkkg ...

  10. Linux - Ubuntu下执行apt-get update报错:Some index files failed to download. They have been ignored, or old ones used instead.

    报错命令 root@ubuntu:/etc/apt# apt-get update Err: http://mirrors.aliyun.com/ubuntu trusty InRelease Cou ...