当前位置:网站首页>Project practice | excel export function
Project practice | excel export function
2022-07-05 09:26:00 【Going_ man】
Project practice | Excel Export function
Official documents : About Easyexcel | Easy Excel (alibaba.com)
One 、Excel Template fill export
scene : Export the teaching plan data of each teacher to each teacher named sheet
difficulty : According to the teacher data , Generate multiple named after teachers sheet Of Excel Template to fill ?
Solution :
1、 Generate Excel Template input IO flow :
①pom.xml To configure
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
② Pass the foundation Excel Templates , Generate multiple... Dynamically sheet Of Excel Template flow
Basics Excel Templates :
Generate multiple... Dynamically sheet Of excel Code of template flow :
private InputStream getTemplateIn(String fileName,List<TeachPlanList> teachPlanLists) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// There is only one original template sheet, adopt poi Copy what you need sheet Number of templates
XSSFWorkbook workbook = new XSSFWorkbook(new ClassPathResource(fileName).getInputStream());
// Set the first of the template sheet The name of
String sheet =teachPlanLists.get(0).getUserName()+"-"+ teachPlanLists.get(0).getUserId();
workbook.setSheetName(0,sheet);
for (int i = 1; i < teachPlanLists.size(); i++) {
// Copy template , Get the first i individual sheet
workbook.cloneSheet(0,teachPlanLists.get(i).getUserName()+"-"+teachPlanLists.get(i).getUserId());
}
// Write into the stream
workbook.write(bos);
byte[] bArray = bos.toByteArray();
return new ByteArrayInputStream(bArray);
}
2、 The generated Excel Input stream as template , Data filling , export Excel
public void exportTeachingPlanList(String schoolID, HttpServletResponse response) throws IOException {
List<TeachPlanList> teachPlanLists =teachPlanMgrBaseInfoMapper.selectTeachPlanBySchoolId(schoolID);
String fileName = URLEncoder.encode(" Statistics of personal teaching plan database ", "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");
InputStream is = getTemplateIn("excel/TeachPlanData.xlsx",teachPlanLists);
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
.withTemplate(is)
.registerConverter(new FileSizeConverter())
.build();
for (int i = 0; i < teachPlanLists.size(); i++) {
WriteSheet writeSheet = EasyExcel.writerSheet(i).build();
excelWriter.fill(teachPlanLists.get(i).getTeachPlanExcelInfoList(), writeSheet);
// Fill in individual statistics
Map<String, Object> map = new HashMap<>(2);
map.put("userName", teachPlanLists.get(i).getUserName());
map.put("countTeachPlan", teachPlanLists.get(i).getCountTeachPlan());
// Fill in the list data
excelWriter.fill(map, writeSheet);
}
excelWriter.finish();
}
3、 Export results display :
Two 、 Written by objects Excel
scene : Statistics and export data into documents
1、 structure Excel Export object
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ShareTpExcelInfo {
@ExcelProperty(" Sharer name ")
@ColumnWidth(15)
private String sharerName;
@ExcelProperty(" Number of lesson plans shared ")
@ColumnWidth(15)
private Integer sharerCount;
@ExcelProperty(" The number of times shared lesson plans have been used ")
@ColumnWidth(15)
private Integer useCount;
@ExcelProperty(" The average number of times shared lesson plans are used ")
@ColumnWidth(15)
@JSONField(name="AvgUseCount")
private Double avgUseCount;
}
2、 Export to Excel
public void exportShareTpExcel(HttpServletResponse response, List<ShareTpExcelInfo> list) throws IOException {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode(" Share teaching plan database data " + System.currentTimeMillis(), String.valueOf(StandardCharsets.UTF_8));
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), ShareTpExcelInfo.class).sheet(" Lesson plan data ").doWrite(list);
}
3、 The results derived
边栏推荐
- OpenGL - Model Loading
- High performance spark_ Transformation performance
- Unity skframework framework (XXII), runtime console runtime debugging tool
- Confusion matrix
- 交通运输部、教育部:广泛开展水上交通安全宣传和防溺水安全提醒
- C # compare the differences between the two images
- Progressive JPEG pictures and related
- Kotlin introductory notes (VIII) collection and traversal
- Composition of applet code
- Understanding rotation matrix R from the perspective of base transformation
猜你喜欢
Huber Loss
【ManageEngine】如何利用好OpManager的报表功能
Multiple solutions to one problem, asp Net core application startup initialization n schemes [Part 1]
3D reconstruction open source code summary [keep updated]
Applet (global data sharing)
Principle and performance analysis of lepton lossless compression
Introduction Guide to stereo vision (4): DLT direct linear transformation of camera calibration [recommended collection]
Wxml template syntax
Unity skframework framework (XXII), runtime console runtime debugging tool
Introduction Guide to stereo vision (2): key matrix (essential matrix, basic matrix, homography matrix)
随机推荐
交通运输部、教育部:广泛开展水上交通安全宣传和防溺水安全提醒
Blogger article navigation (classified, real-time update, permanent top)
Talking about the difference between unittest and pytest
深入浅出PyTorch中的nn.CrossEntropyLoss
OpenGL - Model Loading
scipy.misc.imread()
Kotlin introductory notes (I) kotlin variables and non variables
. Net service governance flow limiting middleware -fireflysoft RateLimit
OpenGL - Coordinate Systems
Greendao reported an error in qigsaw, could not init daoconfig
Priority queue (heap)
Huber Loss
scipy. misc. imread()
Codeworks round 681 (Div. 2) supplement
Introduction Guide to stereo vision (6): level constraints and polar correction of fusiello method
OpenGL - Lighting
[reading notes] Figure comparative learning gnn+cl
Figure neural network + comparative learning, where to go next?
[beauty of algebra] solution method of linear equations ax=0
[beauty of algebra] singular value decomposition (SVD) and its application to linear least squares solution ax=b