POI簡單使用說明
1 依賴關(guān)系
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
2 主要操作對象
WorkBook : excel文件
Sheet : excel的sheet
Row : sheet里的一行
cell:row里的單元格
POI對于2007以前的版本有一套類,2007以后有一套類,這兩套類區(qū)別在于首字母一個是X,一個是H,但均實現(xiàn)了上面的對應(yīng)的接口,所以可以統(tǒng)一操作,無需關(guān)注這些細節(jié)。
3 上例子
public static void main(String[] args) throws Exception {
String filePath = "e:/test.xlsx";
Workbook book = new XSSFWorkbook();
// 寫數(shù)據(jù)到excel
Sheet sheet = book.createSheet("poi測試demo");
int totalRow = sheet.getPhysicalNumberOfRows();
Row row = sheet.createRow(totalRow);
row.createCell(0).setCellValue("序號");
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("性別");
row.createCell(3).setCellValue("多年以后,面對行刑隊,奧里雷亞諾.布恩迪亞上校將會回想起父親帶他去見識冰塊的那個遙遠的下午");
row.createCell(4).setCellValue(4);
//中文自適應(yīng)寬度
int length = row.getCell(3).getStringCellValue().getBytes("UTF-8").length * 256;
sheet.setColumnWidth(3,length);
FileOutputStream fos = new FileOutputStream(filePath);
book.write(fos);
book.close();
fos.close();
BufferedInputStream ins = new BufferedInputStream(new FileInputStream(filePath));
Workbook readBook = WorkbookFactory.create(ins);
//從excel讀數(shù)據(jù)
sheet = readBook.getSheetAt(0);
row = sheet.getRow(0);
String value = row.getCell(3).getStringCellValue();
System.err.println(value);
readBook.close();
}
需要注意是
使用Workbook readBook = WorkbookFactory.create(ins); 這句可以屏蔽xls與xlsx的差異,統(tǒng)一使用Workbook來操作。
中文自適應(yīng)寬度需要注意下,需要手動設(shè)置其寬度,設(shè)置cell寬度自適應(yīng)只對英文有效。
列寬度的操作應(yīng)該在所以數(shù)據(jù)填寫完畢后完成,否則會有性能損失。