如何使用C#获取excel的单元格背景颜色?

时间:2018-04-02 12:32:22

标签: c# excel

我想用c#检索excel单元格的背景颜色,但我找不到办法做到这一点

  1. 我应该使用哪个库? microsoft.office.tools.excel.workbook.aspxmicrosoft.office.interop.excel?什么是不同的?

  2. 我尝试过以下代码,但没有运气:

    # A tibble: 20 x 5
       game_id team_id action_id time_ref is_even
         <int>   <int>     <int>    <int>   <int>
     1     100      10         1     1000       1
     2     100      10         1     1001       1
     3     100      10         1     1002       1
     4     100      11         1     1003       1
     5     100      11         2     1004       1
     6     100      11         1     1005       1
     7     100      10         3     1006       1
     8     100      11         1     1007       0
     9     100      10         1     1008       0
    10     100      10         1     1009       0
    11     101      12         3     1000       1
    12     101      12         1     1001       1
    13     101      12         1     1002       1
    14     101      13         2     1003       1
    15     101      13         3     1004       1
    16     101      12         1     1005       0
    17     101      13         1     1006       0
    18     101      13         1     1007       0
    19     101      12         1     1008       0
    20     101      12         1     1009       0
    

2 个答案:

答案 0 :(得分:2)

有一个很好的名为EPPlus的lib,它使你与excel的关系变得更加容易。你可以在NuGet上找到它 因此,使用此代码获取颜色:

var x = sheet.Cells[rowIndex, colIndex].Style.Fill.BackgroundColor;

这是设置颜色:

sheet.Cells[rowIndex, colIndex].Style.Fill.SetCellsColor( Color.Yellow );

答案 1 :(得分:1)

最简单的解决方案:

 private void Get_Colors()
  {
      Excel.Workbook excel = Globals.ThisAddIn.Application.ActiveWorkbook;
      Excel.Worksheet sheet = null;
      Excel.Range ran = sheet.UsedRange;
      for (int x = 1; x <= ran.Rows.Count; x++)
      {
          for (int y = 1; y <= ran.Columns.Count; y++)
          {
              string CellColor = sheet.Cells[x, y].Interior.Color.ToString(); //Here I go double value which is converted to string.
              if (sheet.Cells[x, y].Value != null && (CellColor == Color.Transparent.ToArgb().ToString() || **CellColor == Excel.XlRgbColor.rgbGold.GetHashCode().ToString()**))
              {
                  sheet.Cells[x, y].Interior.Color = Color.Transparent;
              }
          }
      }
  }