我已经创建了一个用customxmlparts填充wordfiles的应用程序,我正在尝试将文本放入文本字段,但它中有HTML,我希望它显示它的样式。我尝试将其转换为富文本格式,但只是粘贴在word文件中。以下是代码示例:
var taskId = Guid.NewGuid();
var tempFilePath = $"{Path.GetTempPath()}/{taskId}";
using (var templateStream = new FileStream($"{tempFilePath}.docx", FileMode.CreateNew))
{
templateStream.Write(template, 0, template.Length);
// 1. Fill template.
using (WordprocessingDocument doc = WordprocessingDocument.Open(templateStream, true))
{
MainDocumentPart mainDocument = doc.MainDocumentPart;
if (mainDocument.CustomXmlParts != null)
{
mainDocument.DeleteParts<CustomXmlPart>(mainDocument.CustomXmlParts);
}
CustomXmlPart cxp = mainDocument.AddCustomXmlPart(CustomXmlPartType.CustomXml);
foreach (var line in data.Lines)
{
if (line.MoreInfo != null && line.MoreInfo != " ") {
}
}
var xmlData = ObjectToXml(data);
using (var stream = GenerateStreamFromString(tempFilePath, xmlData))
{
cxp.FeedData(stream);
}
mainDocument.Document.Save();
}
}
答案 0 :(得分:1)
您不能将HTML格式的文本写入DOCX字段,您需要将其转换为WordprocessingML格式。
但是,您可以尝试另一种方法,即插入“AltChunk”元素。该元素表示有点像占位符,它可以引用HTML文件,然后当在MS Word中打开DOCX文件时,它将为您进行HTML转换为WordprocessingML。有关详细信息,请参阅:How to Use altChunk for Document Assembly
或者您可以使用某些第三方,例如GemBox.Document,它可以为您制作HTML到WordprocessingML转换。
例如,请检查此Set Content example:
// Set content using HTML tags
document.Sections[0].Blocks[4].Content.LoadText(
"Paragraph 5 <b>(part of this paragraph is bold)</b>", LoadOptions.HtmlDefault);