我正在使用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);
在此先感谢.. :))
由于 马赫什
答案 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文件。