首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

poi使用有关问题总结

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

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,就表示空白。

热点排行