apache POI中HSSFWorkbook与Workbook的区别

时间:2013-09-12 09:26:12

标签: 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");

当我搜索时:

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);

在此先感谢.. :))

由于 马赫什

3 个答案:

答案 0 :(得分:32)

Workbook是通用接口,适用于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);
 ....

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

答案 1 :(得分:10)

我知道的主要区别是

Workbook是一个界面,而HSSFWorkbook,SXSSFWorkbook,XSSFWorkbook是实现Workbook界面的分支。

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

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

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

答案 2 :(得分:2)

  

什么是Apache POI?

Apache POI is a popular API that allows programmers to create, modify, 
and display MS Office files using Java programs. 

Apache POI是Apache Software Foundation提供的100%开源库。

  

工作簿

这是创建或维护Excel工作簿的所有类的超级界面。它 属于org.apache.poi.ss.usermodel包。这两个类 实现此接口如下:

(1)。 HSSFWorkbook:此类具有读取和写入Microsoft Excel的方法 .xls格式的文件。

(2).XSSFWorkbook:此类具有读取和写入Microsoft Excel的方法 和.xls或.xlsx格式的OpenOffice xml文件。

  

HSSFWorkbook

它是org.apache.poi.hssf.usermodel包下的高级类。它 实现Workbook接口,用于.xls格式的Excel文件。