EasyExcel的导入和导出
程序员文章站
2024-03-20 14:20:52
...
导入:
下面是从http请求流中读取数据流,其他形式的数据流道理相同;
逻辑代码:
@PostMapping(value = "import", consumes = "multipart/*", headers = "content-type=multipart/form-data")
public String import(MultipartHttpServletRequest request) {
log.info("import批量录入数据开始");
String fileName="";
try {
Map<String, MultipartFile> fileMap = request.getFileMap();
for (Map.Entry<String, MultipartFile> part : fileMap.entrySet()) {
InputStream inputStream = part.getValue().getInputStream();
fileName=part.getValue().getOriginalFilename();
Boolean isExcel = FileUtil.isExcelFile(fileName);//就是判断下扩展名是不是xls、xlsx;
if (!isExcel) {
throw new ValidateException("导入的文件不是excel文件");
}
List<Data> data = new LinkedList<>();
EasyExcel.read(inputStream).head(Data.class).autoTrim(true).registerReadListener(
new AnalysisEventListener<ByteArea>() {
@Override
public void invoke(Data data1, AnalysisContext analysisContext) {
data.add(data1);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("读取文件[{}]成功,一共:{}行......", part.getKey(), data.size());
}
}
).doReadAll();//读取所有的sheet;
importService.import(data);
}
} catch (Exception e) {
log.error("批量录入数据异常", e);
return "批量录入数据异常";
}
return "批量录入数据正常";
}
类的属性注解中的value要和Excel列头的名字相同,保证Excel数据可以映射到对象的属性中:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Data implements Serializable {
/**
* 区域id
*/
@ExcelProperty("areaCode")
private String areaCode;
/**
* 区域名称
*/
@ExcelProperty("areaName")
private String areaName;
/**
* 父级id
*/
@ExcelProperty("fatherId")
private String fatherId;
/**
* 级别
*/
@ExcelProperty("level")
private Integer level;
}
POM依赖引入:
<properties>
<easyExcel.version>2.2.6</easyExcel.version>
</properties>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyExcel.version}</version>
</dependency>
导出:
下面是导出的核心部分代码,可根据实际场景进行调整代码
ByteArrayOutputStream os = new ByteArrayOutputStream();
ExcelWriter excelWriter = EasyExcel.write(os).build();
WriteSheet writeSheet = EasyExcel.writerSheet("第" + (i - 1) + "部分").build();
excelWriter.write(page.getResult(), writeSheet);
excelWriter.finish();
os.close();
推荐阅读
-
EasyExcel的导入和导出
-
掌财社:Java如何使用EasyExcel实现导入导出excel
-
EasyExcel的导入导出(最新版)
-
java使用阿里的easyExcel实现Excel导出功能
-
POI 和 easyExcel 的简介
-
使用POI和DynaBean导出Excel的完整例子 ExcelApacheSQLStrutsBean
-
使用POI和DynaBean导出Excel的完整例子 ExcelApacheSQLStrutsBean
-
mxnet通过模型的json文件和params文件导出模型的结构图
-
oracle expdp导出和impdp导入使用方法
-
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能