ClosedXML从单元格富文本中读取文本颜色

时间:2014-01-09 08:50:29

标签: asp.net vb.net excel closedxml

我通过ASP.NET / VB.NET使用ClosedXML将XLSX文件导入数据库。我的客户需要保持单个单元格的格式,因此解决方案是使用单元格的RichText属性。

我写了一段代码,它应该在HTML字符串中转换RichText对象,但是不会从ClosedXML返回颜色信息(无论文本颜色是什么,它总是返回#FFFF3333。

这是我的代码:

Shared Function RichTextToHTML(ByVal rt1 As IXLRichText) As String
    'trasforma una string rich text in html
    Dim ret As String = ""
    If rt1.Text <> "" Then
        For Each rts1 As IXLRichString In rt1
            ret &= "<span style='"
            If rts1.Bold Then
                ret &= "font-weight:bold;"
            End If
            If rts1.Strikethrough Then
                ret &= "text-decoration:line-through;"
            End If
            ret &= "color:#" & rts1.FontColor.ToString & ";"
            ret &= "'>" & rts1.Text & "</span>"
        Next
    End If
    Return ret
End Function

&#34; rts1.FontColor&#34;永远不会返回正确的颜色。我也尝试过像SpreadsheetLight这样的其他库,但结果相同:电子表格单元格中的富文本没有颜色。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

它适用于我(使用C#版本为0.68.1)。这段代码

IXLCell cell = sheet.Cell(1,1);
cell.RichText.ForEach(rts => Console.WriteLine(rts.Text + " / " + rts.FontColor));

给出输出

red / FFFF0000
blue / Color Theme: Accent5, Tint: 1
green / Color Theme: Accent6, Tint: 1

与我在Excel中制作的文件一致 但请注意,主题中的颜色不会产生十六进制颜色。