当前位置:网站首页>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 !
边栏推荐
- 从知名软件提取出的神器,吊打一众付费
- Servlet的使用手把手教学(一)
- use. NETCORE's own background job, which simply simulates producers and consumers' processing of request response data in and out of the queue
- 【C#】详解值类型和引用类型区别
- Win 10创建一个gin框架的项目
- Openfire 3.8.2集群配置
- Rxjs map, mergeMap 和 switchMap 的区别和联系
- devpi
- Advanced technology management - how managers communicate performance and control risks
- 中金财富开户安全吗?开过中金财富的讲一下
猜你喜欢

微信小程序接入百度统计报错 Cannot read property ‘mtj‘ of undefined

What are the design requirements for PCB layout and wiring?

【Unity3D】相机跟随

Lumiprobe 蛋白质标记研究方案

模块化操作

Summary of the use of qobjectcleanuphandler in QT

使用Karmada实现Helm应用的跨集群部署

618 activity season - the arrival of special discounts for hundreds of low code platforms

基于管线的混合渲染

Modular operation
随机推荐
[unity3d] camera follow
Steam education to break the barriers between disciplines
刷题分析工具
tensorboard 使用总结
用户网络模型与QoE
内存泄露
基于管线的混合渲染
SMARCA2抗体研究:Abnova SMARCA2 单克隆抗体方案
id门禁卡复制到手机_怎么把手机变成门禁卡 手机NFC复制门禁卡图文教程
EasyCVR新建用户后,视频调阅页面不能点击的问题修复
双功能交联剂丨Lumiprobe 磺基花青7二羧酸研究
从理论到实践增强STEAM和工程教育
Collection of real test questions
openGauss内核:SQL解析过程分析
电子商务盛行,怎么提高商店转换率?
C语言文件操作
Lumiprobe 蛋白质标记研究方案
匿名函数this指向以及变量提升
微软独家付费功能,也被完美解锁了
实时Transformer:美团在单图像深度估计上的研究