java应用集锦8:使用poi进行excel操作,同时支持excel2003和2007
下面的这段代码仅仅支持excel2003,要同时支持2007和2003的excel请看后半部分!!
经常使用exlce的操作,以前工作使用的jxl,现在工作又使用poi.还好以前总结过,轻松搞定.这里再次把代码贴出来,可以直接使用.
?ExcelReader.java(仅对2003的excel操作有效!)
public ExcelReader(File exl) throws IOException { fis = new FileInputStream(exl); workbook = WorkbookFactory .create(fis); msg = new StringBuffer(); } public ExcelReader(String exlFileName) throws IOException {File file = new File(exlFileName);fis = new FileInputStream(file);workbook = WorkbookFactory .create(fis);msg = new StringBuffer();} public ExcelReader(InputStream input) throws IOException {workbook =WorkbookFactory .create(fis);msg = new StringBuffer();}??
在实践中,遇到了这样的一个异常:
java.lang.NegativeArraySizeException
1 楼 米奇风 2011-10-21 作者代码风格很规范,这篇文章很好,消除大多数人在开发过程中的疑惑,一针见血
??????? at org.apache.poi.hssf.record.SSTDeserializer.readStringRemainder(SSTDeserializer.java:335)
??????? at org.apache.poi.hssf.record.SSTDeserializer.processContinueRecord(SSTDeserializer.java:320)
??????? at org.apache.poi.hssf.record.SSTRecord.processContinueRecord(SSTRecord.java:539)
??????? at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:216)
??????? at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:181)
??????? at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:228)
??????? at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:209)
?找了很久,结果换成使用最新的poi包,以及修改使用上面的create()创建新的workBook对象就可以了(后来不改这个类也可以,仅仅换包就行了),有点奇怪,不知道怎么引起的...