将 EPPlus 样式填充背景颜色与 System.Drawing.Color 进行比较会出错
Comparing EPPlus Style Fill background Color with System.Drawing.Color gives error
我正在使用 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
我不会尝试转换背景颜色,而是将初始颜色转换为字符串。
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,这样您就不需要每次都计算它。
我正在使用 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
我不会尝试转换背景颜色,而是将初始颜色转换为字符串。
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,这样您就不需要每次都计算它。