使用Java生成xlsx文件到本地

本文将介绍如何使用Java生成xlsx文件并保存到本地。xlsx是一种常见的电子表格文件格式,可以在Microsoft Excel和其他电子表格软件中打开和编辑。

准备工作

在开始之前,确保你已经安装了Java开发环境(JDK)并配置好了环境变量。我们将使用Apache POI库来生成xlsx文件,因此需要将其添加到项目的依赖中。

在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入Apache POI库:

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

如果你是使用其他构建工具,可以根据对应的方式引入Apache POI库。

生成xlsx文件

首先,我们需要创建一个xlsx文件并添加数据。以下是一个简单的示例代码:

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

import java.io.FileOutputStream;
import java.io.IOException;

public class XlsxGenerator {

    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建标题行
        Row headerRow = sheet.createRow(0);
        Cell headerCell = headerRow.createCell(0);
        headerCell.setCellValue("姓名");

        // 创建数据行
        Row dataRow = sheet.createRow(1);
        Cell dataCell = dataRow.createCell(0);
        dataCell.setCellValue("张三");

        // 保存xlsx文件
        try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
            workbook.write(outputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们首先创建了一个Workbook对象,这是xlsx文件的顶层容器。然后,我们使用createSheet方法创建了一个名为"Sheet1"的工作表。

接下来,我们创建了标题行和数据行。通过调用createRow方法创建行对象,然后通过调用createCell方法创建单元格对象,并使用setCellValue方法设置单元格的值。

最后,我们使用FileOutputStreamWorkbook对象写入到一个文件中,文件名为"output.xlsx"。注意,我们使用了try-with-resources语句来自动关闭输出流。

结果展示

运行上面的代码后,将在项目的根目录下生成一个名为"output.xlsx"的文件。你可以使用Excel或其他电子表格软件打开这个文件,看到其中包含了一个工作表和数据。

使用饼状图

在生成的xlsx文件中添加饼状图,可以更直观地展示数据。Apache POI库提供了创建饼状图的功能。

以下是一个示例代码,演示如何在xlsx文件中添加饼状图:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.charts.*;
import org.apache.poi.xssf.usermodel.charts.XSSFChartDataFactory;
import org.apache.poi.xssf.usermodel.charts.XSSFChartLegend;
import org.apache.poi.xssf.usermodel.charts.XSSFChartAxis;

import java.io.FileOutputStream;
import java.io.IOException;

public class XlsxGeneratorWithChart {

    public static void main(String[] args) {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // 创建数据行
        Row dataRow = sheet.createRow(1);
        Cell dataCell1 = dataRow.createCell(0);
        Cell dataCell2 = dataRow.createCell(1);
        dataCell1.setCellValue("苹果");
        dataCell2.setCellValue("香蕉");

        // 创建饼状图
        XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
        XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 2, 1, 8, 15);
        XSSFChart chart = drawing.createChart(anchor);
        XSSFChartLegend legend = chart.getOrCreateLegend();
        legend.setPosition(LegendPosition.BOTTOM);

        PieChartData data = XSSFChartDataFactory.createPieChartData(sheet, anchor);
        ChartDataSource<Number> categories = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, 1));
        ChartDataSource<Number> values = DataSources