尝试与Excel文档建立连接时,我收到此错误,以更改没有填充的所有行的颜色。
我已阅读错误日志,并指出我的错误位于以下代码部分:
try
{
foreach (Excel.Range row in rows)
{
if (row.Cells.EntireRow.Interior.ColorIndex == -4142) //error is Here
{
row.Interior.Color = System.Drawing.Color.Red;
}
}
workbook.Save();
workbook.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Marshal.ReleaseComObject(workbook);
Marshal.ReleaseComObject(worksheet);
Marshal.ReleaseComObject(application);
是否有人知道导致此错误的原因,如果有,如何解决?
答案 0 :(得分:4)
那是因为对象的数据类型是System.DBNull
。您应检查对象值类型并采取相应措施:
object objValue = row.Cells.EntireRow.Interior.ColorIndex;
if(objValue is System.DBNull) {
//
} else {
//
}
答案 1 :(得分:1)
如果认为最简单的解决方法是仅使用Equals
。因为它可以比较任何类型的对象。
if (row.Cells.EntireRow.Interior.ColorIndex.Equals(-4142))
{
row.Interior.Color = System.Drawing.Color.Red;
}