2017-09-12 1 views
0

스프레드 시트를 업데이트하기 위해 일부 코드를 조작했지만 스프레드 시트를 열어 저장하면 파일이 손상되어 메시지가 나타납니다. "일부 콘텐츠에 문제가 있음을 발견했습니다. 우리가 할 수있는 한 최대한 회복하려고 노력하고 싶니? " 변경없이 파일을 열어 저장하면 파일이 손상 될 수 있습니다.

이 결과 파일은 또한 프로세스에 2메가바이트 3메가바이트 주위에서 수축 다음 코드

FileInfo excelFile = new FileInfo("mysheet.xlsm"); 
using (ExcelPackage excel = new ExcelPackage(excelFile)) 
{ 
    excel.Save(); 
} 

의해 복제 될 수있다.

꽤 똑바로되어야하지만 나는 뭔가 중요한 것을 놓치고 있어야합니다.

+1

epplus 지원 문제를 제기 했습니까? – mjwills

+0

스프레드 시트에 EPPlus에서 지원하지 않는 콘텐츠가 포함되어있을 수 있습니다 (Excel로 수행 할 수있는 작업의 100 %를 처리하지 못함). 다른 /보다 기본적인 스프레드 시트를 사용해 보셨습니까? – Pete

+0

@mjwillis 나는 [http://epplus.codeplex.com/discussions](discussion 포럼)을 보았지만 그 모든 활동이 보이지 않아서 내가 여기 처음 왔어. 그 경로를 시도해 볼 수도 있습니다 ... – Chris

답변

1

DISCAIMER :이 응답하지 않습니다,하지만 난 당신의 문제를 재현하기 위해 노력했습니다

몇 가지 코드를 게시 할,하지만 운. 단계는 다음과 같습니다.

Excel 2010에서 수동으로 스프레드 시트를 만들었습니다. Sheet1의 A1 셀에있는 텍스트는 단순히 "Hello"라고 읽습니다.

Option Explicit 

Sub Foo() 

    MsgBox "Hello World", vbOKOnly, "Foo!" 

End Sub 

나는 다음 매크로 사용 스프레드 시트 (C : Book1.xlsm \ \ 온도)로이 저장된 :

또한 다음 코드로 매크로 편집기 (Alt-F11)에서 코드 모듈을 추가 한

Visual Studio에서 나는 C# 콘솔 응용 프로그램을 만들고 NuGet에서 EPPlus 패키지를 추가했습니다. 기본 방법은 다음과 같습니다.

static void Main(string[] args) 
{ 
    using (var pck = new ExcelPackage(new FileInfo(@"c:\temp\Book1.xlsm"))) 
    { 
     pck.Save(); 
    } 
} 

디버깅 할 때 문제없이 실행됩니다.

저장할 폴더의 사용 권한을 확인하고 EPPlus 패키지를 새로 고쳐야합니까?

+0

도움을 주셔서 감사합니다. 나는 당신의 예제를 시험해 보았습니다. 그리고 그것은 괜찮 았는데, 그 다음 빈 문서와 함께 광산을 반복했고, 다시 실패했습니다. 그런 다음 다른 곳에서 "Hello"를 추가했는데 실패 했으므로 .xlsm이 올바르게 저장되도록 매크로가 필요합니다. 이런 종류의 테스트는 문제가되는 통합 문서에서 텍스트 만 워크 시트를 복사 한 다음 코드를 통해 실행했으나 실패한 이전 실험의 유효성을 검사합니다. .xlsm을 확실히 저장할 수는 있지만 내 문서의 어떤 부분이 문제를 일으키는 지 찾기가 어려울 수 있습니다 ... – Chris

+0

문제 없습니다 - 행운을 빕니다 – Pete

1

문제의 최하부에 도달하지 못해서 Interop 라이브러리로 전환했습니다.

관련 문제