source

Excel Interop으로 기존 Excel 파일을 저장/덮어쓰는 방법 - C#

manysource 2023. 6. 4. 10:37

Excel Interop으로 기존 Excel 파일을 저장/덮어쓰는 방법 - C#

기존 파일을 변경사항으로 덮어쓸지 묻는 메시지를 표시하지 않고 Excel interop(이 경우 워크시트를 추가합니다)을 통해 Excel 스프레드시트에 변경사항을 저장할 수 있는 방법이 있습니까?사용자가 내 응용프로그램에서 스프레드시트가 열려 있는 것을 보지 않았으면 합니다. 따라서 파일을 덮어쓸 것인지 묻는 메시지 상자가 표시되는 것은 사용자에게 매우 부적절하고 혼란스러울 수 있습니다.

저는 워크북을 사용하고 있습니다.다른 이름으로 저장(파일 로케이션) 메서드입니다.

Excel interop을 위한 COM 참조 객체를 초기화하는 곳입니다.

private Excel.Application app = null;
    private Excel.Workbook workbook = null;

    public Excel.Workbook Workbook
    {
        get { return workbook; }
        set { workbook = value; }
    }
    private Excel.Worksheet worksheet = null;
    private Excel.Range workSheet_range = null;

엑셀 파일을 닫기/저장하기 위해 사용하고 있는 코드는 아래와 같습니다.workbook.close() 메서드 행은 처리되지 않은 예외를 발생시키는 것으로 보고된 행입니다.

 workbook.Close(true, startForm.excelFileLocation, Missing.Value);
            Marshal.ReleaseComObject(app);
            app = null;
            System.GC.Collect();

기본적으로 필요한 것은 Excel App입니다.디스플레이 경고 = 거짓 - 다음과 같은 방법이 있습니다.

ExcelApp.DisplayAlerts = False
ExcelWorkbook.Close(SaveChanges:=True, Filename:=CurDir & FileToSave)

이것이 도움이 되길 바랍니다.

이 코드만 재정의 중지 경고 또는 이미 사용 중인 템플릿에 필요합니다.

Excel App.디스플레이 경고 = 거짓

이것이 오래된 게시물이라는 것을 알지만, 저는 미래에 좌절감을 주지 않고 이 일을 할 수 있는 방법을 공유하고 싶었습니다.

첫 번째로 사용하는 것이 마음에 들지 않는 점:Excel App.디스플레이 경고 = 거짓

이 플래그를 설정하면 프로그램뿐만 아니라 Excel 파일에도 이 속성이 설정됩니다.즉, X를 클릭하여 파일을 변경하고 닫으면 파일을 저장하라는 메시지가 표시되지 않고 나중에 문제가 발생합니다.또한 Excel이 일반적으로 게시하는 다른 프롬프트도 비활성화됩니다.

저장하기 전에 파일이 있는지 확인하는 것이 좋습니다.

        if (File.Exists(SaveAsName))
        {
            File.Delete(SaveAsName); 
        }

언급URL : https://stackoverflow.com/questions/13055369/how-to-save-overwrite-existing-excel-file-with-excel-interop-c-sharp