В настоящее время у меня есть Word-Template с RTF-FormField, в этом FormField я хочу вставить Plaintext, который поступает из MSSQL-Database.OpenXml-SDK: как вставить Plaintext с CarriageReturn/Linefeed
При настройке этого метода я эксперт Содержание любого в моем поле формы документа (в том числе и мой RTF-поле формы)
public static void SetContentControlValue(this WordprocessingDocument doc, string name, string value)
{
var main = doc.MainDocumentPart;
var stdRuns = main.Document.Body
.Descendants<SdtRun>()
.Where(r => r.SdtProperties.GetFirstChild<Tag>().Val.Value.ToLower().Equals(name))
.ToList();
stdRuns.ForEach(c => c.Descendants<Text>().First().Text = value);
main.Document.Body
.Descendants<SdtBlock>()
.Where(r => r.SdtProperties.GetFirstChild<Tag>().Val.Value.ToLower().Equals(name))
.ToList()
.ForEach(c => c.Descendants<Text>().First().Text = value);
}
К сожалению, проглатывает CarriageReturn/перевод строки
Я пытался сделать это таким образом
var run = new SdtRun();
string[] newLineArray = { Environment.NewLine };
string[] textArray = value.Split(newLineArray, StringSplitOptions.None);
bool first = true;
foreach (var line in textArray)
{
if (!first)
{
run.Append(new Break());
}
first = false;
Text txt = new Text();
txt.Text = line;
run.Append(txt);
}
main.Document.Body.Append(run);
, но, к сожалению, это нарушает Worddocument, и я не могу открыть его больше: -/
У кого-нибудь здесь может быть одна и та же проблема и есть идея, как я могу вставить текст без потери формального форматирования (CarriageReturns и linefeeds)?