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