一、Excel文件簡介
Excel是微軟公司開發的一種電子表格程序,多用於商業、財務、科學等各種數據處理。
Excel文件通常以.xls或.xlsx格式存儲,其中.xls格式為Excel 97-2003格式文件,後綴名為.xls,而.xlsx格式兼容Excel 2007及以上版本,後綴名為.xlsx。Excel文件能夠存儲大量的數據,並進行數據的編輯、排序、篩選、統計等操作。
二、Java讀取Excel文件
Java讀取Excel文件通常使用Apache POI組件,在使用之前需要引入以下依賴:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.1</version> </dependency>
首先需要創建一個Workbook對象,然後通過它獲取Sheet對象,在通過Sheet對象獲取Row和Cell對象,最後讀取單元格數據。
import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcelDemo { public static void main(String[] args) throws Exception { File file = new File("demo.xlsx"); InputStream is = new FileInputStream(file); Workbook workbook = new XSSFWorkbook(is); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { System.out.print(cell.getStringCellValue() + "\t"); } System.out.println(); } is.close(); } }
該示例中讀取了一個名為demo.xlsx的文件,獲取第一個Sheet並遍歷所有單元格,通過getCellType()方法獲取單元格的類型來讀取數據。在讀取完成後需關閉輸入流。
三、Java寫入Excel文件
Java寫入Excel文件同樣需要使用Apache POI組件,在使用之前也需要引入相關依賴。以下示例演示如何創建Excel文件並寫入數據:
import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Date; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class WriteExcelDemo { public static void main(String[] args) throws Exception { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row titleRow = sheet.createRow(0); Cell titleCell = titleRow.createCell(0); titleCell.setCellValue("標題"); Row dataRow = sheet.createRow(1); Cell dataCell = dataRow.createCell(0); dataCell.setCellValue(new Date().toString()); OutputStream os = new FileOutputStream("demo.xlsx"); workbook.write(os); os.close(); } }
該示例中創建了一個Workbook對象,通過createSheet()方法創建了一個名為Sheet1的Sheet對象,並通過createRow()方法創建了標題行和數據行,再通過setCellValue()方法設置單元格數據,最後通過FileOutputStream將數據寫入文件。
四、Java處理Excel文件
Java處理Excel文件還有很多其他的操作,例如合併單元格、設置字體、設置邊框等等。以下示例演示了如何將數據導出到Excel文件並設置標題行的樣式:
import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Date; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.BorderFormatting; import org.apache.poi.ss.usermodel.BorderSide; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFFont; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ExcelDemo { public static void main(String[] args) throws Exception { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); Row titleRow = sheet.createRow(0); CellStyle titleStyle = workbook.createCellStyle(); titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); XSSFFont font = ((XSSFWorkbook) workbook).createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontHeightInPoints((short) 16); titleStyle.setFont(font); for (int i = 0; i < 3; i++) { Cell titleCell = titleRow.createCell(i); titleCell.setCellValue("標題" + i); titleCell.setCellStyle(titleStyle); sheet.setColumnWidth(i, 8000); } for (int i = 1; i < 4; i++) { Row dataRow = sheet.createRow(i); for (int j = 0; j < 3; j++) { Cell dataCell = dataRow.createCell(j); dataCell.setCellValue(new Date().toString()); sheet.setColumnWidth(j, 6000); CellStyle dataStyle = workbook.createCellStyle(); dataStyle.setBorderTop(BorderFormatting.BORDER_THIN); dataStyle.setBorderBottom(BorderFormatting.BORDER_THIN); dataStyle.setBorderLeft(BorderFormatting.BORDER_THIN); dataStyle.setBorderRight(BorderFormatting.BORDER_THIN); dataCell.setCellStyle(dataStyle); } } OutputStream os = new FileOutputStream("demo.xlsx"); workbook.write(os); os.close(); } }
該示例中設置了標題行的對齊方式、字體大小、邊框樣式,並對各列的寬度進行了設置。同時也設置了數據行的邊框樣式,並在寫入文件前關閉了輸出流。
五、小結
本文詳細介紹了Java讀取、寫入和處理Excel文件的方式,並給出了相應的代碼示例,希望能夠對使用Java操作Excel文件的開發者們有所幫助。
原創文章,作者:VLDCM,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/372888.html