asp.net OpenXML从Word中删除项目符号或数字

k97glaaz  于 2023-10-21  发布在  .NET
关注(0)|答案(2)|浏览(115)

我有一个Web应用程序,我在那里生成一个Word文档。我使用合并字段从SQL插入数据。我已经将其中一个合并字段标记为项目符号列表,这样当我插入数据时,我可以将其拆分,并使用Append(Break)创建一个项目符号列表。这工作很棒!问题是,有时候我没有什么东西要放在合并字段中,所以我只是说Field.Text = ""。因此,我从word文档中删除了所有的<<MergeFieldName>>
但子弹或数字仍然留在文件中。我不知道怎么去掉它。我试着往上爬,像这样:Txt -> Run -> ParagraphProperties -> NumberingProperties -> NumberingID/LvlReference.但我不知道下一步该怎么做。我肯定我需要在某个地方做一个Remove(),但我不知道在哪里。

e1xvtsh3

e1xvtsh31#

看起来我是通过向上移动层次结构并将numberingId.瓦尔设置为0来实现这个结果的。

uwopmtnx

uwopmtnx2#

使用openXML SDK,我能够删除文档的编号和缩进。我就是这么做的。

var number = container.Descendants<NumberingProperties>().FirstOrDefault();
if (number != null)
{
    number.Parent.Descendants<ParagraphStyleId>().FirstOrDefault().Remove();
    number.Parent.Descendants<Indentation>().FirstOrDefault().Left = "-45";
    number.Remove();
}

容器是OpenXmlCompositeElement,你可以从类似这样的OpenXmlCompositeElement container = tagElement.Descendants<SdtContentRun>().FirstOrDefault();中获取这个对象

相关问题