15

我正在使用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);

  提前致谢.. :)

谢谢马赫什

4

3 回答 3

41

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 的工作对象

于 2013-09-12T09:40:20.613 回答
10

我知道的主要区别是

Workbook 是一个接口,而 HSSFWorkbook、SXSSFWorkbook、XSSFWorkbook 是实现 Workbook 接口的类。

公共接口 Workbook Excel 工作簿的高级表示。这是大多数用户在阅读或编写工作簿时将构建的第一个对象。

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

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

于 2013-09-12T09:39:05.960 回答
3

什么是 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:此类具有读取和写入 .xls 格式的 Microsoft Excel 文件的方法。

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

HSSF工作簿

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

于 2017-01-24T13:07:49.343 回答