0


springboot 使用ExcelUtil实现文件导入、导出、模板下载

1、Excel 模板下载

controller层

1.1、使用Swagger 注解,表示该接口方法用于 Excel 模板下载操作

1.2、定义接口方法,接受一个 HttpServletResponse 对象作为参数,用于响应生成的 Excel 文件

1.3、创建了一个 ExcelUtil 对象,并指定了数据模型类,(ExcelUtil 是一个自定义的工具类,用于处理 Excel 文件的导入和导出操作)

1.4、调用 ExcelUtil 的

importTemplateExcel

方法,将 Excel 模板文件导出到 HttpServletResponse 对象中。该方法的第一个参数是 HttpServletResponse 对象,用于响应生成的 Excel 文件;第二个参数是导出的 Excel 文件名,这里设置为 "用能数据模板结构"

@ApiOperation(value = "Excel模板下载")
@PostMapping("/importDownload")
public void importExcel(HttpServletResponse response) throws IOException {
    ExcelUtil<DownloadPowerInfoExcelTemplate> util = new ExcelUtil<>(DownloadPowerInfoExcelTemplate.class);
    util.importTemplateExcel(response, "用能数据模板结构");
}

2、Excel表格导入

controller层

2.1、使用 Swagger 注解的方法说明,表示该接口方法用于天然气消费结构的 Excel 导入操作

2.2、定义接口,接口接受一个 MultipartFile 对象作为参数,用于接收上传的 Excel 文件,并返回一个 Result<Boolean> 对象

  @ApiOperation(value = "用能数据Excel导入")
    @PostMapping("/importExcel ")
    public Result<Boolean> importExcel (MultipartFile file) throws Exception {
        ExcelUtil<DownloadPowerInfoExcelTemplate> util = new ExcelUtil<>(DownloadPowerInfoExcelTemplate.class);
        List<DownloadPowerInfoExcelTemplate> list = util.importExcel(file.getInputStream());
        return Result.success(service.importExcel(list));
    }

service层

2.3、通过

sqlSessionFactory

openSession

方法进行初始化。

ExecutorType.BATCH

表示使用批量执行方式,

false

表示不自动提交事务

2.4、通过

sqlSession

获取一个

PowerNetworkMapper

的实例,用于执行数据库操作

2.5、调用

template

对象的

converToPowerNetwork

方法将其转换为

PowerNetwork

对象,并将转换后的结果赋值给

powerNetwork

变量

2.6、调用

mapper

对象的

insertPlant

方法将

powerNetwork

对象插入数据库中

2.7、调用

ExcelUtil

类的

printBatchCount

方法,将

sqlSession

的未执行的批处理语句刷新到数据库,并返回受影响的行数是否大于 0。如果插入成功并且受影响的行数大于 0,则返回

true

,否则返回

false
Boolean importExcel(List<DownloadPowerNetworkExcelTemplate> list);

 @Override
    public Boolean importExcel(List<DownloadPowerNetworkExcelTemplate> list) {
        try (SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, false)) {
            PowerNetworkMapper mapper = sqlSession.getMapper(PowerNetworkMapper.class);
            for (DownloadPowerNetworkExcelTemplate template : list) {
                PowerNetwork powerNetwork = template.converToPowerNetwork();
                mapper.insertPlant(powerNetwork);
            }
            return ExcelUtil.printBatchCount(sqlSession.flushStatements()) > 0;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

3、Excel表格导出

controller层

3.1、入参:两个参数:

response

是一个 HttpServletResponse 对象,用于响应导出的数据;

request

是一个通过请求体传递的 QueryPlantInformationRequest 对象,包含导出列表所需的查询条件

3.2、判断开始时间和结束时间是否为空,整合入参的形式

3.3、调用

powerNetworkService

list

方法,传入

request

对象作为参数,获取电力信息的列表信息,并将结果赋值给

list

变量

3.4、创建一个 ExcelUtil 实例,该实例用于导出 Excel 数据,调用 ExcelUtil 的

exportExcel

方法,将

dataList

中的数据导出为 Excel 文件,并使用 "电力网络" 作为文件名。导出的文件将通过

response

对象进行响应

 @ApiOperation(value = "导出列表")
    @PostMapping("/plantInfoExport")
    public void plantInfoExport(HttpServletResponse response, @RequestBody QueryPlantInformationRequest request) throws IOException {
        if (StringUtils.isNotEmpty(request.getStartTime())){
            String startTime = request.getStartTime().replace("-", "").replace("/", "");
            request.setStartTime(startTime);
        }
        if (StringUtils.isNotEmpty(request.getEndTime())) {
            String endTime = request.getEndTime().replace("-", "").replace("/", "");
            request.setEndTime(endTime);
        }
        List<PlantInformationResponse> list = service.list(request);
        if (CollectionUtil.isNotEmpty(list)) {
            List<PlantInfoExportResponse> dataList = new ArrayList<>();
            list.forEach(item -> dataList.add(item.coverToPlantInfoResponse()));
            ExcelUtil<PlantInfoExportResponse> util = new ExcelUtil<>(PlantInfoExportResponse.class);
            util.exportExcel(response, dataList, "电力信息");
        }
    }
标签: spring boot java 后端

本文转载自: https://blog.csdn.net/m0_72956561/article/details/131480014
版权归原作者 mitsuii 所有, 如有侵权,请联系我们删除。

“springboot 使用ExcelUtil实现文件导入、导出、模板下载”的评论:

还没有评论