【问题标题】:OpenXml docx how to add CRLF into inserted text?OpenXml docx 如何将 CRLF 添加到插入的文本中?
【发布时间】:2015-07-24 13:12:25
【问题描述】:

在 OpenXml 文档中有填充数据的内容控件,但 CRLF 不绑定或与 Word 文档一起使用。句子一起运行而不是换行。

在将值写入内容控件的代码中,有一个换行符,添加了“\n”,所以 case "custname": cc.Descendants<Text>().First().Text =customer1 + “\n” + customer2 + “\n”

没有效果,没有CRLF

然而,在 HTML textareaFor 中,它会看到格式并很好地应用它,但是当它放入单词 docx 时,句子没有 CRLF。已尝试添加 0x0a、0x0d。在文档中,看起来应该添加的是:

    <w:br w:type="textWrapping" w:clear="all" />

就在应该有 CRLF 的部分之后,所以也许另一个问题是如何将这样的标签 + 有效负载添加到 openxml 中?

参考:https://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.break%28v=office.14%29.aspx?f=255&MSPPError=-2147217396

【问题讨论】:

    标签: ms-word openxml openxml-sdk


    【解决方案1】:

    在 OpenXml 中,段落的构造是特殊的。 标签 Text 应该只包含文本,CRLR 是格式而不是文本。

    要做你想做的事,你必须:

    • 检索您要修改的运行
    • 添加几个

    例子是

    case "custname":
    Run run = cc.Descendants<Run>().First();
    foreach(string customer in customers)
    {
    run.Append(new Text(customer));
    run.Append(new Break());
    }
    

    您应该修改此代码以适应:

    • 检索您想要的运行
    • 循环访问您的客户/不要添加最后一个中断

    【讨论】:

    • 是的,这确实可以在 word doc 中添加 CRLF 的效果,谢谢;从那以后我发现文本需要标明。由于它是一个内容控件,因此如果使用可以添加多行带有项目符号字符的 Richtext CC,它“应该”工作。由于某种原因,问题似乎在于 CC 总是默默地变成明文 CC。我想弄清楚如何用项目符号添加列表段落
    • 查找您想要创建的示例的最简单方法是在 word 上进行操作,保存,使用 .zip 扩展名重命名文件,打开文件 word/document.xml(谁在 zip 中)并重现单词对您的作用
    • 是的,没错,我正在使用 open xml sdk 2.5 生产力工具microsoft.com/en-us/download/details.aspx?id=30425 我可以替换段落或追加,但 Word 不会打开它,说它已损坏。 xml 看起来不错。此外,这让 Visual Studio 可以编辑 xml,visualstudiogallery.msdn.microsoft.com/… 易于编辑和保存。在 VS2015 上还不行吗?
    • 当 word 说它损坏时,我编辑 document.xml 以添加 crlf。当您重新打开文件时,请准确说出损坏的确切行。如果你有表格,一个常见的错误是“单元格的最后一个元素不是段落”(这个词让我好几次)
    • 我希望它这么简单,我开始了一个新的线程或问题stackoverflow.com/questions/31703771/…,因为有代码和单词 doc 和 xml。它应该很容易修复,但没有看到答案
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2014-06-13
    相关资源
    最近更新 更多