POI-Excel
apache poi - the java api for microsoft documents,顾名思义,apache的三方包,用来操作微软office文档的
poi的组件列表中,针对excel的主要是HSSF和XSSF组件,前者针对97-2007的通用版excel,即后缀xls;后者针对2007或更高版的excel,即后缀xlsx
核心类
工作簿 workbook
创建或维护excel工作簿的所有类的超接口,Workbook,属于org.apache.poi.ss.usermodel包,其下有两个实现类:
- HSSFWorkbook:有读取.xls格式和写入microsoft excel文件的方法。它与微软office07-2003版本兼容
- XSSFWorkbook:有读写microsoft excel和OpenOffice的xml文件的格式.xls或.xlsx的方法。它与MS-Office版本2007或更高版本兼容
所以针对不同版本的excel时,需要对应以上使用的不同Workbook
构造函数:
HSSFWorkbook
//直接创建
HSSFWorkbook()
//通过输入流创建
HSSFWorkbook(InputStream is)
XSSFWorkbook
//直接创建
XSSFWorkbook()
//通过file创建
XSSFWorkbook(File file)
//通过输入流创建
XSSFWorkbook(InputStream is)
标签页 Sheet
HSSFSheet和XSSFSheet都是Sheet接口的实现类,Sheet可以使用Workbook的两个方法获得:
workbook.createSheet();
workbook.createSheet(String sheetName);
行 Row
Row是HSSFRow和XSSFRow的接口,通过Sheet获取:
sheet.createRow(int rownum);
单元格 Cell
Cell是HSSFCell和XSSFCell的接口,通过Row获取:
row.createCell(int column);
row.createCell(int column,int type);
实例
依赖
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
创建空白excel
XSSFWorkbook workbook = new XSSFWorkbook();
OutputStream os = new FileOutputStream(new File("H:\\testDemo\\aaa.xlsx"));
workbook.write(os);
os.close();
获取表中数据
InputStream is = new FileInputStream("H:\\testDemo\\aaa.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(is);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
XSSFCell cell = row.getCell(0);
System.out.println(cell.getStringCellValue());
创建并填充excel
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("aaa");
for (int i=0; i<10; i++){
XSSFRow row = sheet.createRow(i);
for (int j=0; j<10; j++){
XSSFCell cell = row.createCell(j);
cell.setCellValue(i+":"+j);
}
}
FileOutputStream fos = new FileOutputStream("H:\\testDemo\\bbb.xlsx");
workbook.write(fos);
fos.close();