当前位置:网站首页>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 20:05: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)@Datapublic 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 !
边栏推荐
- 1002_ twenty million one hundred and eighty-one thousand and nineteen
- Software supply chain security risk guide for enterprise digitalization and it executives
- Compression and decompression commands
- C # application interface development foundation - form control
- 【算法篇】刷了两道大厂面试题,含泪 ”重学数组“
- 电子科大(申恒涛团队)&京东AI(梅涛团队)提出用于视频问答的结构化双流注意网络,性能SOTA!优于基于双视频表示的方法!...
- 28 rounds of interviews with 10 companies in two and a half years
- Echart: category text position adjustment of horizontal histogram
- 集合之ArrayList
- 请允许当下国内ToB的「不完美」
猜你喜欢

首部元宇宙概念小说《元宇宙2086》获得2022年上袭元宇宙奖

集合之ArrayList

Rsync remote synchronization

Fontawesome icon for color gradient

How to obtain the coordinates of the aircraft passing through both ends of the radar

Ali open source (easyexcel)

Jenkins pipeline's handling of job parameters
![return new int[]{i + 1, mid + 1}; return {i + 1, mid + 1};](/img/6a/45a4494276deba72ef9833818229f5.png)
return new int[]{i + 1, mid + 1}; return {i + 1, mid + 1};
![[go language questions] go from 0 to entry 5: comprehensive review of map, conditional sentences and circular sentences](/img/7a/16b481753d7d57f50dc8787eec8a1a.png)
[go language questions] go from 0 to entry 5: comprehensive review of map, conditional sentences and circular sentences

Figure introduction to neural networks (GNN, GCN)
随机推荐
[algorithm] I brushed two big factory interview questions and learned array again with tears in my eyes“
类加载机制与对象的创建
Troubleshooting of pyinstaller failed to pack pikepdf
Use of WC command
Tcwind mode setting
Markdown Mermaid planting grass (1)_ Introduction to Mermaid
Average score of 100 people
Autumn recruitment experience sharing | how to prepare for bank interview
Kettle (VI): full database backup based on kettle
Database learning notes (sql04)
Jenkins pipeline's handling of job parameters
Figure introduction to neural networks (GNN, GCN)
2. 整合 Filter
5G NR MBS架构介绍
How to learn JS through w3school / how to use the JS reference manual of w3school
压缩与解压缩命令
Quaternion quaternion and Euler angle Transformation in Ros
裁员真能拯救中国互联网?
Echart: category text position adjustment of horizontal histogram
1. 整合 Servlet