3

我正在通过重写 CustomXMLPart 文件来更新 word 文档。我基本上遵循了本教程:http: //blogs.msdn.com/b/brian_jones/archive/2009/01/05/taking-advantage-of-bound-content-controls.aspx

private bool _makeDoc()
        {

        var path = HttpContext.Current.Server.MapPath("~/Classes/Word/template.docx");
        using (WordprocessingDocument myDoc = WordprocessingDocument.Open(path, true))
        {
            //create new XML string
            //these values will populate the template word doc
            string newXML = "<root>";
                newXML += "<name>";
                newXML += "name goes here";
                newXML += "</name>";
                newXML += "<bio>";
                newXML += "text" + "more text";
                newXML += "</bio>";
            newXML += "</root>";

            MainDocumentPart mainPart = myDoc.MainDocumentPart;

            //delete old xml part
            mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);

            //add new xml part
            CustomXmlPart customXml = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
            using(StreamWriter ts = new StreamWriter(customXml.GetStream()))
            {
                ts.Write(newXML);
            }
            myDoc.Close();
        }
        return true;
    }

问题是我不知道如何在“文本”和“更多文本”之间添加换行符。我试过 Environment.NewLine,我试过用<w:p><w:r><w:t>标签包装它。我似乎无法让它生成有效的 docx 文件。

任何帮助,将不胜感激。

4

3 回答 3

3

内容控件属性具有“允许回车”选项。打开它,并使用Environment.NewLine完美。

于 2011-06-28T15:46:29.383 回答
1

至少据我所知,我相信您必须将它们分成几段才能获得回报。所以你得到的 OOXML 看起来像,

<w:p><w:r><w:t>Text</w:t></w:r></w:p>
<w:p><w:r><w:t>More text</w:t></w:r></w:p>

至于当您执行此操作时不会产生有效的 OOXML,您是否打开了 OOXML 包“document.xml”并确切地看到了 XML 无效的位置?

编辑:

OOXML SDK 2.0附带了一些您可能会觉得有用的验证工具。

于 2011-06-28T14:34:38.293 回答
0

通过原始 XML,您可以添加:

<w:r>
    <w:br />
  </w:r>

通过 OOXML SDK:

Paragraph paragraph1 = new Paragraph();
Run breakRun = new Run();
breakRun.Append( new Break() );
paragraph1.Append( breakRun );

_document.MainDocumentPart.Document.AppendChild<Paragraph>(paragraph1);
//where _document is the WordProcessingDocument instance
于 2013-09-05T21:03:21.103 回答