目的:要删除Excel中多行。
现有一个方法:能删除Excel中单行(根据Rowindex)如下:
                  ///   <summary>  
                  ///   删除行  
                  ///   </summary>  
                  ///   <param   name="rowIndex"></param>  
                  public   void   DeleteRows(int   rowIndex)  
                  {  
                          try  
                          {  
                                  for   (int   n   =   1;   n   <=   this.WorkSheetCount;   n++)  
                                  {  
                                          workSheet   =   (Excel.Worksheet)workBook.Worksheets[n];  
                                          range   =   (Excel.Range)workSheet.Rows[rowIndex,   this.missing]; 
                                          range.Delete(Excel.XlDeleteShiftDirection.xlShiftUp);
                                  }  
                          }  
                          catch   (Exception   e)  
                          {  
                                  this.KillExcelProcess();  
                                  throw   e;  
                          }  
                  }
但是多次调用后发现,这种方法效率很低(比OleDbDataAdapter慢多了,但OleDbDataAdapter不支持删除行),
删除100条记录用35秒.
有没有哪位大虾能解决的?

解决方案 »

  1.   

    导入datatable删除之后,再写回excel,看看行吗?
      

  2.   

     EXCEL数据导入到dataset,在dataset中删除再写回
    或使用宏
      

  3.   

    你可以先读到内存中的dataset,在ds里面删,然后在写进去
      

  4.   

    有啥好的方法把excel的数据读取到内存中,
      

  5.   

    用get_Range方法Range range = workSheet.get_Range(workSheet.Cells[1, 1], workSheet.Cells[10, 10]);
    range.ClearContents();
      

  6.   

    首先把Excel的信息读取到DataSet中。然后使用宏删除记录。再把DataSet重写到Excel中
      

  7.   

    @sgchen2000
    用get_Range方法好像不行,有隔行删除的情况在。
    @ huming_h(Hunk)
    导入datatable删除之后,再写回excel?
    可能会改变Excel格式什么的吧。