当前位置:网站首页>A few lines of code can realize complex excel import and export. This tool class is really powerful!
A few lines of code can realize complex excel import and export. This tool class is really powerful!
2022-06-28 18:55:00 【Java technology stack】
source :blog.csdn.net/weixin_43225813/article/details/108995011
Function is introduced
IMPORT
- ExcelHandle Core processor
- ExcelWorkbookManage excel All sheet management
- ExcelInitConfig Configuration file initialization
- AbstractFileParser File conversion class
alanpoi import What are the advantages ?
The user does not need to introduce poi And so on jar
Parsing large files in milliseconds , Support one key parsing for multiple sheet Tab , You don't need to match and parse all the data in a certain format
No matter how complex your system is , How many imports ,
alanpoiAll for , And return exactly what you need , Reduce developer workloadAt present, the external business is becoming more and more complex , The requirements for various functions are becoming more and more strict , Of course, import is no exception ,alanpoi Support error one click write back excel, Corresponding to each line
alanpoi Flexible and scalable , Provides ExcelConsumeInterface Interface , You can inherit it , Realization valid、error、end Three ways to write your own business
- valid: Method parameters return excel All the data , Users can perform self verification
- error: Import errors will call back
- end: The method parameter returns the data successfully verified ,valid Data that fails the verification will not be returned , Users can operate persistence or other businesses by themselves
How do you use it? alanpoi Implement import
Project use :
<dependency>
<groupId>com.alanpoi</groupId>
<artifactId>alanpoi-analysis</artifactId>
<version>1.3.0</version>
</dependency>In a word : One configuration, one inheritance, one invocation
I. configuration
In the project resources Create a new excel-config.xml file ,cosume Configure your own consumption class path in , Inherit ExcelConsumeInterface Interface ,sheet Medium vo It's the present sheet Serialized object path ,column Configuration is, of course vo The property of .
among name Optional fields , Fill it in and match it with this excel Name , If you don't fill it out, you will follow offset The order ; The import contains multiple sheet Configure multiple
<?xml version = "1.0" encoding = "GB2312"?>
<exg name="excelId" version="1.0" file-type="excel">
<excel id="ACCOUNT" consume="com.xxx.FinAccountImportHandler">
<sheet index="0" row-start="1" column-start="0"
vo="com.xxx.vo.FinAccountImportVO">
<column name=" company / Supplier No " offset="1">companyCode</column>
<column name=" company / Name of supplier " offset="2">companyName</column>
<column name=" Bank Account " offset="3">bankAccount</column>
<column name=" Bank of deposit " offset="4">bankName</column>
</sheet>
</excel>
</exg>I. inheritance
consume Class inheritance ExcelConsumeInterface Interface , Implementation method
/**
* when error will call
*
* @param excelError
*/
void error(ExcelError excelError);
/**
* custom valid data
*
* @param workbookId
* @param sheetDataList
*/
void validData(String workbookId, List<ExcelSheetData> sheetDataList, Map<Serializable, Object> excelParam);
/**
* @param sheetDataList return success data
*/
void end(List<ExcelSheetData> sheetDataList, Map<Serializable, Object> excelParam);One call
The user calls ExcelExportUtil Class customImportData that will do , Parameters excelId Namely excel-conifg.xml Configured in id
Export
describe
It can be implemented in one line of code without the second line , If I can't , Then add another line !
Pattern
Annotation mode export :
- ExcelSheet annotation : Used to import classes , You can make sheet name , The color of the column header 、 typeface 、 Height 、 Width
- ExcelColum annotation : Used on the properties of the import class , You can specify the name of the column header , Cell style
- DateFormat annotation : Used on the properties of the import class , You can output to... In the specified format excel, Default "
yyyy/MM/dd" - NumFormat annotation : Used on the properties of the import class , You can output to... In the specified format excel, Default "
00.00"
Examples :
@ExcelSheet(name = " test ", backColor = AlanColors.GREEN, font = " Song style ", fontSize = 25)
@Data
public class ExportVO {
@ExcelColumn(name = " name ", width = 32, link = "${url}")
private String name;
@ExcelColumn(name = " value ")
private String value;
@ExcelColumn(name = " amount of money ")
@NumFormat(value = "0000.00##")
private BigDecimal amount;
@ExcelColumn(name = " Time format ")
@DateFormat(value = "yyyy-MM-dd hh:mm:ss")
private Date dateTime;
@DateFormat
@ExcelColumn(name = " Date formatting ")
private java.sql.Date date;
@ExcelColumn(isExist = false)
private String url;
}Use
Mode one . Export directly to browser
ExcelExportUtil.export(Colletion<?>,Class,HttpServletRequest,HttpServletResponse,fileName); Mode two . call getWorkbook Get worksheet , Do it yourself workbook
ExcelExportUtil.getWorkbook(Collection<?> singleSheetData, Class<?> c)Advanced use
Example 1 : Export the specified column ( Dynamically export Columns )
List<ExportVO> list = new ArrayList<>();
for (int i = 0; i < 500; i++) {
ExportVO exportVO = new ExportVO();
exportVO.setName("name" + i);
exportVO.setValue(new BigDecimal(123.11 + i * 0.09));
exportVO.setAmount(new BigDecimal(6666.666 + i * 10));
exportVO.setDate(new Date(132324343 + i * 100));
exportVO.setDateTime(new java.util.Date());
list.add(exportVO);
}
List<String> colList = new ArrayList<>();
// Export only... In order add The column of
colList.add("name");
colList.add("value");
// Call get workbook object ; It can also be called directly exportSpecifyCol Method to export to the browser
Workbook workbook = ExcelExportUtil.getWorkbookSpecifyCol(list, ExportVO.class, colList);Example 2 : many sheet Tab export
List<ExportVO> list = new ArrayList<>();
List<Export2VO> list2 = new ArrayList<>();
for (int i = 0; i < 500; i++) {
ExportVO exportVO = new ExportVO();
exportVO.setName("name" + i);
exportVO.setValue(new BigDecimal(123.11 + i * 0.09));
exportVO.setAmount(new BigDecimal(6666.666 + i * 10));
exportVO.setDate(new Date(132324343 + i * 100));
exportVO.setDateTime(new java.util.Date());
list.add(exportVO);
Export2VO export2VO = new Export2VO();
export2VO.setName("name" + i);
export2VO.setValue("value" + i);
export2VO.setAmount(new BigDecimal(6666.666 + i * 10));
export2VO.setDate(new Date(132324343 + i * 100));
export2VO.setDateTime(new java.util.Date());
list2.add(export2VO);
}
Map<Class<?>, Collection<?>> map = new HashMap<>();
map.put(ExportVO.class, list);
map.put(Export2VO.class, list2);
// Call get workbook object ; It can also be called directly exportByMultiSheet Method to export to the browser
Workbook workbook = ExcelExportUtil.getWorkbookByMultiSheet(map);Recent hot article recommends :
1.1,000+ Avenue Java Arrangement of interview questions and answers (2022 The latest version )
2. Explode !Java Xie Cheng is coming ...
3.Spring Boot 2.x course , It's too complete !
4. Don't write about the explosion on the screen , Try decorator mode , This is the elegant way !!
5.《Java Development Manual ( Song Mountain version )》 The latest release , Download it quickly !
I think it's good , Don't forget to like it + Forward !
边栏推荐
- Shell script batch modify file directory permissions
- About Significance Tests
- 推荐两款超高质量的壁纸软件
- 闭包的理解
- leetcode 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers(最少的“二进制数“个数)
- About Statistical Distributions
- 上传文件列表(文件名重复加括号标识)
- About Critical Values
- 中金财富开户安全吗?开过中金财富的讲一下
- Steam education to break the barriers between disciplines
猜你喜欢

Lumiprobe非荧光叠丨氮化物研究丨3-叠丨氮丙醇

openGauss内核:SQL解析过程分析

匿名函数this指向以及变量提升

Tensorboard Usage Summary

浦发银行软件测试面试真题(小编面试亲测)

Record an emotet Trojan horse handling case

推荐两款超高质量的壁纸软件

牛津大学教授Michael Wooldridge:AI社区近40年如何看待神经网络

1 invalid import format(s) Postman Collection Format v1 is no longer supported and can not be import

Professor Michael Wooldridge of Oxford University: how the AI community views neural networks in the past 40 years
随机推荐
声网 VQA:将实时互动中未知的视频画质用户主观体验变可知
180.1.连续登录N天(数据库)
C语言文件操作
618 activity season - the arrival of special discounts for hundreds of low code platforms
向上转型和向下转型
tensorboard 使用总结
sqrt()函数的详解和用法「建议收藏」
Graphic system - 2 View drawing
【Unity3D】相机跟随
3D可旋转粒子矩阵
Servlet的使用手把手教学(一)
Lumiprobe非荧光叠丨氮化物研究丨3-叠丨氮丙醇
基于管线的混合渲染
Win 10创建一个gin框架的项目
Qt 中 QObjectCleanupHandler 使用总结
Rxjs map, mergeMap 和 switchMap 的区别和联系
EasyCVR新建用户后,视频调阅页面不能点击的问题修复
PHP使用栈解决迷宫问题
打破学科之间壁垒的STEAM教育
数字化转型的1个目标,3大领域,6大因素和9个环节