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、通过 sqlSessionFactoryopenSession 方法进行初始化。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、调用 powerNetworkServicelist 方法,传入 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, "电力信息");
        }
    }

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring Boot可以通过使用Apache POI库来实现Excel导入导出。以下是实现步骤: 1. 添加依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 实现导出 创建一个ExcelUtil类,实现导出功能。以下是示例代码: ``` public class ExcelUtil { public static void export(List<User> userList, OutputStream outputStream) throws IOException { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("User List"); // 创建表头 XSSFRow headerRow = sheet.createRow(); headerRow.createCell().setCellValue("ID"); headerRow.createCell(1).setCellValue("Name"); headerRow.createCell(2).setCellValue("Age"); // 填充数据 int rowNum = 1; for (User user : userList) { XSSFRow row = sheet.createRow(rowNum++); row.createCell().setCellValue(user.getId()); row.createCell(1).setCellValue(user.getName()); row.createCell(2).setCellValue(user.getAge()); } // 输出Excel文件 workbook.write(outputStream); workbook.close(); } } ``` 3. 实现导入 创建一个ExcelUtil类,实现导入功能。以下是示例代码: ``` public class ExcelUtil { public static List<User> importFile(InputStream inputStream) throws IOException { List<User> userList = new ArrayList<>(); XSSFWorkbook workbook = new XSSFWorkbook(inputStream); XSSFSheet sheet = workbook.getSheetAt(); // 读取数据 for (int i = 1; i <= sheet.getLastRowNum(); i++) { XSSFRow row = sheet.getRow(i); User user = new User(); user.setId((int) row.getCell().getNumericCellValue()); user.setName(row.getCell(1).getStringCellValue()); user.setAge((int) row.getCell(2).getNumericCellValue()); userList.add(user); } workbook.close(); return userList; } } ``` 以上就是使用Spring Boot实现Excel导入导出的步骤。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值