目前我有一个带有 RTF-FormField 的 Word 模板,在这个 FormField 中我想插入来自 MSSQL 数据库的纯文本。
使用这种方法,我在我的文档中设置任何 FormField 的内容(包括我的 RTF-FormField)
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);
}
不幸的是它吞下了回车/换行
我试着这样做
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,我再也无法打开它了:-/
这里的任何人都可能有同样的问题并且有一个想法,我可以在不丢失纯文本格式(回车和换行)的情况下插入文本?