将可视化数据直接嵌入 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 文档中创建图表
工作流可以分为五个明确的步骤:
创建文档和 DocumentBuilder -
Document类表示内存中的 Word 文件,DocumentBuilder为您提供用于插入内容(包括图表)的流畅 API。Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc);插入图表形状 -
insertChart接受一个ChartType(例如COLUMN),以及以点为单位的宽度和高度,并返回一个承载该图表的Shape。Shape shape = builder.insertChart(ChartType.COLUMN, 432, 252);访问 Chart 对象 -
Shape的Chart属性公开所有与图表相关的选项,包括其系列集合。Chart chart = shape.getChart(); ChartSeriesCollection seriesColl = chart.getSeries(); System.out.println(seriesColl.getCount());查看 API reference 以获取有关
Chart、ChartSeriesCollection和相关枚举的完整详细信息。清除默认系列并添加您自己的 - 新插入的图表已经包含占位符系列,因此在使用
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 });
- 保存文档 - 最后,
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.BAR、ChartType.LINE、ChartType.PIE、ChartType.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");
}
}
整体流程与柱状图示例相同:创建 Document 和 DocumentBuilder,使用 ChartType.SCATTER 插入图表形状,从形状中获取 Chart,并添加一个或多个系列。由于散点图绘制 X/Y 坐标对,没有单独的类别数组——每个点由 X 和 Y 值数组中的对应条目定义。添加完所有系列后,使用 doc.save() 保存。
结论
将可视化数据直接嵌入 DOCX 文件是增强自动化报告的强大方式。使用 Conholdate.Total for Java,您可以仅用几行 Java 代码在 Word 文档中创建图表——包括柱形图、条形图、折线图、饼图和散点图——自定义类别和系列,并在服务器端生成专业外观的文档。请记得为生产使用获取适当的许可证;临时许可证可在临时许可证页面获取,完整的定价详情可在定价页面查看。立即开始集成图表生成,为您的用户提供突出的数据驱动文档。
常见问题
如何使用 Java 与 Conholdate.Total 在 Word 文档中创建图表? 调用
DocumentBuilder的insertChart并指定所需的ChartType,从返回的Shape中获取Chart,清除默认系列,并使用seriesColl.add()添加自己的类别和数据,然后保存文档。完整代码如上面的示例所示。支持哪些图表类型? SDK 通过
ChartType枚举支持柱形图、条形图、折线图、饼图、散点图以及许多其他标准图表类型。更改传递给insertChart的枚举值即可切换类型。散点图与柱形图或条形图有何不同? 散点图绘制数值 X 和 Y 对,而不是命名的类别,因此您应使用
ChartSeriesCollection的add(name, xValues, yValues)重载,而不是传递类别数组。我是否需要为图表生成设置许可证? 是的。可以从临时许可证页面获取临时许可证。对于长期项目,请通过定价页面购买完整许可证。
SDK 是否兼容 Maven 和 Gradle 构建? 完全兼容。按照 Setup 部分所示,将 Conholdate Maven 仓库和
conholdate-total依赖添加到构建文件中,库即可在 Maven 和 Gradle 中使用。
