一、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文件的开发者们有所帮助。