Java生成Excel表格
Excel是一种非常常见的办公软件,它可以用来存储和处理各种数据。在Java中,我们可以使用一些开源的库来生成和操作Excel表格。本文将介绍如何使用Java生成Excel表格,并通过代码示例详细说明。
1. Apache POI库
Apache POI是一个用于读取和写入Microsoft Office格式文件的开源Java库,包括Excel、Word和PowerPoint等格式。它提供了丰富的API,可以方便地操作Excel表格。
1.1 安装Apache POI库
要使用Apache POI库,首先需要在项目中添加相关的依赖。在Maven项目中,可以在pom.xml
文件中添加以下代码:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
1.2 创建Excel表格
我们首先需要创建一个Excel表格,并添加一些数据。以下是一个示例代码,用于创建一个包含两个工作表的Excel表格,并向每个工作表添加一些数据:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelGenerator {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook()) {
// 创建第一个工作表
Sheet sheet1 = workbook.createSheet("Sheet1");
// 创建第二个工作表
Sheet sheet2 = workbook.createSheet("Sheet2");
// 向第一个工作表添加数据
Row row1 = sheet1.createRow(0);
Cell cell1 = row1.createCell(0);
cell1.setCellValue("Hello");
Cell cell2 = row1.createCell(1);
cell2.setCellValue("World");
// 向第二个工作表添加数据
Row row2 = sheet2.createRow(0);
Cell cell3 = row2.createCell(0);
cell3.setCellValue("Java");
Cell cell4 = row2.createCell(1);
cell4.setCellValue("Excel");
// 保存Excel表格到文件
try (FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")) {
workbook.write(fileOut);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用XSSFWorkbook
类创建了一个新的Excel工作簿。然后,我们使用createSheet
方法创建了两个工作表,并使用createRow
方法创建了行,使用createCell
方法创建了单元格。最后,我们使用FileOutputStream
将工作簿写入到文件中。
1.3 读取Excel表格
除了创建Excel表格,我们还可以使用Apache POI库来读取现有的Excel表格。以下是一个示例代码,用于读取之前创建的Excel表格:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
public static void main(String[] args) {
try (FileInputStream fileIn = new FileInputStream("workbook.xlsx");
Workbook workbook = new XSSFWorkbook(fileIn)) {
// 获取第一个工作表
Sheet sheet1 = workbook.getSheetAt(0);
// 获取第二个工作表
Sheet sheet2 = workbook.getSheetAt(1);
// 读取第一个工作表的数据
Row row1 = sheet1.getRow(0);
Cell cell1 = row1.getCell(0);
System.out.println(cell1.getStringCellValue());
Cell cell2 = row1.getCell(1);
System.out.println(cell2.getStringCellValue());
// 读取第二个工作表的数据
Row row2 = sheet2.getRow(0);
Cell cell3 = row2.getCell(0);
System.out.println(cell3.getStringCellValue());
Cell cell4 = row2.getCell(1);
System.out.println(cell4.getStringCellValue());
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们使用FileInputStream
从文件中读取Excel表格。然后,我们使用getSheetAt
方法获取工作表,使用getRow
方法获取行,使用getCell
方法获取单元格,并使用getStringCellValue
方法获取单元格的值。
2. EasyExcel库
EasyExcel是另一个开源的用于读写Excel文件的Java库。它提供了简单易用的API,可以高效地生成和解析Excel文件。