当前位置:网站首页>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
边栏推荐
猜你喜欢
Blogger article navigation (classified, real-time update, permanent top)
Node collaboration and publishing
图神经网络+对比学习,下一步去哪?
AUTOSAR from getting started to mastering 100 lectures (103) -dbc file format and creation details
C form click event did not respond
Svg optimization by svgo
What is a firewall? Explanation of basic knowledge of firewall
OpenGL - Model Loading
Nodemon installation and use
Unity SKFramework框架(二十二)、Runtime Console 运行时调试工具
随机推荐
Svg optimization by svgo
Composition of applet code
阿里云发送短信验证码
Wxss template syntax
Unity SKFramework框架(二十二)、Runtime Console 运行时调试工具
[ManageEngine] how to make good use of the report function of OpManager
[Yugong series] go teaching course 003-ide installation and basic use in July 2022
OpenGL - Model Loading
Applet network data request
Analysis of eventbus source code
Uni app implements global variables
fs. Path module
项目实战 | Excel导出功能
Unity SKFramework框架(二十三)、MiniMap 小地图工具
[beauty of algebra] singular value decomposition (SVD) and its application to linear least squares solution ax=b
Alibaba cloud sends SMS verification code
MYSQL 对字符串类型排序不生效问题
Kotlin introductory notes (III) kotlin program logic control (if, when)
嗨 FUN 一夏,与 StarRocks 一起玩转 SQL Planner!
[code practice] [stereo matching series] Classic ad census: (5) scan line optimization