.Net Excel Interop删除列非常慢

时间:2017-03-08 14:00:18

标签: c# .net excel interop excel-interop

我正在尝试根据使用范围的第一行或第二行中的单元格值从Excel电子表格中删除一定数量的列。因此,如果该范围内的单元格包含某个字符串,我想删除包含大约3500行/条目的整个列。

    List<int> ColumnsToBeGone = new List<int>();
    tab = (Worksheet)AllSheets.get_Item(SheetName);
    range = (Range)tab.UsedRange;
    object[,] allValues = (object[,])range.Cells.Value;

        for (int i = 0; i < 2; ++i)
        {
            for(int j = 0; j<range.Columns.Count; ++j)
            {
                CellRow = i + 1; CellColumn = j + 1;
                if (allValues[CellRow, CellColumn] != null)
                {
                    CellVal = allValues[CellRow, CellColumn].ToString();

                    if (CellVal != null)
                    {
                        if (CellVal.ToLower() == "item1" ||
                           CellVal.ToLower() == "item2" ||
                           CellVal.ToLower() == "item3" ||
                           CellVal.ToLower() == "item4" ||
                           CellVal.ToLower() == "item5" ||
                           CellVal.ToLower().Contains("item") ||
                           CellVal.ToLower().Contains("idem"))
                        {
                            ColumnsToBeGone.Add(CellColumn);
                        }
                    }
                }
            }
        }

到目前为止,我没有性能问题,但最终每列删除30-60秒,使用以下内容。

        foreach(int column in ColumnsToBeGone)
        {
            tab.Columns[column].Delete();
        }

此时它是RAM /处理器问题(4GB第二代i3 @ 3.30GHz)还是有更有效的方法来删除包含这么多条目的列?

0 个答案:

没有答案