Сравнение цвета фона заливки стиля EPPlus с System.Drawing.Color выдает ошибку - PullRequest
0 голосов
/ 13 ноября 2018

Я использую библиотеку 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 голосов
/ 13 ноября 2018

Вместо того, чтобы пытаться преобразовать цвет фона, я бы вместо этого преобразовал исходный цвет в строку.

    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, поэтому вам не нужно рассчитывать его каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...