SpringBoot导出excel文件-POI依赖实现

导出excel文件在工作中还是比较常见的的,能够实现的方式有很多
看客:博主有没有最最最简单的方式呢
我:有啊,用真心就可以
来看看我们怎么用真心实现,这里介绍使用POI依赖的HSSF组件实现导出excel文件,为什么介绍这种方式呢,,,问得好,因为我只会这种。。。
准备工作就不多说了,从底层开始咱们捋一遍就好,开始

要用的POI依赖

<dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi</artifactId>
     <version>3.9</version>
</dependency>

pojo层创建类,其属性和数据库表字段相同,我这里使用的是User类,含有id、userName、address和roleId四个属性

mapper层我使用Mybatis实现查询所有数据

@Mapper
public interface UserMapper {
    @Select("select * from user")
    List<User> getAllUsers();
}

service业务层创建接口和实现类,我这里实现类只作了返回从数据库层查询的所有数据,讲道理这里不该这么做,业务层应该就是封装业务的嘛,但是为了更方便理解和学习,我们把导出excel文件的一些设置放在了controller层,大家之后可以自己想想试试,怎么都放在业务层实现

@Service
public class UserServiceImpl implements UserService{
	@Resource
    private UserMapper userMapper;
    @Override
    public List<User> getAllUser() {
        return userMapper.getAllUsers();
    }
}

controller层,创建一个返回值为空的方法,方法参数为HttpServletResponse类型,这个参数不会从前端接收任何值,就是为导出excel文件做一些最后的设置的和写出的,直接上代码,总共分五步(前两步很弱智,中间两步都一样,最后一步固定用法,简简单单。。),具体解释大家看注解

@Controller
public class controller {
    @Resource
    private UserService userService;
 @RequestMapping("/exportExcel")
    @ResponseBody
    public void exportExcel(HttpServletResponse response){
//        1. 实例HSSFWorkbook对象
        HSSFWorkbook workbook1 = new HSSFWorkbook();

//        2. 创建一个excel文件里的sheet表格
        HSSFSheet sheet = workbook1.createSheet();

//        3. 设置sheet表格里的第一行
        HSSFRow row0 = sheet.createRow(0);
//        设置第一行每个单元格的值
        row0.createCell(0).setCellValue("用户id");
        row0.createCell(1).setCellValue("用户姓名");
        row0.createCell(2).setCellValue("用户地址");
        row0.createCell(3).setCellValue("用户角色id");

//         4. 获得数据库里的数据,也即要导出的数据
        List<User> userList = userService.getAllUsers();
//        循环将他们放入第二、三、四、五......行
        for (int i = 0; i < userList.size(); i++) {
            User user = userList.get(i);
            HSSFRow row = sheet.createRow(i + 1);
//            放入每行的对应单元格
            row.createCell(0).setCellValue(user.getId());
            row.createCell(1).setCellValue(user.getUserName());
            row.createCell(2).setCellValue(user.getAddress());
            row.createCell(3).setCellValue(user.getRoleId());
        }

//          5. 设置导出文件的格式、名字以及写出
        try {
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
//            user_Excel.xls为导出文件的名字
            response.setHeader("Content-Disposition","attachment;filename=user_Excel.xls");
            OutputStream out = response.getOutputStream();
            workbook1.write(out);
//            关闭输出流
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}

前端创建一个form表单或者ajax或者…没有要求当然怎么简单怎么来!超链接,走起!

<a th:href="@{/exportExcel}">导出excel</a>

导出结果:
在这里插入图片描述
最后说一点注意,如果把对HSSFWorkbook对象的设置放在业务层的话,业务层的返回值要是HSSFWorkbook类型的,controller调用该业务方法接收的变量类型也为HSSFWorkbook类型
HSSF组件还有很多用法,对字体、行高的设置等等;合并单元格也可以使用POI依赖实现,像这样

CellRangeAddress cellRange = new CellRangeAddress(开始行, 结束行, 开始列, 结束列);
// 将要合并的单元格设置到sheet表
sheet.addMergedRegion(cellRange);

大家自己探索吧,加油!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot导出Excel文件有很多种方式,以下是其中一种常用的方法: 1. 首先,你需要添加Apache POI依赖到你的项目中。在你的pom.xml文件中添加以下依赖: ```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. 创建一个Excel导出的Controller,例如: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @RestController public class ExcelController { @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws IOException { // 创建一个工作簿 Workbook workbook = new XSSFWorkbook(); // 创建一个工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 创建表头 Row headerRow = sheet.createRow(0); Cell headerCell = headerRow.createCell(0); headerCell.setCellValue("姓名"); // 创建数据行 Row dataRow = sheet.createRow(1); Cell dataCell = dataRow.createCell(0); dataCell.setCellValue("张三"); // 设置响应头信息 response.setHeader("Content-Disposition", "attachment; filename=example.xlsx"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); // 将工作簿写入到输出流 workbook.write(response.getOutputStream()); workbook.close(); } } ``` 3. 启动你的Spring Boot应用程序,并访问`/export`路径,将会自动下载一个名为`example.xlsx`的Excel文件。 注意:上述示例代码只是一个简单的示例,你可以根据自己的需求来生成Excel文件。另外,还可以使用其他库如EasyExcel等来导出Excel文件
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值