使用excel.interop.object库从xls中删除前3行

Raj*_*mar 4 c# excel office-interop

我正在使用excel.interop.object库9.0来操作我在c#中的xls文件

假设我有一张xls,有5张.所有床单都有一些行.

我正在使用以下代码从我的xls中的每个工作表中删除前2行

Excel.Application excelApp = new Excel.Application();
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(mstrFilePath, 1, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, null, false);
        try
        {
            Excel.Sheets excelWorkSheet = excelWorkbook.Sheets;                
            foreach (Excel.Worksheet work in excelWorkSheet)
            {
                Excel.Range range = work.get_Range("A1", "A3");
                Excel.Range entireRow = range.EntireRow; // update
                for (int i = 1; i <= 3; i++)
                {
                    entireRow.Delete(Excel.XlDirection.xlUp);                       
                }                  
            }
            //excelWorkbook.Close(false, mstrFilePath, null);
        }
        catch (Exception ex)
        {

        }
        finally
        {
            excelApp.Quit();
        }
Run Code Online (Sandbox Code Playgroud)

但是从表3中删除2行而不删除任何其他表中的任何行是行为不当.

这里出了什么问题?

and*_*ndy 6

在你的代码中删除for循环(for(int i = 1; i <= 3; i ++))它将起作用.

您已经选择了从A1到A3(三排)的范围.........

Excel.Range range = work.get_Range("A1", "A3"); 
Run Code Online (Sandbox Code Playgroud)

所以不需要像下面那样再次循环相同的范围.....

//for (int i = 1; i <= 3; i++)
//{
    entireRow.Delete(Microsoft.Office.Interop.Excel.XlDirection.xlUp);
//}
Run Code Online (Sandbox Code Playgroud)