Apache POI的使用
Apache POI 是一个用于处理 Microsoft Office 文档的 Java 库。使用 Apache POI,你可以创建、读取和修改 Excel、Word 和 PowerPoint 文档。它提供了一组 API,使得在 Java 程序中可以方便地操作这些文档。你可以使用 Apache POI 创建新的文档,读取现有的文档内容,修改文档的结构和样式,以及执行其他与 Office 文档相关的操作。
第一步:引入依赖
导入Apache POI的maven坐标。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi}</version>
</dependency>
第二步: 进行写操作
Demo:进行创建Excel表格,生成Sheet页,书写内容,将文件写入磁盘。
代码如下:
/**
* 通过POI创建Excel文件并且写入文件内容
*/
public static void write() throws Exception{
//在内存中创建一个Excel文件
XSSFWorkbook excel = new XSSFWorkbook();
//在Excel文件中创建一个Sheet页
XSSFSheet sheet = excel.createSheet("info");
//在Sheet中创建行对象,rownum编号从0开始
XSSFRow row = sheet.createRow(1);
//创建单元格并且写入文件内容
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("城市");
//创建一个新行
row = sheet.createRow(2);
row.createCell(1).setCellValue("张三");
row.createCell(2).setCellValue("北京");
row = sheet.createRow(3);
row.createCell(1).setCellValue("李四");
row.createCell(2).setCellValue("南京");
//通过输出流将内存中的Excel文件写入到磁盘
FileOutputStream out = new FileOutputStream(new File("D:\\info.xlsx"));
excel.write(out);
//关闭资源
out.close();
excel.close();
}
运行结果:
总结:根据运行结果来看,apache poi的代码可读性很强,跟我们手动创建Excel表格差不多,首先,1.new XSSFWorkbook 创建Excel 2.excel.createSheet 创建Sheet页 3.sheet.createRow(index) 获取sheet里面点的index行(这里的index是从0开始计算) 4.row.createCell(index).setCellValue(“value”) 给index行里面的index列设置value值 5.通过IO流将excel写入到指定磁盘。
进行读操作
Demo:读取上面那个写入案例的内容。
代码如下:
/**
* 通过POI读取Excel文件中的内容
* @throws Exception
*/
public static void read() throws Exception{
InputStream in = new FileInputStream(new File("D:\\info.xlsx"));
//读取磁盘上已经存在的Excel文件
XSSFWorkbook excel = new XSSFWorkbook(in);
//读取Excel文件中的第一个Sheet页
XSSFSheet sheet = excel.getSheetAt(0);
//获取Sheet中最后一行的行号
int lastRowNum = sheet.getLastRowNum();
for (int i = 1; i <= lastRowNum ; i++) {
//获得某一行
XSSFRow row = sheet.getRow(i);
//获得单元格对象
String cellValue1 = row.getCell(1).getStringCellValue();
String cellValue2 = row.getCell(2).getStringCellValue();
System.out.println(cellValue1 + " " + cellValue2);
}
//关闭资源
in.close();
excel.close();
}
运行结果:
总结:读跟写是差不多的,apche poi的可读性代码很强,从代码可以看出,读也是选好需要读的excel的磁盘地址,然后,获取指定的sheet页,然后,通过行号跟列号来指定需要读取的内容。
导出数据报表
现在有一个项目(苍穹外卖),我们要实现数据报表导出,我们在做这些数据报表到处是,可以先把数据模板写好,然后通过程序填写数据。
1.导入模板
2.加载模板
//2. 通过POI将数据写入到Excel文件中
InputStream in = this.getClass().getClassLoader()
.getResourceAsStream("template/运营数据报表模板.xlsx");
3.创建Excel
//基于模板文件创建一个新的Excel文件
XSSFWorkbook excel = new XSSFWorkbook(in);
4.获取Sheet
//获取表格文件的Sheet页
XSSFSheet sheet = excel.getSheet("Sheet1");
5.填写数据
6.将Excel下载到客户端浏览器
//3. 通过输出流将Excel文件下载到客户端浏览器
ServletOutputStream out = response.getOutputStream();
excel.write(out);
效果展示
总结:
以上就是apche poi的基本使用了,主要是介绍了poi对excel的创建,然后生成sheet页,在对表格进行操作,填写数据,还有就是对excel表格内容的获取。这个技术,跟我们平时操作excel表格方式差不多,代码可读性也很好。