Springboot 后端下载excel文件

Springboot 后端下载excel文件

maven依赖

<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>
class Person{
    private String name;
    private String age;
    private String phoneNum;
}
@GetMapping("/download")
    public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //读取数据库中所有符合查询条件的数据
        List<Person> list =  service.getAll();
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("表名"+end+".xlsx", "UTF-8"));
        ServletOutputStream outputStream = response.getOutputStream();
        exportExcel(list, outputStream);

        outputStream.flush();
        outputStream.close();
    }
private void exportExcel(List<Person> list, OutputStream outputStream) throws IOException {
        //新建Excel和sheet
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet();
        //设置单元格格式
        CellStyle cellStyle = workbook.createCellStyle();
        //左右居中
        cellStyle.setAlignment(HorizontalAlignment.CENTER);
        //垂直居中
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        //设置表头
        Row forthRow = sheet.createRow(0);
        Cell CellA1 = forthRow.createCell(0);
        CellA1.setCellValue("名称");
        Cell CellB1 = forthRow.createCell(1);
        CellB1.setCellValue("年龄");
        Cell CellC1 = forthRow.createCell(2);
        CellC1.setCellValue("电话");

        // 设置单元格样式 - 日期格式
        CellStyle dateCellStyle = workbook.createCellStyle();
        dateCellStyle.setDataFormat(workbook.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));
        //导入数据
        int rownum = 1;
        for (Person p: list) {
            XSSFRow row = sheet.createRow(rownum++);
            row.createCell(0).setCellValue(p.getName());
            row.createCell(1).setCellValue(p.getAge());
            row.createCell(2).setCellValue(p.getPhoneNum());
        }
        workbook.write(outputStream);
    }
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实导入导出Excel功能可以使用Apache POI库,这里提供一个基于Spring Boot的简单示例代码。 1.添加依赖 在pom.xml文件中添加以下依赖: ```xml <!--excel导入导出--> <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.实现导出Excel接口 ```java @GetMapping("/export") public void export(HttpServletResponse response) throws IOException { // 创建工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); // 创建工作表 XSSFSheet sheet = workbook.createSheet("Sheet1"); // 设置表头 String[] headers = {"姓名", "年龄", "性别"}; XSSFRow headerRow = sheet.createRow(0); for (int i = 0; i < headers.length; i++) { XSSFCell cell = headerRow.createCell(i); cell.setCellValue(headers[i]); } // 填充数据 List<User> userList = userService.getAll(); for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); XSSFRow row = sheet.createRow(i + 1); row.createCell(0).setCellValue(user.getName()); row.createCell(1).setCellValue(user.getAge()); row.createCell(2).setCellValue(user.getGender()); } // 输出Excel文件 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=user.xlsx"); workbook.write(response.getOutputStream()); workbook.close(); } ``` 3.实现导入Excel接口 ```java @PostMapping("/import") public void importExcel(@RequestParam("file") MultipartFile file) throws IOException { // 读取Excel文件 XSSFWorkbook workbook = new XSSFWorkbook(file.getInputStream()); XSSFSheet sheet = workbook.getSheetAt(0); // 解析数据 List<User> userList = new ArrayList<>(); for (int i = 1; i <= sheet.getLastRowNum(); i++) { XSSFRow row = sheet.getRow(i); User user = new User(); user.setName(row.getCell(0).getStringCellValue()); user.setAge((int) row.getCell(1).getNumericCellValue()); user.setGender(row.getCell(2).getStringCellValue()); userList.add(user); } // 批量插入数据库 userService.batchInsert(userList); workbook.close(); } ``` 以上代码仅供参考,具体实现可根据自己的业务需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值