我正在尝试根据使用范围的第一行或第二行中的单元格值从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)还是有更有效的方法来删除包含这么多条目的列?