当前位置:网站首页>Excel import / export convenience tool class
Excel import / export convenience tool class
2022-06-28 11:38:00 【Mi Qi】
Preface
in the light of Excel operation ,alanpoi To make the operation simpler , Develop more efficient tools , Developers don't need to care too much about logic , You only need to deal with the parts related to your business ; Change numerous for brief , The principle of "from simplification to refinement"
Project use :
<dependency>
<groupId>com.alanpoi</groupId>
<artifactId>alanpoi-analysis</artifactId>
<version>1.3.4</version>
</dependency>Function is introduced
Api document
adopt Api doc Learn more about it !
One . 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 ,alanpoi All for , And return exactly what you need , Reduce developer workload
- At 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 A. valid: Method parameters return excel All the data , Users can perform self verification B. error: Import errors will call back C. 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
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
Export using annotation mode
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);边栏推荐
- 随机森林以及 AMR 训练出的诗词制造器
- Day34 JS notes regular expression 2021.09.29
- Solve the problem of reading package listsdonebuilding dependency treereading state informationdone
- Thesis reading (59):keyword based diverse image retrieval with variable multiple instance graph
- JS foundation 4
- Word、PDF、TXT文件实现全文内容检索需要用什么方法?
- 什么是DAPP系统发展与解析理解
- 100 important knowledge points that SQL must master: retrieving data
- [semidrive source code analysis] [x9 chip startup process] 32 - play module analysis - RTOS side
- New listing of operation light 3.0 - a sincere work of self subversion across the times!
猜你喜欢

Day34 JS notes regular expression 2021.09.29

Making and using of static library

JS foundation 3

For example, the visual appeal of the live broadcast of NBA Finals can be seen like this?

Join hands with cigent: group alliance introduces advanced network security protection features for SSD master firmware

Blue Bridge Cup Maze (dfs+ backtracking)

The default point of this in JS and how to modify it to 2021.11.09

Wealth management for programmers

Day29 JS notes 2021.09.23

人人都可以参与开源!龙蜥社区最不容错过的开发者活动来了
随机推荐
Convert the file URL in the browser to a file stream
Basic 02: variable, remember the mobile number of the object
day28 严格模式、字符串 js 2021.09.22
setInterval、setTimeout和requestAnimationFrame
windows 10下载安装mysql5.7
东方财富手机股票开户哪个券商更安全更方便?
GEE:基于 MCD64A1 的 GlobFire 日常火灾数据集
动态库(共享库)的制作和使用
时间戳和date转换「建议收藏」
This Exception was thrown from a job compiled with Burst, which has limited exception support. report errors
Cannot redeclare block range variables
工作组环境下的内网渗透:一些基础打法
100 important knowledge points that SQL must master: retrieving data
day39 原型鏈及頁面烟花效果 2021.10.13
面试步骤的面试技巧
Which broker is safer and more convenient to open an account for Oriental Fortune mobile stock?
[sciter]:sciter如何使用i18实现桌面应用多语言切换及其利弊
培训通知|2022年境外中资企业机构及人员疫情防控和安全防范专题培训通知
Solve the problem of reading package listsdonebuilding dependency treereading state informationdone
Fancy features and cheap prices! What is the true strength of Changan's new SUV?