对于同时支持
HSSF以及
XSSF读取和重写
*.xls和
*.xlsx,你会使用WorkbookFactory创建工作簿。这是能够创造
Workbook从
InputStream的
*.xls以及的
*.xlsx文件。
FileInputStream fileinputstream = new FileInputStream("pathToExcelFile.xls_or_.xlsx"); Workbook workbook = WorkbookFactory.create(fileinputstream);
然后,您将尽可能地使用Package
org.apache.poi.ss.usermodel包的接口,而不是特殊的
HSSF或
XSSF类的接口。
apachepoi到目前为止,这并不总是可行的。但是,如果不可能,您可以通过
instanceof实际使用的对象(
HSSF或
XSSF)进行检测。
而对于写,你会使用相关的适当的方法
instanceof的
Workbook。
if (workbook instanceof XSSFWorkbook) { workbook.write(new FileOutputStream("pathToExcelFile.xlsx")); } else if (workbook instanceof HSSFWorkbook) { workbook.write(new FileOutputStream("pathToExcelFile.xls")); } workbook.close();
截至
apache poi 3.17
Workbook.write已关闭
OutputStream。现在在
apache poi4.0.*版本中,它不再关闭
OutputStream。所以我们需要使用
FileOutputStream out = null; if (workbook instanceof XSSFWorkbook) out = new FileOutputStream("pathToExcelFile.xlsx"); else if (workbook instanceof HSSFWorkbook) out = new FileOutputStream("pathToExcelFile.xls"); if (out != null) { workbook.write(out); out.close(); } workbook.close();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)