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); Iterator rowIterator = 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兩個類庫的用法及其區別。當然,在實際應用開發中,還需要根據具體需求進行更為靈活的調整和操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/159852.html