【问题标题】:Mail merge word docx in Azure app serviceAzure 应用服务中的邮件合并 word docx
【发布时间】:2020-04-09 13:46:14
【问题描述】:

在 Azure 上运行的应用服务中,我需要将 word/docx 文档中的邮件合并字段替换为内容。 据我了解,互操作不能使用,因为它需要安装 word。

那么如何在 C# 应用服务中替换 Azure 上的邮件合并字段? 也许可以为此使用 OpenXML SDK?但是怎么做呢?

[更新] OpenXML 工作,我创建了以下帮助类来替换邮件合并内容:

public static void DocXReplaceMergeFields(Stream docStream, Dictionary<string, string> placeholder)
{
  using (var docXml = WordprocessingDocument.Open(docStream, true))
  {
    //docXml.ChangeDocumentType(WordprocessingDocumentType.Document);

    foreach (var run in docXml.MainDocumentPart.Document.Descendants<Run>())
    {
      foreach (var text in run.Descendants<Text>().Where(a => a.Text.StartsWith("«") && a.Text.EndsWith("»")))
      {
        var propertyName = text.Text.Substring(1, text.Text.Length - 2);
        if (placeholder.TryGetValue(propertyName, out var propertyValue))
          text.Text = propertyValue;
      }
    }

    var settingsPart = docXml.MainDocumentPart.GetPartsOfType<DocumentSettingsPart>().First();
    var oxeSettings = settingsPart.Settings.Where(a => a.LocalName == "mailMerge").FirstOrDefault();
    if (oxeSettings != null)
    {
      settingsPart.Settings.RemoveChild(oxeSettings);
      settingsPart.Settings.Save();
    }
    docXml.MainDocumentPart.Document.Save();
  }
}

【问题讨论】:

    标签: c# azure ms-word azure-web-app-service docx-mailmerge


    【解决方案1】:

    您可以尝试使用 Open XML SDK:

    https://docs.microsoft.com/en-us/office/open-xml/word-processing

    如果由于某种原因这不起作用,请尝试使用 Azure 逻辑应用程序执行相同操作:

    https://medium.com/plumsail/create-complex-excel-and-word-documents-from-templates-in-microsoft-flow-azure-logic-apps-and-794334e59f0f

    【讨论】:

    • 开放的 XML SDK 看起来很有希望,你知道一些替换文档中文本的教程吗?
    • 对不起朋友,我只是偶尔和他们合作一次。
    • 仍然感谢 - 我找到了足够的部件来让它工作。请参阅上面的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多