I have text inside of the Run
Element. I\'m trying to replace the \\r
in the string with a line break
.
The text as follows
<The documentation states that a Text
element contains literal text. The SDK will not make assumptions about new line characters in a string that you write to a Text
element. How would it know if you wanted a break or if you wanted a paragraph?
If you are building the document from literal strings you will have some work to do:
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace OXmlTest
{
class Program
{
static void Main(string[] args)
{
using (var wordDocument = WordprocessingDocument
.Create("c:\\deleteme\\testdoc.docx", WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();
Body body = mainPart.Document.AppendChild(new Body());
Paragraph p = body.AppendChild(new Paragraph());
Run r = p.AppendChild(new Run());
string theString = "This is an example project for testing purposes. \rThis is all sample data, none of this is real information. \r\rThis field allows for the entry of more information, a larger text field for example purposes";
foreach (string s in theString.Split(new char[] { '\r' }))
{
r.AppendChild(new Text(s));
r.AppendChild(new Break());
}
wordDocument.Save();
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:p>
<w:r>
<w:t>This is an example project for testing purposes. </w:t>
<w:br />
<w:t>This is all sample data, none of this is real information. </w:t>
<w:br />
<w:t/>
<w:br />
<w:t>This field allows for the entry of more information, a larger text field for example purposes</w:t>
<w:br />
</w:r>
</w:p>
</w:body>
</w:document>