在poi包中有Apache提供的各种分类文件,如下
| 结构 | 功能 |
|---|---|
| HSSF | 读写Microsoft Excel XLS文件 |
| XSSF | 读写Microsoft Excel OOXML XLSX文件 |
| HWPF | 读写Microsoft Word DOC文件 |
| HSLF | 读写Microsoft PowerPoint文件 |
| 类org.apache.poi.xssf.usermodel | 对应结构 |
|---|---|
| XSSFWorkbook | 工作簿 |
| XSSFSheet | 工作表 |
| XSSFROW | 表中的行 |
| XSSFCell | 行中的单元格 |
从数据库中查询出List<实体类>的集合(查询数据,待处理)、创建工作薄对象、通过工作薄对象创建工作表对象、通过工作表对象创建工作行对象、通过工作行对象创建单元格对象、创建输出流、输出、刷新并关闭流资源、关闭工作薄资源。
每个阶段所创建的对象都会有不同的方法,用来规定工作表的格式信息等。
数据库数据结构:

- //利用利用Mapper(使用Mybatis-plus)从数据库中查处数据并封装到List中
- List
lovers = loverService.getLovers(); - //创建工作薄对象
- XSSFWorkbook xwb = new XSSFWorkbook();
- //创建工作表对象,并规定工作表名称
- XSSFSheet sheet = xwb.createSheet("测试表");
- //这里可以利用sheet对象规定和并单元格等等信息
- //根据工作表对象创建工作行,下标指定第几行
- XSSFRow xssfRow = sheet.createRow(0);
- //给第一行创建单元格并添加列名
- xssfRow.createCell(0).setCellValue("序号");
- xssfRow.createCell(1).setCellValue("账号");
- xssfRow.createCell(2).setCellValue("密码");
- //创建第二行的对象
- XSSFRow xssfRow1 = sheet.createRow(1);
- //创建第二行的单元格对象,并填充内容,这里因为List中只有一个Lover对象,所以采用比较取巧的办法,没有用增强for循环
- xssfRow1.createCell(0).setCellValue(lovers.get(0).getId());
- xssfRow1.createCell(1).setCellValue(lovers.get(0).getName());
- xssfRow1.createCell(2).setCellValue(lovers.get(0).getPassword());
- //创建输出流,规定输出路径
- OutputStream ops = new FileOutputStream("/Users/chenpei/Downloads/sendMysqlTableDir/new/ExcelTestDir");
- //利用工作薄对象写出
- xwb.write(ops);
- //刷新流、关闭流、关闭工作薄
- ops.flush();
- ops.close();
- xwb.close();
生成表结构:
