提供公共方法 List<Map<Integer, String>> listMap = EasyExcel.read(fileName).sheet().doReadSync(); for (Map<Integer, String> data : listMap) { // 返回每条数据的键值对 表示所在的列 和所在列的值 log.info("读取到数据:{}", JSON.toJSONString(data)); }
时间: 2024-04-28 20:27:02 浏览: 76
这是什么语言的代码?
这段代码提供了一个公共方法来读取 Excel 文件中的数据,并将每行数据转换为一个键值对,其中键为所在列的索引,值为该列的值。具体来说,它使用 EasyExcel 库来读取 Excel 文件,并返回一个 List<Map<Integer, String>> 类型的数据结构。每个 Map 表示一行数据,其中键为列的索引,值为该列的值。你可以使用这个方法来快速读取 Excel 文件并进行数据处理。
相关问题
提炼公共方法 List<Map<Integer, String>> listMap = EasyExcel.read(fileName).sheet().doReadSync(); for (Map<Integer, String> data : listMap) { // 返回每条数据的键值对 表示所在的列 和所在列的值 log.info("读取到数据:{}", JSON.toJSONString(data)); }
这段代码可以提炼成一个方法,可以将文件名作为参数传入,返回一个包含所有数据的List<Map<Integer, String>>。方法如下:
public static List<Map<Integer, String>> readExcel(String fileName) {
return EasyExcel.read(fileName).sheet().doReadSync();
}
然后可以在调用的地方直接使用该方法,如下:
List<Map<Integer, String>> listMap = readExcel(fileName);
for (Map<Integer, String> data : listMap) {
// 返回每条数据的键值对 表示所在的列 和所在列的值
log.info("读取到数据:{}", JSON.toJSONString(data));
}
easyexcel 数据校验多个sheet页数据,并把错误信息已文件方式下载返回
可以使用 EasyExcel 的校验器来实现数据校验,具体步骤如下:
- 定义校验规则
// 定义校验规则
List<ExcelVerifyHandler> verifyHandlers = new ArrayList<>();
verifyHandlers.add(new MyVerifyHandler());
其中,MyVerifyHandler
是自定义的校验器,需要实现 ExcelVerifyHandler
接口。
- 执行数据校验
// 执行数据校验
ExcelReader excelReader = EasyExcel.read(inputStream).build();
excelReader.read(new Sheet(1, 1), new AnalysisEventListenerAdapter() {
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
// 校验器初始化
context.buildExcelVerifyHandlerChain().addAll(verifyHandlers);
}
@Override
public void onException(Exception exception, AnalysisContext context) {
// 异常处理
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 数据处理完成
}
});
其中,inputStream
是需要校验的 Excel 文件输入流,Sheet(1, 1)
表示校验第一个 sheet 页的数据。
- 获取错误信息并输出到文件
// 获取校验结果
List<ExcelVerifyResult> verifyResults = context.readWorkbookHolder().getExcelVerifyHandlerResultList();
// 输出错误信息到文件
if (!verifyResults.isEmpty()) {
// 生成错误信息文件
String outputFilePath = "error.xlsx";
ExcelWriter excelWriter = EasyExcel.write(outputFilePath).build();
// 写入错误信息到 Excel 文件
WriteSheet writeSheet = EasyExcel.writerSheet(0, "错误信息").build();
List<List<String>> errorData = new ArrayList<>();
verifyResults.forEach(result -> errorData.add(Arrays.asList(
result.getRowIndex().toString(),
result.getColumnIndex().toString(),
result.getMsg()
)));
excelWriter.write(errorData, writeSheet);
excelWriter.finish();
// 下载错误信息文件
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=" + outputFilePath);
try (InputStream inputStream = new FileInputStream(outputFilePath);
OutputStream outputStream = response.getOutputStream()) {
IOUtils.copy(inputStream, outputStream);
} finally {
Files.deleteIfExists(Paths.get(outputFilePath));
}
}
其中,verifyResults
是校验结果列表,每个元素包含错误的行号、列号和错误信息。可以将错误信息写入到一个 Excel 文件中,并将文件下载到客户端。
相关推荐















