将可视化数据直接嵌入 Word 文件可以将静态报告转变为引人入胜的演示文稿。 Conholdate.Total for Java 提供了一个强大的 SDK,简化了在 DOCX 文档中创建和插入图表的过程。在本指南中,我们将带您逐步了解一个完整的、可编译的示例,展示如何 使用 Java 在 Word 文档中创建图表,配置图表并保存结果。完成后,您将能够使用动态图表自动生成文档,以满足任何业务报告场景的需求。

使用 Java 在 Word 文档中嵌入图表的完整工作示例

此示例演示如何创建包含五个数据系列的柱形图并将其插入到 Word 文档中。

import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.Shape;
import com.aspose.words.ChartType;
import com.aspose.words.Chart;
import com.aspose.words.ChartSeriesCollection;

public class CreateChartInWord {
    public static void main(String[] args) {
        // Create a document
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

// Add chart with default data. You can specify different chart types and sizes.
        Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);

// Chart property of Shape contains all chart related options.
        Chart chart = shape.getChart();

// Get chart series collection.
        ChartSeriesCollection seriesColl = chart.getSeries();
        // Check series count.
        System.out.println(seriesColl.getCount());

// Delete default generated series.
        seriesColl.clear();

// Create category names array, in this example we have two categories.
        String[] categories = new String[] { "AW Category 1", "AW Category 2" };

// Adding new series. Please note, data arrays must not be empty and arrays must be the same size.
        seriesColl.add("AW Series 1", categories, new double[] { 1, 2 });
        seriesColl.add("AW Series 2", categories, new double[] { 3, 4 });
        seriesColl.add("AW Series 3", categories, new double[] { 5, 6 });
        seriesColl.add("AW Series 4", categories, new double[] { 7, 8 });
        seriesColl.add("AW Series 5", categories, new double[] { 9, 10 });

// Save the document
        doc.save("ColumnsChart.docx");
    }
}

Note: 此代码示例演示了核心功能。在项目中使用之前,请确保输出路径(ColumnsChart.docx)指向可写目录,验证所有必需的依赖项已正确安装,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

如何使用 Java 在 Word 文档中创建图表

工作流可以分为五个明确的步骤:

  1. 创建文档和 DocumentBuilder - Document 类表示内存中的 Word 文件,DocumentBuilder 为您提供用于插入内容(包括图表)的流畅 API。

    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);
    
  2. 插入图表形状 - insertChart 接受一个 ChartType(例如 COLUMN),以及以点为单位的宽度和高度,并返回一个承载该图表的 Shape

    Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);
    
  3. 访问 Chart 对象 - ShapeChart 属性公开所有与图表相关的选项,包括其系列集合。

    Chart chart = shape.getChart();
    ChartSeriesCollection seriesColl = chart.getSeries();
    System.out.println(seriesColl.getCount());
    

    查看 API reference 以获取有关 ChartChartSeriesCollection 和相关枚举的完整详细信息。

  4. 清除默认系列并添加您自己的 - 新插入的图表已经包含占位符系列,因此在使用 add() 添加类别和数据之前,需要先调用 clear() 将其移除。传递给同一 add() 调用的类别数组和数值数组必须长度相同。

seriesColl.clear();

String[] categories = new String[] { "AW Category 1", "AW Category 2" };

seriesColl.add("AW Series 1", categories, new double[] { 1, 2 });
seriesColl.add("AW Series 2", categories, new double[] { 3, 4 });
  1. 保存文档 - 最后,doc.save() 将 DOCX 写入磁盘。
doc.save("ColumnsChart.docx");

了解每个步骤可以轻松地将示例适配到不同的图表类型、数据源或文档模板。

准备环境

将 Conholdate Maven 仓库和 SDK 依赖添加到您的 pom.xml 中:

<repositories>
    <repository>
        <id>conholdate-repo</id>
        <name>Conholdate Maven Repository</name>
        <url>https://repository.conholdate.com/repo/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.conholdate</groupId>
    <artifactId>conholdate-total</artifactId>
    <version>24.9</version>
    <type>pom</type>
</dependency>

下载页面下载最新的 SDK 包。该库需要 Java 8 或更高版本,并可在任何标准 JVM 上运行。无需额外的服务器组件。

微调图表生成

您可以调整多个属性以匹配您的视觉风格:

  • 图表类型 - 将 ChartType.COLUMN 更改为 ChartType.BARChartType.LINEChartType.PIEChartType.SCATTER,以及其他受支持的类型。
Shape shape = builder.insertChart(ChartType.BAR, 432, 252);
  • 图表大小 - 第二和第三个参数传递给 insertChart 用于控制图表形状的宽度和高度,单位为点。

    Shape shape = builder.insertChart(ChartType.COLUMN, 500, 300);
    
  • Categories (axis labels) - 构建一个包含类别名称的 String[],并在共享相同类别的每个系列中重复使用它。

String[] categories = new String[] { "Jan", "Feb", "Mar" };
  • 数据系列 - 调用 seriesColl.add(),传入系列名称、类别数组以及一个 double[] 值数组,以添加任意数量的对比系列。
    seriesColl.add("2021", categories, new double[] { 200, 220, 250 });
    

这些选项让您能够根据任何报告需求定制图表,同时保持代码简洁。

在 Word 文档中使用 Java 插入散点图

散点图绘制数值 X 和 Y 对,而不是类别,这使它们在可视化相关性或分布时非常有用。ChartSeriesCollection 为此提供了 add() 的重载:不再使用类别数组,而是传入两个 double[] 数组,一个用于 X 值,一个用于 Y 值。

import com.aspose.words.Document;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.Shape;
import com.aspose.words.ChartType;
import com.aspose.words.Chart;

public class InsertScatterChart {
    public static void main(String[] args) {
        // Create a new document
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

// Insert Scatter chart.
        Shape shape = builder.insertChart(ChartType.SCATTER, 432, 252);
        Chart chart = shape.getChart();

// Use this overload to add series to any type of Scatter charts.
        chart.getSeries().add("AW Series 1", new double[] { 0.7, 1.8, 2.6 }, new double[] { 2.7, 3.2, 0.8 });

// Save the document
        doc.save("ScatterChart.docx");
    }
}

整体流程与柱状图示例相同:创建 DocumentDocumentBuilder,使用 ChartType.SCATTER 插入图表形状,从形状中获取 Chart,并添加一个或多个系列。由于散点图绘制 X/Y 坐标对,没有单独的类别数组——每个点由 X 和 Y 值数组中的对应条目定义。添加完所有系列后,使用 doc.save() 保存。

结论

将可视化数据直接嵌入 DOCX 文件是增强自动化报告的强大方式。使用 Conholdate.Total for Java,您可以仅用几行 Java 代码在 Word 文档中创建图表——包括柱形图、条形图、折线图、饼图和散点图——自定义类别和系列,并在服务器端生成专业外观的文档。请记得为生产使用获取适当的许可证;临时许可证可在临时许可证页面获取,完整的定价详情可在定价页面查看。立即开始集成图表生成,为您的用户提供突出的数据驱动文档。

常见问题

  • 如何使用 Java 与 Conholdate.Total 在 Word 文档中创建图表? 调用 DocumentBuilderinsertChart 并指定所需的 ChartType,从返回的 Shape 中获取 Chart,清除默认系列,并使用 seriesColl.add() 添加自己的类别和数据,然后保存文档。完整代码如上面的示例所示。

  • 支持哪些图表类型? SDK 通过 ChartType 枚举支持柱形图、条形图、折线图、饼图、散点图以及许多其他标准图表类型。更改传递给 insertChart 的枚举值即可切换类型。

  • 散点图与柱形图或条形图有何不同? 散点图绘制数值 X 和 Y 对,而不是命名的类别,因此您应使用 ChartSeriesCollectionadd(name, xValues, yValues) 重载,而不是传递类别数组。

  • 我是否需要为图表生成设置许可证? 是的。可以从临时许可证页面获取临时许可证。对于长期项目,请通过定价页面购买完整许可证。

  • SDK 是否兼容 Maven 和 Gradle 构建? 完全兼容。按照 Setup 部分所示,将 Conholdate Maven 仓库和 conholdate-total 依赖添加到构建文件中,库即可在 Maven 和 Gradle 中使用。

阅读更多