【发布时间】:2021-03-25 18:45:55
【问题描述】:
我正在使用 Open XML 生成 Word 文档。该文档包含一个表格,其中一些单元格包含一个 JSON 字符串。
在插入 JSON 字符串之前,我用以下几行美化它:
Newtonsoft.Json.Linq.JToken parsedJson =
Newtonsoft.Json.Linq.JToken.JToken.Parse(unformattedJsonString);
string formattedJsonString = parsedJson.ToString(Formatting.Indented);
对于我的 OpenXML 代码,我从 OpenXML SDK 2.5 中的“反映代码”开始。它看起来像这样:
TableCell tableCell2 = new TableCell();
TableCellProperties tableCellProperties2 = new TableCellProperties();
TableCellWidth tableCellWidth2 = new TableCellWidth() { Width = "8640", Type = TableWidthUnitValues.Dxa };
Shading shading2 = new Shading() { Val = ShadingPatternValues.Clear, Color = "auto", Fill = "auto" };
tableCellProperties2.Append(tableCellWidth2);
tableCellProperties2.Append(shading2);
Paragraph paragraph2 = new Paragraph() { RsidParagraphAddition = "00006AF4", RsidParagraphProperties = "00006AF4", RsidRunAdditionDefault = "00006AF4" };
ParagraphProperties paragraphProperties2 = new ParagraphProperties();
SpacingBetweenLines spacingBetweenLines2 = new SpacingBetweenLines() { After = "0" };
paragraphProperties2.Append(spacingBetweenLines2);
Run run2 = new Run();
Text textSecondColumn = new Text();
textSecondColumn.Text = formattedJsonString; // see the snippet above
run2.Append(textSecondColumn);
paragraph2.Append(paragraphProperties2);
paragraph2.Append(run2);
tableCell2.Append(tableCellProperties2);
tableCell2.Append(paragraph2);
tableRow.Append(tablePropertyExceptions);
tableRow.Append(tableCell1);
tableRow.Append(tableCell2);
所以问题来了——尽管字符串“formattedJsonString”确实被美化了,但最终文档中的所有换行符和缩进都丢失了。
我曾经在 Word Interop 中执行此操作,并且效果很好。知道如何使用 Open XML 处理这个问题吗?
顺便说一句,SDK 不会打开带有格式化/美化 Json 文本的 document.xml。
修正:我刚刚想到格式会添加换行符 - 也许每一行都需要是一个单独的段落。会试试看,如果需要,会再次修改这篇文章。
【问题讨论】: