2010-04-22 7 views
6
static void Main() 
{ 
    Application excelapp = new Application(); 
    Workbook book = excelapp.Workbooks.Open(@"C:\HWYFAB.xlsx", 
    0, false, 5, "", "", false, XlPlatform.xlWindows , "", 
    true, false, 0, true, false, false); 

    Worksheet sheet = (Worksheet)book.Sheets[1]; 

    Range cell = (Range)sheet.Cells[3, 2]; 
    Console.WriteLine(cell.Text); 
    cell.ClearContents(); 
    book.Close(true, "HWYFAB.xlsx", false); 
    excelapp.Quit(); 
} 

이 프로그램은 예상대로 실행되고 종료됩니다. 셀 B3에있는 올바른 값을 콘솔에 인쇄합니다. 닫을 때 기존 파일을 대체 할 것인지 묻습니다. 나는 예를 클릭한다. Excel에서 스프레드 시트를 열면 cell.ClearContents()에도 불구하고 값이 여전히 셀 B3에 있습니다.Interop C를 사용하여 Excel 스프레드 시트 저장 #

의견이 있으십니까?

답변

5

cell.ClearContents()을 호출하면 셀의 수식과 값 상수가 지워집니다. 이것은 절대적으로 효과가 있어야합니다. cell.Value2 == null (이 경우 true이어야 함)을 테스트하여 cell.ClearContents()으로 전화 한 후이를 확인할 수 있습니다.

귀하의 코드에있는 문제가 book.Close(true, "HWYFAB.xlsx", false) (으)로 전화하고 있다고 생각합니다. 문제는 명시 적으로 통합 문서의 이름을 전달하지만 경로에서 벗어나는 것입니다. (통합 문서를 열면 "C : \"디렉토리를 포함하여 전체 경로가 포함됩니다.) 저장할 때 통합 문서의 전체 경로를 벗어나면 현재 디렉토리에 저장됩니다.이 디렉토리는 " 내 문서 "또는 다른 곳에서는 사용할 수 없습니다.

통합 문서를 원래 위치에 그대로 저장하려면 Filename 매개 변수에 Type.Missing을 전달해야합니다. 예를 들어 :

book.Close(true, Type.Missing, false); 

이 아이디어는 테스트되지 않은,하지만 난이 당신을 위해 일해야한다는 상당히 확신한다. 시도 해보세요.

- 마이크

+0

그 트릭을했습니다. 너무 이상해. 내 컴퓨터에서 모든 HWYFAB.xlsx 복사본을 검색했는데 C : \에 하나만 있었다. 감사. – Wesley

+0

매우 이상합니다 ... 색인이 생성되지 않은 위치를 검색해야 할 수도 있습니다. 다행히 당신의 문제는 끝났습니다! –

관련 문제