在使用POI进行EXCELL操作的时候遇到一些问题,记录一下
1.导入的时候,对于纯数字的单元格,我们又希望以文本的形式读入内存,那么在读取数字文本之前,我们先把单元格的格式转换成文本类型的再读就行
FileInputStream fileIn = new FileInputStream("文件路径);
XSSFWorkbook wb0 = new XSSFWorkbook(fileIn);
XSSFSheet sht0 = wb0.getSheetAt(0);
XSSFRow r = sht0.getRow(1);
XSSFCell cell = r.getCell(0);
//读取数字之前先把单元格转换成文本类型就可以
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
System.out.println(cell.getStringCellValue());
2.对于POI的XSSF和HSSF都只支持xls、xlsx其中的一种,不能同时兼容2种格式的导入,解决办法是使用顶层接口访问所有格式的EXCELL,因为是顶层接口,所以子类的很多方法会不能使用,但是主要的内容是可以正常读取的
FileInputStream bis = new FileInputStream("文件路径);
Row row = null;
Cell cell = null;
Workbook workbook = WorkbookFactory.create(bis);
Sheet sheet = workbook.getSheetAt(0);
row = sheet.getRow(0);
cell = row.getCell(i);
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
String tmp = cell.getStringCellValue();
bis.close();
//这里的Row,Cell,Sheet,Workbook都是顶层接口,会丢掉一些实现类的功能,但是能满足我们的大部分要求
3.POI可以使用maven导入jar包,这里要注意的就是poi-ooxml的配置,没有它,XSSF将会使用不了,但是HSSF是可以正常使用的
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>