读书人

poi使用有关问题总结

发布时间: 2012-09-17 12:06:52 作者: rapoo

poi使用问题总结
poi是由apache开发的分析微软office文档的工具包,其中比较常用的是excel组件。以下总结遇到的几个问题。

1.兼容07和03时的bug

public static Workbook getWorkbook(InputStream is) {          Workbook wb = null;          try {               // 2007               wb = new XSSFWorkbook(is);          } catch (Exception e) {               // 2003               try {                    wb = new HSSFWorkbook(is);               } catch (Exception ex) {                    ex.printStackTrace();               }          }          return wb;     }

当读取03的xls时,会报错:
java.io.IOException: Read error

原因:is流已经被XSSFWorkbook读取了,所以is流再给HSSFWorkbook读取时就会出现问题。
解决:
public static Workbook getWorkbook(byte[] data) {          Workbook wb = null;          try {               // 2007               wb = new XSSFWorkbook(new ByteArrayInputStream(data));          } catch (Exception e) {               // 2003               try {                    wb = new HSSFWorkbook(new ByteArrayInputStream(data));               } catch (Exception ex) {                    ex.printStackTrace();               }          }          return wb;     }


2.使用foreach读取row时不返回空白单元格
for(Row row : sheet) {}

比如内容为:
账号 密码 昵称 性别
1 123 a 1
2 123 1
第一行row返回[1,123,a,1]
第二行row返回[1,123,1],注意这里跳过了昵称。
要返回每个单元格的内容,必须使用row.getCell(序号)的方式,比如:
nameCell=row.getCell(0);pwdCell=row.getCell(1);nicknameCell=row.getCell(2);genderCell=row.getCell(3);

如果cell为null,就表示空白。

读书人网 >编程

热点推荐