使用Java POI库写入Excel

Excel是一种非常常用的电子表格软件,可以用于数据分析、报表制作等。在Java开发中,我们可以使用Java POI库来操作Excel文件。Java POI库是Apache软件基金会提供的一组用于读写Microsoft Office文件的Java API。

准备工作

在使用Java POI库之前,我们需要在项目中引入相应的依赖。可以通过在项目的pom.xml文件中添加以下依赖来引入Java POI库:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>

创建Excel文件

要创建一个新的Excel文件,我们首先需要创建一个Workbook对象。Workbook代表整个Excel文件,在其中可以包含多个Sheet。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelWriter {
    public static void main(String[] args) throws Exception {
        // 创建Workbook对象
        Workbook workbook = new XSSFWorkbook();

        // 创建Sheet对象
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建行对象
        Row row = sheet.createRow(0);

        // 创建单元格对象,并设置值
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, World!");

        // 保存Excel文件
        FileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");
        workbook.write(fileOutputStream);
        fileOutputStream.close();

        // 关闭Workbook对象
        workbook.close();
    }
}

在上面的代码中,我们创建了一个XSSFWorkbook对象作为Workbook,表示一个新的Excel文件。然后,我们创建了一个名为"Sheet1"的Sheet,并在第一行第一列创建了一个单元格,并设置了值为"Hello, World!"。最后,我们将Workbook保存到文件中,并关闭Workbook。

写入数据

除了简单地写入字符串之外,我们还可以写入其他类型的数据,如日期、数字等。下面是一个示例代码,演示如何写入日期和数字:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.util.Date;

public class ExcelWriter {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        Row row = sheet.createRow(0);

        // 写入日期
        Cell dateCell = row.createCell(0);
        dateCell.setCellValue(new Date());

        // 写入数字
        Cell numericCell = row.createCell(1);
        numericCell.setCellValue(3.14159);

        FileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");
        workbook.write(fileOutputStream);
        fileOutputStream.close();

        workbook.close();
    }
}

在上面的代码中,我们创建了两个单元格,一个用于写入日期,一个用于写入数字。通过调用setCellValue()方法,我们将相应的值设置到单元格中。

格式化单元格

除了写入数据之外,我们还可以对单元格进行格式化,如设置字体、颜色、边框等。下面是一个示例代码,演示如何格式化单元格:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelWriter {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");
        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);

        // 设置字体
        Font font = workbook.createFont();
        font.setFontName("Arial");
        font.setFontHeightInPoints((short) 12);
        font.setBold(true);

        // 设置单元格样式
        CellStyle style = workbook.createCellStyle();
        style.setFont(font);
        style.setAlignment(HorizontalAlignment.CENTER);

        // 设置单元格值和样式
        cell.setCellValue("Hello, World!");
        cell.setCellStyle(style);

        FileOutputStream fileOutputStream = new FileOutputStream("output.xlsx");
        workbook.write(fileOutputStream);
        fileOutputStream.close();

        workbook.close();
    }
}

在上面的代码中,我们首先创建了一个Font对象,用于设置字体的名称、大小和粗细。然后,我们创建了一个CellStyle对象,并将字体样式设置到该样式中。最后,我们将样式应用