目录
3.1.1 在内存中创建一个Excel文件(等下还要写入到磁盘)
1 前言
Office软件的相关操作一般是通过开源项目Apache POI来实现的,接下来我将介绍Apache POI对Excel的基本使用方法,并通过其实现Excel表格导出功能。
2 依赖坐标
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</dependency>
3 Apache POI的基本使用方法
3.1 向Excel中写入内容
3.1.1 在内存中创建一个Excel文件(等下还要写入到磁盘)
XSSFWorkbook excel = new XSSFWorkbook();
3.1.2 在Excel中创建一个Sheet
XSSFSheet sheet = excel.createSheet("xxx");
3.1.3 创建行对象
注意:行编号从0开始,虽然在Excel中是从1开始
//在Excel中为第2行
XSSFRow row = sheet.createRow(1);
3.1.4 向单元格中填写内容
注意:列编号从0开始,虽然在Excel中是从1开始
//在Excel表格中的2行2列中写入了字符串姓名
row.createCell(1).setCellValue("姓名");
3.1.5 将创建的Excel写入磁盘
//通过输出流将内存中的Excel文件写入到磁盘
FileOutputStream out = new FileOutputStream(new File("D:\\xxx.xlsx"));
excel.write(out);
//最后记得关闭资源
out.close();
excel.close();
3.2 从Excel中读取内容
3.2.1 从磁盘中读取Excel
//从磁盘读取Excel
InputStream in = new FileInputStream(new File("D:\\xxx.xlsx"));
XSSFWorkbook excel = new XSSFWorkbook(in);
//其它代码...
//记得关闭资源
in.close();
excel.close();
3.2.2 获取Sheet
//根据编号获取Sheet,0表示第1个Sheet
XSSFSheet sheet = excel.getSheetAt(0);
//根据Sheet名获取
XSSFSheet sheet = excel.getSheet("Sheet1");
3.2.3 获取行对象
//获取第1行
XSSFRow row = sheet.getRow(0);
3.2.4 获取单元格对象
//以字符串形式获取第1行第2列的单元格对象
row.getCell(1).getStringCellValue();
4 Excel表格导出功能的实现
4.1 控制层
//因为需要通过输出流将Excel下载到浏览器
//所以需要一个HttpServletResponse对象
public Result export(HttpServletResponse httpServletResponse) {
//其它代码...
}
4.2 服务层
我们可以从resource文件夹下获取到我们的模板文件并向其中填写内容
public void export(HttpServletResponse httpServletResponse) {
//导入Excel
//获取输入流,通过如下方法可以从resource文件夹下获取到模板.xlsx
InputStream in = this.getClass().getClassLoader().getResourceAsStream("template/模板.xlsx");
try {
//在内存中创建一个工作簿对象
XSSFWorkbook workbook = new XSSFWorkbook(in);
//其它代码,填写Excel...
//通过输出流将Excel文件下载到客户端浏览器
ServletOutputStream out = httpServletResponse.getOutputStream();
workbook.write(out);
//关闭资源
out.close();
workbook.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}