POI报表的概述
POI是Apache提供的专门用来操作office软件的类库
在企业级应用开发中,Excel报表是一种最常见的报表需求。Excel报表开发一般分为两种形式:
1、为了方便操作,基于Excel的报表批量上传数据
2、通过java代码生成Excel报表。
Excel的两种形式
目前世面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本;
两者之间的区别如下:
Excel2003是一个特有的二进制格式,其核心结构是复合文档类型的结构,存储数据量较小;
Excel2007 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小,操作效率更高
什么是POI
Apache POI是Apache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java语言操作Microsoft Office的功能。
Apache POI是目前最流行的操作Microsoft Office的API组件,借助POI可以方便的完成诸如:数据报表生成,数据批量上传,数据备份等工作
POI的API介绍
工作簿 : WorkBook (HssfWordBook : 2003版本,XssfWorkBook : 2007级以上)
工作表/页: Sheet
行 : Row
单元格 : Cell
单元格样式: CellStyle
小Demo练习一下
- 导入依赖
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
java代码创建Excel
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
//创建一个Excel并且向里面随便写入一句话
public class POIDemo1 {
public static void main(String[] args) throws Exception{
// XSSFWorkbook 工作薄 一个Excel文件
// XSSFSheet 工作表 Excel中的工作表
// XSSFRow 行 每个工作表的行
// XSSFCell 单元格 每个行中的单元格
// XSSFCellStyle 单元格样式
// 1、创建一个全新的工作薄 里面什么都没有
XSSFWorkbook workbook = new XSSFWorkbook();
// 2、创建一个工作表
XSSFSheet sheet = workbook.createSheet("测试");
// 设置列宽
sheet.setColumnWidth(0,17*256); // 单位 1代表一个字母的256分之一
// 3、创建第一行行
XSSFRow row = sheet.createRow(0);
// 4、创建第一个单元格
XSSFCell cell = row.createCell(0);
// 5、向单元格中放一句话
cell.setCellValue("这是我第一次玩POI");
// 6、把Excel输出到磁盘上
workbook.write(new FileOutputStream("d://demo.xlsx"));
workbook.close();
}
}
java代码读取Excel
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//读取一个Excel中的内容
public class POIDemo2 {
public static void main(String[] args) throws Exception{
// 1、创建一个的工作薄
XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream("d://demo.xlsx"));
// 2、获取一个工作表
XSSFSheet sheet = workbook.getSheetAt(0);
// 3、获取第一行行
XSSFRow row = sheet.getRow(0);
// 4、获取第一个单元格
XSSFCell cell = row.getCell(0);
// 5、获取单元格中的内容
String value = cell.getStringCellValue();
System.out.println(value);
workbook.close();
}
}