在Excel 2013中更快地查找包含特定字符串的空单元格和单元格

时间:2013-06-20 08:34:14

标签: c# .net excel office-interop

在使用Interop和Office 2013安装创建和自定义Excel文件时,给我一些非常慢的结果(超过5分钟)。 事实上,同样的事情在Excel 2010互操作上运行得非常好(只需50秒,完全相同的过程)。 (下面的代码片段)

很高兴知道是否有更快的方法来做到这一点。我知道有不同的库可以做到这一点,但我想坚持Interop,因为一切都已经在同一个。 我首先创建Excel文件,然后检查是否有任何空单元格或包含特定字符串的单元格并更改这些单元格的颜色。 为了创建Excel,我使用了Object数组并解析它真的更快。拉下来的主要是寻找和改变细胞颜色。

// Check for empty cell and make interior silver color
for (int row = 0; row < rowNo; row++)
{
    for (int col = 0; col < columnNo; col++)
    {
        if (string.IsNullOrEmpty(objData[row, col].ToString()))
        {
            // Access that cell in Excel now and change interior color
            Range cell = (Range)activeSheet.Cells[row + 2, col + 1];
            cell.Interior.Color = System.Drawing.Color.Silver; 
        }
    }
}

// Check for cells contains "column header string#"
for (int col = 16; col < columnNo; col++)
{
    // Get column header - only once and use it for all rows in the same column
    string cellValue = activeSheet.Cells[1, col + 1].Value2.ToString();
    for (int row = 0; row < rowNo; row++)
    {
        string value = objData[row, col].ToString();
        if (string.IsNullOrEmpty(value) || value.Contains(cellValue+"#"))
        {
            Range cell = (Range)activeSheet.Cells[row + 2, col + 1];
            cell.Interior.Color = System.Drawing.Color.Silver;
            cell.Font.Color = System.Drawing.Color.Red;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我会考虑选择整个范围并设置条件格式,因此空白单元格是您想要的颜色。抱歉,没有任何代码,因为我已经玩过这个领域已经有一段时间了。