当前位置:网站首页>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 
边栏推荐
- Applet network data request
- Kotlin introductory notes (VIII) collection and traversal
- [code practice] [stereo matching series] Classic ad census: (6) multi step parallax optimization
- np.allclose
- c语言指针深入理解
- Applet customization component
- 什么是防火墙?防火墙基础知识讲解
- nodejs_ 01_ fs. readFile
- Explain NN in pytorch in simple terms CrossEntropyLoss
- Rebuild my 3D world [open source] [serialization-3] [comparison between colmap and openmvg]
猜你喜欢
![[reading notes] Figure comparative learning gnn+cl](/img/44/2e13d63ef654663852cbccb342b838.png)
[reading notes] Figure comparative learning gnn+cl
![[code practice] [stereo matching series] Classic ad census: (6) multi step parallax optimization](/img/54/cb1373fbe7b21c5383580e8b638a2c.jpg)
[code practice] [stereo matching series] Classic ad census: (6) multi step parallax optimization

Unity SKFramework框架(二十四)、Avatar Controller 第三人称控制

Hi Fun Summer, play SQL planner with starrocks!

A detailed explanation of the general process and the latest research trends of map comparative learning (gnn+cl)

nodejs_ 01_ fs. readFile

An article takes you into the world of cookies, sessions, and tokens

Priority queue (heap)

生成对抗网络

OpenGL - Coordinate Systems
随机推荐
Svg optimization by svgo
High performance spark_ Transformation performance
Progressive JPEG pictures and related
3D reconstruction open source code summary [keep updated]
LeetCode 556. 下一个更大元素 III
阿里云发送短信验证码
nodejs_ 01_ fs. readFile
Codeworks round 681 (Div. 2) supplement
Wxss template syntax
2310. The number of bits is the sum of integers of K
Nodemon installation and use
Introduction Guide to stereo vision (1): coordinate system and camera parameters
Codeforces round 684 (Div. 2) e - green shopping (line segment tree)
生成对抗网络
Hosting environment API
利用请求头开发多端应用
[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation
Rebuild my 3D world [open source] [serialization-1]
[ctfhub] Title cookie:hello guest only admin can get flag. (cookie spoofing, authentication, forgery)
Confusion matrix