繁体   English   中英

使用C#在Excel中更改MS Excel行颜色

[英]Change MS Excel Row Colour in Excel using C#

我当前正在创建一个小程序,该程序将允许用户将数据输入到Windows窗体中。 将此数据输入到表单后,将使用OleDb将其添加到Excel文档中。

我在上面的部分中没有问题,可以轻松输入数据,但是当我尝试更改Excel行的颜色时出现了我的问题。

如果行当前没有填充,我希望将行的颜色更改为红色。

我当前使用的代码:

        Excel.Application application = new Excel.Application();
        Excel.Workbook workbook = application.Workbooks.Open(@"C:\Users\jhughes\Desktop\ScreenUpdate.xls");
        Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["DailyWork"];
        Excel.Range usedRange = worksheet.UsedRange;
        Excel.Range rows = usedRange.Rows;
        try
        {
            foreach (Excel.Range row in rows)
            {
              if (row.Cells.EntireRow.Interior.ColorIndex = 0)
              {
                 row.Interior.Color = System.Drawing.Color.Red;
              }
            }
        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }

我在“ If(row.Cells.EntireRow ....)”行收到错误“无法将类型int隐式转换为bool”错误

您试图将ColorIndex设置为0 ,而不是将其与0进行比较。 比较时使用==

foreach (Excel.Range row in rows)
{
    if (row.Cells.EntireRow.Interior.ColorIndex == 0) // changed = to ==
    {
        row.Interior.Color = System.Drawing.Color.Red;
    }
}

您需要使用==运算符而不是= operator ==运算符用于相等性,但=运算符用于赋值。

if (row.Cells.EntireRow.Interior.ColorIndex == 0)

=运算符只是将右操作数分配给左变量/属性/索引器,并返回该值作为其结果。 这就是为什么当你写

if (row.Cells.EntireRow.Interior.ColorIndex = 0)

它等于

if(0)

由于if语句需要布尔表达式 ,因此不会编译。

我认为您没有在工作簿中添加保存并在if条件下进行更改。 不知何故,默认的colorindex为-4142。 经过测试,现在可以更改颜色

Excel.Application application = new Excel.Application();
                Excel.Workbook workbook = application.Workbooks.Open(@"C:\Users\MyPath\Desktop\ColorBook.xls");
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["DailyWork"];
                Excel.Range usedRange = worksheet.UsedRange;
                Excel.Range rows = usedRange.Rows;
                try
                {
                    foreach (Excel.Range row in rows)
                    {
                        if (row.Cells.EntireRow.Interior.ColorIndex == -4142)
                        {
                            row.Interior.Color = System.Drawing.Color.Red;
                        }
                    }
                    workbook.Save();
                    workbook.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM