Excel是一种数据记录和处理工具,近年来,它也越来越成为了许多企业和机构中不可或缺的工具。HSSFWorkBook和XSSFWorkBook是Java中两个主要的Excel处理类库,它们提供了Excel读写、修改、创建等常规操作的方法。在这篇文章中,我们将从多个方面详细介绍HSSFWorkBook和XSSFWorkBook的用法及其不同之处。
一、创建工作簿
创建Excel工作簿是Excel文件处理的第一步。无论是使用HSSFWorkBook还是XSSFWorkBook创建工作簿,首先需要引入相关的类库:
//HSSF相关 import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.CellReference; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; //XSSF相关 import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet;
对于一个HSSFWorkBook工作簿的创建,可以使用以下代码:
HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellValue("Hello World");
上述代码首先创建了一个HSSFWorkbook对象,然后创建了名为“sheet1”的HSSFSheet对象,接着创建第1行的HSSFRow对象,最后在其中创建第1列的HSSFCell对象并将其值设置为“Hello World”。
而对于XSSFWorkBook工作簿的创建,可以使用以下代码:
XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("sheet1"); XSSFRow row = sheet.createRow(0); XSSFCell cell = row.createCell(0); cell.setCellValue("Hello World");
可以看出,HSSFWorkBook和XSSFWorkBook的创建方式非常相似,唯一的差别就在于前者用到的类库是HSSF,后者用到的类库是XSSF。
二、读取Excel文件
Java中读取Excel文件,是Excel处理应用功能的常用方式。POI库中提供了一些类来帮助我们读取Excel文件。以下就是一个从Excel文件中读取数据的例子。
//HSSF相关 FileInputStream input = new FileInputStream(new File("workbook.xls")); HSSFWorkbook workbook = new HSSFWorkbook(input); HSSFSheet sheet = workbook.getSheetAt(0); IteratorrowIterator = sheet.iterator(); while(rowIterator.hasNext()) { HSSFRow row = (HSSFRow)rowIterator.next(); Iterator
cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { HSSFCell cell = (HSSFCell)cellIterator.next(); System.out.print(cell.toString() + " "); } System.out.println(""); } //XSSF相关 FileInputStream input = new FileInputStream(new File("workbook.xlsx")); XSSFWorkbook workbook = new XSSFWorkbook(input); XSSFSheet sheet = workbook.getSheetAt(0); Iterator | rowIterator = sheet.iterator(); while(rowIterator.hasNext()) { XSSFRow row = (XSSFRow)rowIterator.next(); Iterator
cellIterator = row.cellIterator(); while(cellIterator.hasNext()) { XSSFCell cell = (XSSFCell)cellIterator.next(); System.out.print(cell.toString() + " "); } System.out.println(""); } |
由于HSSFWorkBook和XSSFWorkBook以及其相关类库都是从POI库中引入的,因此在读取Excel文件时,它们的区别不是很大。不同的地方在于HSSFWorkBook使用.xls文件格式,而XSSFWorkBook使用.xlsx文件格式。
三、添加样式
Excel表格中的样式非常重要,它能够使得表格看起来更加美观、易读。以下是如何为Excel表格添加样式的代码示例。
//HSSF相关 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellValue(1.2); HSSFCellStyle style = workbook.createCellStyle(); style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00")); cell.setCellStyle(style); //XSSF相关 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("sheet1"); XSSFRow row = sheet.createRow(0); XSSFCell cell = row.createCell(0); cell.setCellValue(1.2); XSSFCellStyle style = workbook.createCellStyle(); style.setDataFormat(workbook.createDataFormat().getFormat("0.00")); cell.setCellStyle(style);
上述代码创建了一个HSSFWorkBook或XSSFWorkBook对象,并在其上创建了一个名为“sheet1”的表格。接着创建指向表格中单元格的对象,并在其中填入数值1.2。最后,又创建封装样式信息的HSSFCellStyle或XSSFCellStyle对象,并将其设置为特定的单元格的样式。
四、使用函数
Excel表格中的公式是Excel表格的核心功能,可以对表格数据进行非常灵活的操作。以下示例为如何在Excel表格中使用函数。
//HSSF相关 HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("sheet1"); HSSFRow row = sheet.createRow(0); HSSFCell cell = row.createCell(0); cell.setCellFormula("SUM(A1:A2)"); //XSSF相关 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("sheet1"); XSSFRow row = sheet.createRow(0); XSSFCell cell = row.createCell(0); cell.setCellFormula("SUM(A1:A2)");
在上述代码中,我们可以看到,HSSFWorkBook和XSSFWorkBook的区别处在于使用的类库不同。但是在使用函数时,它们的方法非常类似,都可以使用setCellFormula()函数来设置要使用的公式。在上述代码中,我们设置了Excel表格中求和函数的公式,即将A1和A2单元格的数值相加求和。
五、写入文件
最后,我们需要将在Excel表格中所做的修改写入到Excel文件。以下示例代码为如何将Excel表格写入到文件中。
//HSSF相关 FileOutputStream out = new FileOutputStream(new File("workbook.xls")); workbook.write(out); out.close(); //XSSF相关 FileOutputStream out = new FileOutputStream(new File("workbook.xlsx")); workbook.write(out); out.close();
在上述代码中,我们创建一个输出流,并将Excel表格写入到文件中,最后关闭输出流。这是为Excel文件保存所必需的步骤,否则,对Excel表格的修改无法被保存。
六、总结
本文从创建工作簿、读取Excel文件、添加样式、使用函数、写入文件五个方面,详细介绍了HSSFWorkBook和XSSFWorkBook两个类库的用法及其区别。当然,在实际应用开发中,还需要根据具体需求进行更为灵活的调整和操作。