在 C# 中创建 Visio 图表

Microsoft Visio 是一个广泛使用的工具,用于设计流程图、组织结构图、网络图、过程流以及其他需要精确形状和连接的技术或商业视觉图。对于许多团队和自动化场景来说,当必须为许多记录生成图表、按需创建图表或将其嵌入报告管道中时,手动绘制图表并不实际。程序化图表生成通过允许开发人员直接从数据源或业务逻辑中生成一致、可重复的图表来解决这些问题。本文中展示的示例演示了如何在 C# 中以编程方式创建 Visio 图表,从主模板中添加矩形形状,定位和调整大小,设置文本和样式,并将结果保存为 VSDX 文件。该代码可以直接复制并粘贴到 C# 项目中,并可以根据需要调整以添加多个形状、连接

自动化图表创建在许多需要可靠和反复生成图表的现实场景中是非常有用的。例如,您可能会为每个部署环境生成架构图,为监控仪表板创建网络图,或者根据人力资源数据构建标准化组织结构图。程序化生成确保布局规则始终一致应用,形状遵循相同的样式指南,并且输出文件在没有人工干预的情况下生成。以下部分将逐步介绍其理论依据、逐步方法、您可以复制粘贴的完整 C# 代码片段,以及详细的常见问题解答,涵盖将图表生成集成到您的应用程序时的常见问题和后续步骤。

为什么要以编程方式创建 Visio 图表?

  • 使批量或按需的图表生成可靠且可重复,以便在多个记录或运行中一致地产生图表,从而节省人工绘制时间并消除人为布局差异。
  • 将图表生成集成到自动化工作流程中,例如报告、文档管道或持续交付,以便可视化内容始终与基础数据保持最新,而无需手动编辑。
  • 以编程方式强制执行企业或项目样式指南,以确保所有图形、字体和颜色在所有图表中保持一致,并减少手动校对和返工的需求。
  • 生成多种格式的图表,并将其嵌入其他文档或系统中,从而实现跨平台分发并便于利益相关者的消费。
  • 在生成每个客户、每个站点或每个部署的单个图表等情况下,将图表生产规模扩大到数百或数千个项目,其中手动编辑将不可行。

创建 Visio VSDX 图表的 C# 代码

  1. 通过将图表库添加到项目引用中来准备您的项目,以便您可以访问图表和形状类。
  2. 初始化一个新的图表对象,该对象作为画布来保存页面、母版、形状和样式。
  3. 添加或加载一个包含您想要使用的形状模板的母版模板,例如来自基本形状模板的矩形母版。
  4. 定义您想要放置的每个形状的维度和坐标,以便位置和大小是确定的,并且可以根据数据或布局规则进行计算。
  5. 通过引用主模板和计算得到的位置和大小值向图表添加形状,然后捕获返回的形状 ID,如果您希望进一步修改形状。
  6. 当您需要更改形状实例的属性,例如位置、文本、样式或类型时,请检索该形状实例,并以编程方式应用更改。
  7. 将最终图表保存为所需格式,通常为 VSDX 以确保与 Visio 兼容,或导出为图像或其他支持的格式以便嵌入到文档中。
// Create a new instance of a diagram
Aspose.Diagram.Diagram diagram = new Aspose.Diagram.Diagram();

// Define the name of the master (template) to be used for creating shapes
string masterName = "Rectangle";
diagram.AddMaster("Basic Shapes.vss", masterName);

// Define the dimensions and position for the new shape
double width = 2, height = 2, pinX = 4.25, pinY = 4.5;

// Add a new rectangle shape to the diagram using the specified master
long rectangleId = diagram.AddShape(pinX, pinY, width, height, masterName, 0);

// Retrieve the shape by its ID for modification
Aspose.Diagram.Shape rectangle = diagram.Pages[0].Shapes.GetShape(rectangleId);

// Set the position of the shape by modifying its PinX and PinY properties
rectangle.XForm.PinX.Value = 5;
rectangle.XForm.PinY.Value = 5;

// Set the type of the shape to indicate it is a standard shape
rectangle.Type = Aspose.Diagram.TypeValue.Shape;

// Add text to the shape
rectangle.Text.Value.Add(new Aspose.Diagram.Txt("Aspose Diagram"));

// Apply a predefined text style to the shape's text
rectangle.TextStyle = diagram.StyleSheets[3];

// Save the modified diagram to a file
diagram.Save("Visio_out.vsdx", Aspose.Diagram.SaveFileFormat.Vsdx);

这个代码片段演示了从创建一个新的图表实例到将结果保存为 VSDX 文件的完整流程。代码首先从模板文件中注册一个主形状,然后使用显式坐标和大小添加一个矩形。在添加形状后,代码检索实例以微调其位置和类型,插入文本内容,并从图表样式表集合中应用现有样式。最后,图表被保存到磁盘。您可以调整此代码片段以添加多个形状,在形状之间创建连接器,生成多个页面,或根据数据应用动态样式。

结论

在 C# 中以编程方式创建 Visio 图表是一种实用且强大的方法,可以自动化视觉文档、标准化图表美学,以及将图表输出集成到企业报告或文档系统中。通过遵循提供的步骤和示例,您可以快速入门,然后扩展该方法以生成复杂的图表、连接器和直接从数据源驱动的多页面文档。无论您需要自动化的架构图、组织结构图、网络拓扑还是流程图,编程图表生成使流程更快、更一致、错误更少,从而释放设计师和工程师的时间,让他们专注于更高层次的决策,而不是重复的绘图任务。

另请参阅