如何删除Excel电子表格中除c#?
标题以外的所有行我正在尝试使用Microsoft.Office.Interop.Excel;
库
我现在有了这段代码
Range xlRange = ws.UsedRange;
int rows = xlRange.Rows.Count;
Console.WriteLine(rows);
for (int i = 2; i <= rows; i++)
{
((Range)ws.Rows[i]).Delete(XlDeleteShiftDirection.xlShiftUp);
}
但它并没有删除所有的行,我认为因为当它遇到某个行不再存在行时会删除行,我做错了什么?
我设法做到了,我从底部而不是顶部开始,所以现在我的循环是
for (int i = rows; i != 1; i--)
{
((Range)ws.Rows[i]).Delete(XlDeleteShiftDirection.xlShiftUp);
}
解决方案
var range = (Range)ws.Range[ws.Cells[2, 1], ws.Cells[ws.UsedRange.Rows.Count, ws.UsedRange.Columns.Count]];
range.Delete(XlDeleteShiftDirection.xlShiftUp);
使用get_Range
停止工作的.Net的v4发生了变化
答案 0 :(得分:1)
如果你在Excel中工作,你将继续在第二行上点击删除,并观察下面的行向上移动,替换之前被删除行占用的单元格。
在自动化中复制该行为:
for (int i = 2; i <= rows; i++)
{
((Range)ws.Rows[2]).Delete(XlDeleteShiftDirection.xlShiftUp);
}
请注意,您也可以预先构建一个范围,并在没有循环的情况下删除它,这将更快:
var range = (Range)ws.get_Range(
ws.Cells[1,2],
ws.Cells[ws.UsedRange.Cols.Count,ws.UsedRange.Rows.Count]
);
range.Delete(XlDeleteShiftDirection.xlShiftUp);