繁体   English   中英

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

[英]How to put RTF/HTML into Excel cell using OpenXML in C#

我需要从富文本编辑器中获取 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 表示非常简单:

<p>This is <strong>bold</strong> and <em>italic</em> text.</p>

您需要将上面的 HTML 标记转换为以下 SpreadsheetML 标记(准确地说是一个si元素):

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="1" uniqueCount="1">
  <si>
    <r>
      <t xml:space="preserve">This is </t>
    </r>
    <r>
      <rPr>
        <b/>
        <sz val="11"/>
        <color theme="1"/>
        <rFont val="Calibri"/>
        <family val="2"/>
        <scheme val="minor"/>
      </rPr>
      <t>bold</t>
    </r>
    <r>
      <rPr>
        <sz val="11"/>
        <color theme="1"/>
        <rFont val="Calibri"/>
        <family val="2"/>
        <scheme val="minor"/>
      </rPr>
      <t xml:space="preserve"> and </t>
    </r>
    <r>
      <rPr>
        <i/>
        <sz val="11"/>
        <color theme="1"/>
        <rFont val="Calibri"/>
        <family val="2"/>
        <scheme val="minor"/>
      </rPr>
      <t>italic</t>
    </r>
    <r>
      <rPr>
        <sz val="11"/>
        <color theme="1"/>
        <rFont val="Calibri"/>
        <family val="2"/>
        <scheme val="minor"/>
      </rPr>
      <t xml:space="preserve"> text.</t>
    </r>
  </si>
</sst>

为此,您确实需要了解 SpreadsheetML 标记,特别是共享字符串表sst元素),您可以在其中呈现转换后的标记(作为一个或多个si元素)。

转换最好作为纯函数转换来实现。 查看XmlTransformationTests类以获取执行类似操作的示例。 它将类似 HTML 的 XML 转换为 WordprocessingML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM