gpt4 book ai didi

c# - 使用 .NET 将 Excel 文件中的 html 字符串转换为格式化的 word 文件

转载 作者:行者123 更新时间:2023-12-03 19:25:32 26 4
gpt4 key购买 nike

输入是 Excel 文件 - 单元格可能包含一些基本的 HTML 格式,如

我想读取字符串并将文本作为格式化文本插入到 Word 文档中,即 Foo 将在 Word 中显示为粗体字符串。

我不知道使用了哪些标签,所以我需要一个“通用解决方案”,查找/替换方法对我不起作用。

我找到了一个 solution从 2011 年 1 月开始使用 WebBrowser 组件。因此,HTML 被转换为 RTF,RTF 被插入到 Word 中。我想知道今天是否有更好的解决方案。

使用商业组件对我来说没问题。

更新

我遇到了 Matthew Manela 的 MarkupConverter类(class)。它将 HTML 转换为 RTF。然后我使用剪贴板将片段插入到 word 文件中

// rtf contains the converted html string using MarkupConverter
Clipboard.SetText(rtf, TextDataFormat.Rtf);
// objTable is a table in my word file
objTable.Cell(1, 1).Range.Paste();

这行得通,但是使用剪贴板复制/粘贴多达几千个字符串会破坏任何东西吗?

最佳答案

您将需要 OpenXML SDK为了与 OpenXML 一起工作。进入它可能非常棘手,但它非常强大,并且比 Office Automation 或 Interop 稳定可靠得多。

下面会打开一个文档,创建一个AltChunk部分,将 HTML 添加到其中,并将其嵌入到文档中。有关 AltChunk 的更广泛概述见Eric White's blog

using (var wordDoc = WordprocessingDocument.Open("DocumentName.docx", true))
{
var altChunkId = "AltChunkId1";
var mainPart = wordDoc.MainDocumentPart;

var chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Html, altChunkId);
using (var textStream = new MemoryStream())
{
var html = "<html><body>...</body></html>";
var data = Encoding.UTF8.GetBytes(html);
textStream.Write(data, 0, data.Length);
textStream.Position = 0;
chunk.FeedData(textStream);
}

var altChunk = new AltChunk();
altChunk.Id = altChunkId;
mainPart.Document.Body.InsertAt(altChunk, 0);
mainPart.Document.Save();
}

显然对于您的情况,您需要查找(或构建)所需的表并插入 AltChunk那里而不是 body 的第一个位置。请注意,您插入到 word 文档中的 HTML 必须是完整的 HTML 文档,带有 <html>。标签。我不确定 <body>是必需的,但它不会造成伤害。如果您只有 HTML 格式的文本,只需将文本包装在这些标签中并插入到文档中。

看来您需要使用 Office Automation/Interop 来获取表格高度。参见 this answer这表示 OpenXML SDK 不会更新高度,只有 Word 会。

关于c# - 使用 .NET 将 Excel 文件中的 html 字符串转换为格式化的 word 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16208127/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com