在某些情况下,您可能需要从 Visio 图表中读取形状数据。当图表包含元数据时,这通常是有帮助的。您可以在没有 Microsoft Visio 或 Office Interop 的情况下使用 Java 提取此信息。这非常适合报告、数据检查或自动化工具。在本文中,我们将向您展示如何以清晰和简单的方式使用 Java 读取形状数据。

Java Visio 库读取形状数据

在这篇文章中,我们将使用 Aspose.Diagram for Java 从 Visio 文件中读取形状数据。该 API 完全访问形状、页面和自定义属性。它支持 VSDX、VSD 和其他格式。

您可以在任何 Java 项目中使用这个库。它易于设置,并支持大型图表和批处理。如果您的应用需要处理 Visio 文件,这个 SDK 是一个很好的工具。

请从 releases 下载库并将 JAR 文件添加到您的项目中,或通过 Maven 安装:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-diagram</artifactId>
    <version>25.7</version>
</dependency>

如何在 Java 中读取 Visio 形状数据

按照以下步骤从 Visio 文件中读取形状数据:

  1. 使用 Diagram 类加载文件。
  2. 获取图表中的一页。
  3. 在页面上循环遍历形状。
  4. 打印形状 ID 和名称。

这里有一个 Java 代码片段,演示了如何在 Java 中读取 Visio 形状数据:

// 加载 Visio 文件
Diagram diagram = new Diagram("Drawing1.vsdx");

// get pages count
System.out.println("Total Pages:" + diagram.getPages().getCount());

// 访问第一页
Page page = diagram.getPages().get(0);

// 遍历形状
for (Shape shape : (Iterable<Shape>) page.getShapes()) {
    System.out.println("Shape ID: " + shape.getID());
    System.out.println("Name: " + shape.getName());
}
Total Pages: 1
Shape ID: 1
Name: Square
Shape ID: 2
Name: Rectangle
Shape ID: 3
Name: Dynamic connector

通过名称读取形状属性

您可以通过形状的名称读取其属性。只需遵循以下步骤:

  1. 加载图表文件。
  2. 访问一个页面。
  3. 找到形状名称。
  4. 使用 Props 来读取属性。

这是一个 Java 代码示例,演示了如何通过形状的名称读取其属性:

// 加载 Visio 文件
Diagram diagram = new Diagram("Drawing1.vsdx");

// 访问第一页
Page page = diagram.getPages().get(0);

// 迭代形状
for (Shape shape : (Iterable<Shape>) page.getShapes()) {
    // 阅读按名称的形状属性
    if ("Process".equals(shape.getName())) {
       for (Prop prop : (Iterable<Prop>) shape.getProps()) {
            System.out.println("Property Name: " + prop.getLabel().getValue());
            System.out.println("Value: " + prop.getValue().getVal());
        }
    }
}

阅读 Java 中 Shape 的 InheritProps

您还可以通过以下步骤获取继承的形状属性:

  1. 打开 Visio 文件。
  2. 获取页面并循环遍历形状。
  3. 使用 InheritProps 来读取继承的值。

以下示例 Java 代码演示了如何在 Java 中读取 Visio 形状的 InheritProps:

// 加载 Visio 文件
Diagram diagram = new Diagram("Drawing1.vsdx");

// 访问第一页
Page page = diagram.getPages().get(0);

// 遍历形状 InheritProps
for (Shape shape : (Iterable<Shape>) page.getShapes()) {
   for (Prop prop : (Iterable<Prop>) shape.getInheritProps()) {
        System.out.println("Inherited Name: " + prop.getLabel().getValue());
        System.out.println("Value: " + prop.getValue().getVal());
    }
}

获取免费许可证

你想要无限制地尝试 Aspose.Diagram 吗?你可以 获取一个免费的临时许可证 并测试该库的所有功能。

打开和阅读Visio图形:免费资源

探索这些免费的资源以了解更多:

结论

在本文中,您学习了如何使用 Aspose.Diagram 在 Java 中读取 Visio 图形数据。您看到如何加载文件、提取形状属性以及读取继承的数据。使用这个强大的 API,您可以轻松构建处理 Visio 文件的 Java 应用程序。

如果您需要帮助,请随时通过我们的 免费支持论坛 联系我们。

见也