gpt4 book ai didi

c# - 简化/清理 DOCX word 文档的 XML

转载 作者:IT王子 更新时间:2023-10-29 04:49:53 25 4
gpt4 key购买 nike

我有一个 Microsoft Word 文档 (docx),我使用 Open XML SDK 2.0 Productivity Tool从中生成 C# 代码。

我想以编程方式将一些数据库值插入到文档中。为此,我在我的程序应该用其数据库值替换占位符的地方输入了简单的文本,如 [[place holder 1]]

不幸的是,XML 输出有些困惑。例如。我有一个包含两个相邻单元格的表格,它们不应与其占位符区分开来。但是其中一个占位符被拆分了分成几个运行。

[[好的占位符]]

<w:tc xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tcPr>
<w:tcW w:w="1798" w:type="dxa" />
<w:shd w:val="clear" w:color="auto" w:fill="auto" />
</w:tcPr>
<w:p w:rsidRPr="008C2E16" w:rsidR="001F54BF" w:rsidP="000D7B67" w:rsidRDefault="0009453E">
<w:pPr>
<w:spacing w:after="0" w:line="240" w:lineRule="auto" />
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="0009453E">
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
<w:t>[[good place holder]]</w:t>
</w:r>
</w:p>
</w:tc>

[[糟糕的占位符]]

<w:tc xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:tcPr>
<w:tcW w:w="1799" w:type="dxa" />
<w:shd w:val="clear" w:color="auto" w:fill="auto" />
</w:tcPr>
<w:p w:rsidRPr="008C2E16" w:rsidR="001F54BF" w:rsidP="000D7B67" w:rsidRDefault="00EA211A">
<w:pPr>
<w:spacing w:after="0" w:line="240" w:lineRule="auto" />
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="00EA211A">
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
<w:t>[[</w:t>
</w:r>
<w:proofErr w:type="spellStart" />
<w:r w:rsidRPr="00EA211A">
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
<w:t>bad</w:t>
</w:r>
<w:proofErr w:type="spellEnd" />
<w:r w:rsidRPr="00EA211A">
<w:rPr>
<w:rFonts w:cstheme="minorHAnsi" />
<w:sz w:val="20" />
<w:szCs w:val="20" />
</w:rPr>
<w:t xml:space="preserve"> place holder]]</w:t>
</w:r>
</w:p>
</w:tc>

是否可以让 Microsoft Word 清理我的文档,以便在生成的 XML 中识别所有占位符?

最佳答案

我找到了一个解决方案:Open XML PowerTools Markup Simplifier。

我按照 http://ericwhite.com/blog/2011/03/09/getting-started-with-open-xml-powertools-markup-simplifier/ 中描述的步骤进行操作, 但它没有 1:1 工作(可能是因为它现在是 Power Tools 的 2.2 版?)。所以,我编译了PowerTools 2.2在“发布”模式下,并在我的 TestMarkupSimplifier.csproj 中引用了 OpenXmlPowerTools.dll。在 Program.cs 中,我只更改了我的 DOCX 文件的路径。我运行了一次该程序,现在我的文档似乎相当干净。

上面链接中引用Eric博客的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenXmlPowerTools;
using DocumentFormat.OpenXml.Packaging;

class Program
{
static void Main(string[] args)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open("Test.docx", true))
{
SimplifyMarkupSettings settings = new SimplifyMarkupSettings
{
RemoveComments = true,
RemoveContentControls = true,
RemoveEndAndFootNotes = true,
RemoveFieldCodes = false,
RemoveLastRenderedPageBreak = true,
RemovePermissions = true,
RemoveProof = true,
RemoveRsidInfo = true,
RemoveSmartTags = true,
RemoveSoftHyphens = true,
ReplaceTabsWithSpaces = true,
};
MarkupSimplifier.SimplifyMarkup(doc, settings);
}
}
}

关于c# - 简化/清理 DOCX word 文档的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7752932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com