2010-08-23 1 views
3

나는 다음과 같은 코드가하고 행을 삭제하지 않습니다, 현재 통합 문서를 통해 저장하라고 요구하지만 아무것도 저장되지 않고 EXCEL.EXE 작업 관리자에서 계속 실행 :Excel 자동화 C# : 여러 행을 삭제하는 방법?

protected void OpenExcelWorkbook(string fileName) 
{ 
    _app = new Excel.Application(); 

    if (_book == null) 
    { 
     _books = _app.Workbooks; 
     _book = _books.Open(fileName, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing); 
     _sheets = _book.Worksheets; 
    } 
} 

protected void CloseExcelWorkbook() 
{ 
    _book.Save(); 
    _book.Close(false, Type.Missing, false); 
} 


protected void NAR(object o) 
{ 
    try 
    { 
     if (o != null) 
      System.Runtime.InteropServices.Marshal.ReleaseComObject(o); 
    } 
    finally 
    { 
     o = null; 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    OpenExcelWorkbook(@"C:\Book2.xls"); 
    _sheet = (Excel.Worksheet)_sheets[1]; 
    _sheet.Select(Type.Missing); 

    Excel.Range range = _sheet.get_Range("A1", "A3");    
    range.EntireRow.Delete(Type.Missing);    
    NAR(range); 
    NAR(_sheet); 
    CloseExcelWorkbook(); 
    NAR(_book); 
    _app.Quit(); 

    NAR(_app); 
} 

답변

3

내가 수 없습니다 문제를 정확히 재현 할 수 있습니다. 그러나 EXCEL.EXE 프로세스가 완전히 종료되도록하려면 참조하는 모든 단일 COM 개체에서 ReleaseComObject 메서드를 호출해야합니다. (:, Type.Missing "1");`와 당신의 업데이트 등과 협력

private void button1_Click(object sender, EventArgs e) 
{ 
    OpenExcelWorkbook(@"C:\Book2.xls"); 
    _sheet = (Excel.Worksheet)_sheets[1]; 
    _sheet.Select(Type.Missing); 

    Excel.Range range = _sheet.get_Range("A1", "A3"); 
    Excel.Range entireRow = range.EntireRow; // update 
    entireRow.Delete(Type.Missing); 
    NAR(entireRow); // update 
    NAR(range); 
    NAR(_sheet); 
    NAR(_sheets); // update 
    CloseExcelWorkbook(); 
    NAR(_book); 
    NAR(_books); // update 
    _app.Quit(); 

    NAR(_app); 

} 
+0

수정'get_Range'을'get_Range 말 :

이렇게하려면 다음과 같이 코드를 업데이트 할 수 있습니다 잘. Excel은 병합에 대한 질문을하지 않고 성공적으로 닫습니다. 당신의 도움을 주셔서 감사합니다. –