C# 如何在c中删除excel中除标题以外的所有行#

C# 如何在c中删除excel中除标题以外的所有行#,c#,excel,C#,Excel,如何删除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++) {

如何删除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);
        }
解决方案

var range = (Range)ws.Range[ws.Cells[2, 1], ws.Cells[ws.UsedRange.Rows.Count, ws.UsedRange.Columns.Count]];
range.Delete(XlDeleteShiftDirection.xlShiftUp);

在.Net的v4中有一个变化,即使用
get_Range
停止工作

如果您在Excel中工作,您将继续点击第二行的delete,并观察下面的行向上移动,替换先前被删除行占用的单元格

要在自动化中复制该行为,请执行以下操作:

for (int i = 2; i <= rows; i++)
{
    ((Range)ws.Rows[2]).Delete(XlDeleteShiftDirection.xlShiftUp);
}

你试过什么?您是否计划使用特定的库或office automation?这取决于您选择的访问Excel文件数据的方法。我已编辑了我的问题,以显示我要使用的库可能重复:您可以使用顶部的答案。只需忽略单元格内容的条件,并让循环索引从2开始,以跳过顶行。或者从A2中构造一个范围。如何获取已使用的行数?我必须使用第一种方法,因为第二种方法给了我
未处理的异常:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:“object”不包含“get\u range”的定义。
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);