apache POI中HSSFWorkbook与Workbook的区别

She*_*y's 13 apache-poi

我正在使用apachePOI库研究excel的读/写,我找到了两种类型的解决方案,即一种使用HSSFWorkbook实现,另一种使用Workbook实现.现在我怀疑为什么有两种解决方案来实现单一功能.

我的代码:

FileInputStream fis=new FileInputStream("D:\\Extras\\SeleniumPractice\\TestData.xlsx");     
Workbook workbook=WorkbookFactory.create(fis);
Sheet sheet=workbook.getSheet("TestData");
Run Code Online (Sandbox Code Playgroud)

当我搜索:

FileInputStream file = new FileInputStream(new File("C:\\test.xls"));

             
//Get the workbook instance for XLS file 
HSSFWorkbook workbook = new HSSFWorkbook(file);

 
//Get first sheet from the workbook
HSSFSheet sheet = workbook.getSheetAt(0);
Run Code Online (Sandbox Code Playgroud)

  提前致谢.. :)

谢谢Mahesh

Gag*_*arr 34

工作簿是通用接口,适用于HSSF(.xls)和XSSF(.xlsx).它是在POI 3.5中引入的,如果我的记忆是正确的.

如果使用Workbook等通用接口,则可以使用相同的代码透明地使用HSSF和XSSF

如果您只通过HSSFWorkbook编写HSSF代码,则只能使用.xls文件.我建议你尽可能选择常见的

您的加载代码应该是这样的:

 Workbook wb = WorkbookFactory.create(new File("test.xls"));
 Sheet s = wb.getSheetAt(0);
 ....
Run Code Online (Sandbox Code Playgroud)

这将自动检测文件的类型,并根据找到的内容返回.xls或.xlsx的工作对象


San*_*ngh 10

我知道的主要区别是

工作簿是一个界面,而HSSFWorkbook,SXSSFWorkbook,XSSFWorkbook是实现工作簿界面的分支.

公共接口工作簿 Excel工作簿的高级表示形式.这是大多数用户构建的第一个对象,无论他们是在阅读还是编写工作簿.

公共最终类HSSFWorkbook扩展了POIDocument实现工作簿 .xls工作簿的高级表示.这是大多数用户构建的第一个对象,无论他们是在阅读还是编写.xls工作簿.

有关详细信息,请参阅POI api文档