C# 如何在C中使用OpenXML将RTF/HTML放入Excel单元格

C# 如何在C中使用OpenXML将RTF/HTML放入Excel单元格,c#,excel,openxml,C#,Excel,Openxml,我需要从富文本编辑器中获取HTML并将其放入excel工作表中。要求是呈现html,并且看起来与在富文本编辑器中所做的相同 我们使用OpenXML来满足Excel的需求,但我似乎找不到将HTML放入单元格的方法。我可以设置值,但这只是显示字符串 例如,我需要在单元格中呈现以下HTML: <p style="text-align: center"><strong>This is a test!</strong></p><p><s&g

我需要从富文本编辑器中获取HTML并将其放入excel工作表中。要求是呈现html,并且看起来与在富文本编辑器中所做的相同

我们使用OpenXML来满足Excel的需求,但我似乎找不到将HTML放入单元格的方法。我可以设置值,但这只是显示字符串

例如,我需要在单元格中呈现以下HTML:

<p style="text-align: center"><strong>This is a test!</strong></p><p><s>a</s></p><p><br></p><p><u style="color: rgb(32, 43, 250)">test</u></p><ul><li>test<ul><li><span style="background-color: rgb(156, 224, 29)">test</span></li></ul></li></ul><p><br></p><p><em style="font-size: 24pt; font-family: &quot;Lucida Console&quot;">d</em></p>

有没有办法做到这一点,或者我正在搜索一些无法做到的事情?

如评论中所述,您必须编写自己的转换,将HTML标记转换为SpreadsheetML标记。例如,让我们看看下面的文本

这是粗体和斜体文本

上述示例文本的HTML表示非常简单:

这是粗体和斜体文本

准确地说,您需要将上述HTML标记转换为以下SpreadsheetML标记一个si元素:

这是 大胆的 和 斜体 文本 要做到这一点,您确实需要了解SpreadsheetML标记,特别是 sst元素,您可以在其中将转换后的标记呈现为一个或多个si元素


转换最好作为纯函数转换来实现。看一看这个类,看一个做类似事情的例子。它将类似HTML的XML转换为WordprocessingML。

如果您能说服Excel以某种方式将HTML呈现到单元格中,我会非常惊讶。在UI中,您可以创建一个字符串,该字符串可能包含行尾,也可能包含多种字符格式,例如,一些粗体字,其他颜色不同,其他文字较大。这就是您可以从Excel UI执行的所有操作。如果您这样做,并使用应该下载的OpenXML生产力工具打开工作表,您将看到这样的单元格将其内容保存为共享字符串,其中包含Word样式的运行,OpenXMLSDK的Excel部分没有与WordProcessing altChunk等效的内容,因此没有内置的方法将HTML或其他内容转换为Excel OpenXML。您需要编写自己的转换。