您的位置:

hssf和xssf的区别

一、概览

Apache的POI项目是一个Java的开源库,用于读取和写入Office的文件格式(例如:doc,xls和ppt)。对于Excel电子表格文件,POI提供了两种实现:HSSF(Horrible SpreadSheet Format)和XSSF(XML SpreadSheet Format)。

HSSF是POI项目中的旧实现,它使用原生的Microsoft Excel格式进行操作。XSSF是POI项目中的新实现,它使用XML的OOXML(Office Open XML)格式进行操作。

两种实现的区别不仅限于它们使用的文件格式,还包括它们的功能要素以及在使用过程中的一些细节上。

二、文件格式的差异

Excel文件在HSSF和XSSF实现中使用的格式有所不同。HSSF使用二进制的格式,这种格式的文件扩展名为.xls。XSSF使用XML的OOXML格式,这种格式的文件扩展名为.xlsx。因为XML格式是一种开放的标准,所以XSSF更容易与其他基于XML的工具和技术进行协同工作。

三、功能要素的差异

1、处理能力

因为XSSF使用XML格式,所以与HSSF相比,它有更多的功能,并且可以处理更大的电子表格文件。XSSF可以处理由15,000个工作表组成的工作簿,每个工作表可以有1,048,576行和16,384列。相比之下,HSSF最多只能处理380个工作表,每个工作表只能有65,536行和256列。

2、效率

相比之下,HSSF更快且更节省内存。这是因为XML格式的处理需要更多的时间和空间,而HSSF使用的二进制格式更快。在处理较小的电子表格文件时,HSSF通常比XSSF更快。这也意味着对于需要大量处理的电子表格,使用HSSF可能更加可行,而对于需要处理多种格式的电子表格,使用XSSF可能更好。

四、细节方面的差异

从API的角度来看,HSSF和XSSF有一些细节方面的差异。

1、类的名称

 // HSSF
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.usermodel.HSSFRow;

 // XSSF
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFRow;

2、获取字符数据的方法名称

 // HSSF
 HSSFCell.getCellTypeEnum()  -> HSSFCell.getCellType()

 // XSSF
 XSSFCell.getCellTypeEnum() -> XSSFCell.getCellType()

3、日期格式的设置

 // HSSF
 HSSFCellStyle.ALIGN_RIGHT

 // XSSF
 HorizontalAlignment.RIGHT

五、代码示例

以下是针对HSSF和XSSF的代码示例:

// 创建工作簿
// HSSF
HSSFWorkbook workbook = new HSSFWorkbook();

// XSSF
XSSFWorkbook workbook = new XSSFWorkbook();

// 获取工作表
// HSSF
HSSFSheet sheet = workbook.createSheet("Sheet1");

// XSSF
XSSFSheet sheet = workbook.createSheet("Sheet1");

// 创建行
// HSSF
HSSFRow row = sheet.createRow((short)0);

// XSSF
XSSFRow row = sheet.createRow(0);

// 获取单元格的内容
// HSSF
HSSFCell cell = row.getCell((short)0);
String value = cell.getRichStringCellValue().getString();

// XSSF
XSSFCell cell = row.getCell(0);
String value = cell.getStringCellValue();