当前位置:网站首页>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
边栏推荐
猜你喜欢
Unity SKFramework框架(二十二)、Runtime Console 运行时调试工具
OpenGL - Lighting
一次 Keepalived 高可用的事故,让我重学了一遍它
Blogger article navigation (classified, real-time update, permanent top)
LeetCode 31. 下一个排列
Huber Loss
Applet data attribute method
一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]
【阅读笔记】图对比学习 GNN+CL
Multiple solutions to one problem, asp Net core application startup initialization n schemes [Part 1]
随机推荐
信息与熵,你想知道的都在这里了
Shutter uses overlay to realize global pop-up
An article takes you into the world of cookies, sessions, and tokens
阿里十年测试带你走进APP测试的世界
LeetCode 31. 下一个排列
Creation and reference of applet
[beauty of algebra] singular value decomposition (SVD) and its application to linear least squares solution ax=b
Nips2021 | new SOTA for node classification beyond graphcl, gnn+ comparative learning
Kotlin introductory notes (I) kotlin variables and non variables
2310. 个位数字为 K 的整数之和
Progressive JPEG pictures and related
【组队 PK 赛】本周任务已开启 | 答题挑战,夯实商品详情知识
牛顿迭代法(解非线性方程)
Wechat applet obtains household area information
Understanding rotation matrix R from the perspective of base transformation
Newton iterative method (solving nonlinear equations)
Attention is all you need
Rebuild my 3D world [open source] [serialization-1]
混淆矩阵(Confusion Matrix)
信息與熵,你想知道的都在這裏了