Java程序生成Excel文件

在日常工作和项目开发中,我们经常需要将数据导出为Excel文件,便于数据的查看和分析。本文将介绍如何使用Java程序生成Excel文件,并通过代码示例演示具体实现步骤。

准备工作

在开始之前,我们需要准备以下两个软件包:

  • Apache POI:一个用于操作Microsoft Office文件(如Excel、Word和PowerPoint)的Java库。我们将使用它来创建和写入Excel文件。
  • Java Development Kit(JDK):Java开发所需的软件包。

确保你的电脑上已经安装了JDK,并在项目中添加了Apache POI的依赖。

创建Excel文件

首先,我们需要创建一个新的Excel文件。通过以下代码示例,我们可以创建一个名为"example.xlsx"的Excel文件,并在第一个工作表中添加一个名为"Sheet1"的工作表。

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

public class ExcelGenerator {
    public static void main(String[] args) {
        // 创建新的工作簿
        Workbook workbook = new XSSFWorkbook();
        
        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // 保存Excel文件
        try {
            FileOutputStream fileOut = new FileOutputStream("example.xlsx");
            workbook.write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 关闭工作簿
        try {
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用XSSFWorkbook类创建了一个新的工作簿,并使用createSheet方法创建了一个名为"Sheet1"的工作表。然后,我们使用FileOutputStream将工作簿写入到名为"example.xlsx"的Excel文件中。最后,我们通过close方法关闭了工作簿。

添加数据到Excel文件

接下来,我们将向Excel文件中添加一些数据。通过以下代码示例,我们可以在第一个工作表的第一个单元格中添加一个字符串。

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

public class ExcelGenerator {
    public static void main(String[] args) {
        // 创建新的工作簿
        Workbook workbook = new XSSFWorkbook();
        
        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // 创建第一行
        Row row = sheet.createRow(0);
        
        // 创建第一个单元格并添加数据
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, World!");
        
        // 保存Excel文件
        try {
            FileOutputStream fileOut = new FileOutputStream("example.xlsx");
            workbook.write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 关闭工作簿
        try {
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们使用createRow方法创建了第一行,并使用createCell方法创建了第一个单元格。然后,我们使用setCellValue方法向单元格中添加了字符串数据。

生成饼状图

在Excel文件中添加饼状图可以更直观地展示数据。下面是一个示例代码,演示如何在第一个工作表中生成饼状图。

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

public class ExcelGenerator {
    public static void main(String[] args) {
        // 创建新的工作簿
        Workbook workbook = new XSSFWorkbook();
        
        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");
        
        // 创建数据行
        Row row1 = sheet.createRow(0);
        Row row2 = sheet.createRow(1);
        
        // 创建数据单元格
        Cell cell11 = row1.createCell(0);
        Cell cell12 = row1.createCell(1);
        Cell cell21 = row2.createCell(0);
        Cell cell22 = row2.createCell(1);
        
        // 添加数据
        cell11.setCellValue("Category 1");
        cell12.setCellValue("Category 2");
        cell21.setCellValue(50);
        cell22.setCellValue(50);
        
        // 创建绘图空间
        Drawing<?> drawing = sheet.createDrawingPatriarch();
        
        // 创建饼状图
        ClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0,