我们的垂直SaaS ERP使用户能够管理文档。通过Web应用程序(文档是直接从Web界面上传的),我们还有MS Word VSTO加载项,它允许使用某些数据库映射/逻辑将文档从MS Word直接保存到云中,然后再保存到云中。
问题:
当从Web应用程序中下载MS Word文档(数据库ID)时,我可以在ID中有一个唯一ID(行122424-3213-23423423)吗?
为什么我需要它(唯一ID)?
当从MS Word更新文档以映射/更新正确的文档时,我将使用此ID。
对此非常感谢任何帮助。
根据我的理解,您想向您的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
服务器端代码(.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 ;
}