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

C# 使用C更改Excel中MS Excel行的颜色#,c#,excel-interop,C#,Excel Interop,我目前正在创建一个小程序,允许用户在windows窗体中输入数据。将此数据输入表单后,将使用OleDb将其添加到Excel文档中 我对上面的部分没有问题,我可以输入数据,但当我尝试更改Excel行的颜色时,我的问题就出现了 如果行当前没有填充,我希望将行的颜色更改为红色 我当前使用的代码: Excel.Application application = new Excel.Application(); Excel.Workbook workbook = appli

我目前正在创建一个小程序,允许用户在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…)”行收到错误“cannotimplicitly convert type int to bool”

您需要使用而不是<代码>=运算符用于相等,但
=
运算符用于赋值

if (row.Cells.EntireRow.Interior.ColorIndex == 0)
=
运算符只需将右操作数赋给左变量/属性/索引器,并返回值作为结果。这就是为什么当你写作的时候

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

if(0)
它将不会编译,因为需要。

您需要使用而不是<代码>=运算符用于相等,但
=
运算符用于赋值

if (row.Cells.EntireRow.Interior.ColorIndex == 0)
=
运算符只需将右操作数赋给左变量/属性/索引器,并返回值作为结果。这就是为什么当你写作的时候

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

if(0)

它将不会编译,因为需要。

您正在尝试将
颜色索引设置为
0
,而不是将其与
0
进行比较。比较时使用
==

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

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

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

我认为您没有将保存添加到工作簿并更改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());
                }

我认为您没有将保存添加到工作簿并更改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());
                }

是的…在所有的小错误中,这就是我犯的错误。这已经删除了错误,但是我的电子表格中没有任何行被转换为红色。很抱歉,我只是回答了更多关于这篇文章的c#-的问题,我没有任何具体的excel经验。是否有任何方法将更改刷新回表单?类似于从WPF技术更改的
OnPropertyChanged
+1的可见性。我会调查OnPropertyChanged谢谢你的帮助。是的……所有的小错误都是我犯的。这已经删除了错误,但是我的电子表格中没有任何行被转换为红色。很抱歉,我只是回答了更多关于这篇文章的c#-的问题,我没有任何具体的excel经验。是否有任何方法将更改刷新回表单?类似于从WPF技术更改的
OnPropertyChanged
+1的可见性。我将查看OnProperty更改谢谢您的帮助!非常感谢您的帮助:)成功了!非常感谢您的帮助:)