将EPPlus样式填充背景颜色与System.Drawing.Color进行比较会出现错误

时间:2018-11-13 13:09:33

标签: vb.net epplus

我正在使用EPPlus库来读取和修改Excel文件中的内容。 首先处理excel文件时,将首先分配行上的背景色。新记录将手动添加。然后,将新记录添加到此现有文件时,它们将不会设置背景色。我希望跳过基于背景色的已处理行。但是在尝试进行颜色比较时出现此错误。

错误5类型'OfficeOpenXml.Style.ExcelColor'的值不能转换为'System.Drawing.Color'。

 If Not myrow.Style.Fill.BackgroundColor = Color.LightSlateGray AndAlso myrow.Style.Font.Bold = True Then
            HasExcelRowBeenAlreadyProcessed = False
        Else
            HasExcelRowBeenAlreadyProcessed = True
        End If

我也尝试过此方法,但不知何故。拜托,有人可以帮忙吗?

 Dim oCellRGBVal = System.Drawing.ColorTranslator.FromHtml(myrow.Style.Fill.BackgroundColor.LookupColor.ToString).ToArgb

            HasExcelRowBeenAlreadyProcessed = False

            If Not oCellRGBVal = Color.LightSlateGray.ToArgb AndAlso myrow.Style.Font.Bold = True Then
                HasExcelRowBeenAlreadyProcessed = False
            Else
                HasExcelRowBeenAlreadyProcessed = True
            End If

1 个答案:

答案 0 :(得分:1)

我没有尝试转换背景色,而是将初始颜色转换为字符串。

    Dim colorAsString As String = Color.LightSlateGray.ToArgb.ToString("X2")

    If Not myrow.Style.Fill.BackgroundColor.Rgb = colorAsString AndAlso myrow.Style.Font.Bold = True Then
        HasExcelRowBeenAlreadyProcessed = False
    Else
        HasExcelRowBeenAlreadyProcessed = True
    End If

这应该有效。另外,这使您可以存储colorAsString,因此无需每次都进行计算。