Visual Studio VSTO加载项。从Web应用程序下载MS Word文档时,如何在文档中包含文档唯一ID(数据库ID)?

问题描述 投票:-1回答:2

我们的垂直SaaS ERP使用户能够管理文档。通过Web应用程序(文档是直接从Web界面上传的),我们还有MS Word VSTO加载项,它允许使用某些数据库映射/逻辑将文档从MS Word直接保存到云中,然后再保存到云中。

问题:

当从Web应用程序中下载MS Word文档(数据库ID)时,我可以在ID中有一个唯一ID(行122424-3213-23423423)吗?

为什么我需要它(唯一ID)?

当从MS Word更新文档以映射/更新正确的文档时,我将使用此ID。

对此非常感谢任何帮助。

c# visual-studio ms-word vsto word
2个回答
0
投票

根据我的理解,您想向您的Word文档中添加一些元数据。

您可以使用CustomDocumentProperties

通常,它是一个字典(键/值),存储在文档中,并且可以通过Word互操作进行访问。

假设您的财产名称为“ DatabaseId”。

获取属性集合:

var props = (Office.DocumentProperties)app.ActiveDocument.CustomDocumentProperties

因此,使用此代码来设置值:

props.Add("DatabaseId", false, Microsoft.Office.Core
            .MsoDocProperties.msoPropertyTypeString, "122424-3213-23423423");

获取值:

props["DatabaseId"].Value

0
投票

服务器端代码(.NET Core)从Web应用程序下载任何MS Office文档时,我正在将相应的数据库ID写入文档的meta标记中。该ID对我的VSTO加载项更新现有文档很有帮助。

参考this to create SetCustomProperty

public async Task SetCustomTag(string documentPath)
    {
         OpenXmlUtils.SetCustomProperty(documentPath, "CUSTOM-ID", "111-222-23333", OpenXmlUtils.PropertyTypes.Text);
    }

VSTO加载项

public static string GetCustomMetaTagId(Document document)
    {
        Microsoft.Office.Core.DocumentProperties prps = (Microsoft.Office.Core.DocumentProperties)document.CustomDocumentProperties;

        string customId = "";

        try
        {
            customId  = prps != null && prps["CUSTOM-ID"] != null ? prps["CUSTOM-ID"].Value : "";
        }
        catch (Exception)
        {

        }

        return customId  ;
    }
© www.soinside.com 2019 - 2024. All rights reserved.