当前位置:网站首页>[tools] a few lines of code can realize complex excel import and export tool classes, which is really strong!!!
[tools] a few lines of code can realize complex excel import and export tool classes, which is really strong!!!
2022-07-24 08:05:00 【Small source】
Catalog
Two 、alanpoi import What are the advantages ?
How do you use it? alanpoi Implement import
Function is introduced
One 、IMPORT
ExcelHandleCore processorExcelWorkbookManageexcel All sheet management**ExcelInitConfigConfiguration file initializationAbstractFileParserFile conversion class
Two 、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
alanpoiFlexible and scalable , ProvidesExcelConsumeInterfaceInterface , You can inherit it , Realizationvalid、error、endThree ways to write your own businessvalid: 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
1. To configure
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>2. Inherit
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);3. call
The user calls ExcelExportUtil Class customImportData that will do , Parameters excelId Namely excel-conifg.xml Configured in id.
Export
1、 describe
It can be implemented in one line of code without the second line , If I can't , Then add another line !
2、 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"
3、 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;
}4、 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)5、 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);End of the flower !!!
Friends, this is the end of our content today , Today's content is still very simple , If there are any friends who can't, we can talk together ~
If your friends feel that the content of the article is helpful to you , Sure give the thumbs-up , Follow articles and columns as well as Pay attention to me , Hey, hey, I'll update the article regularly , Thank you for your support !
边栏推荐
- POJ3278抓住那头牛题解
- Common DOS commands
- Do you want to have a robot that can make cartoon avatars in three steps?
- 【MATLAB】(三)MATLAB在高等数学中的应用
- Error reported by Nacos: error Nacos failed to start, please see d:\nacos\logs\nacos log for more details.
- Anaconda cannot shut down the method of forced shutdown
- 加密熊市:有人大举扩张 有人裁员收缩
- *Code understanding * common function parsing in pytoch
- Vidar-Team战队专访:AS WE DO, AS YOU KNOW.
- Android kotlin uses a coroutine instead of a callback function (suspendcoroutine usage)
猜你喜欢

Kubernetes:(一)基本概念

jmeter中JSON提取器使用

Full revolutionary Siamese networks for object tracking translation

Hcip day 8 notes

Anaconda cannot shut down the method of forced shutdown

33-SparkSql的介绍、DataFrame和DataSet

Avoid pitfalls and stay away from PUA in the workplace. You need to know the common routines and scripts of PUA!

学习笔记总结篇(一)

33 introduction to sparksql, dataframe and dataset

Android kotlin uses a coroutine instead of a callback function (suspendcoroutine usage)
随机推荐
Kotlin higher order function & DSL layout persuasion Guide
Learn - use do... While loop according to the formula e=1+1/1+ 1/2!+ 1/3!+…+ 1/n! Calculate the value of E (accuracy is 1e-6)
Solve the problem that Anaconda navigator cannot be opened
A simple mobile terminal todo
EZDML reverse engineering import database analysis practical operation tutorial
Robert operator, Sobel operator, Laplace operator
Anaconda cannot shut down the method of forced shutdown
NFT概念究竟是怎么回事。。全面了解NFT市场、技术和案例
Basic operation of queue
Case practice - panoramic image mosaic: feature matching method
VIDAR team team exclusive interview: as we do, as you know
What is the NFT concept.. Fully understand NFT market, technology and cases
When does MySQL use table locks and row locks?
Qt|字符串生成二维码功能
SIFT feature point extraction
Anaconda install pytorch
Use of animation expert motionlayout layout
1005. Maximized array sum after K negations
Kubernetes: (I) basic concepts
Devops essay