2011-02-14 5 views
11

C#으로 이미 열려있는 Excel 파일을 읽고 싶습니다. 이 방법을 사용하고 있지만 Microsoft Excel에서 파일을 열 때 Excel 파일을 읽을 수 없습니다.C에서 Open Excel 파일을 읽는 방법

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read); 

그것은 당신이 무슨 뜻인지 이해를 바랍니다 IOException: The process cannot access the file 'myfile.xlsx' because it is being used by another process.

을 제공합니다. 나는 파일을 열어두고 파일은 Microsoft Excel에서 열어 두는 동안 C#에서 읽으려고합니다. 파일 공유를 - 나는 문

using (FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read)) 
{ 

} 
+3

다른 프로세스에서 파일을 열 수없는 경우 –

+0

그럴 수있는 방법이 없다고 확신합니까? – MonsterMMORPG

+0

방법 : http://support.microsoft.com/kb/316126 – Fionnuala

답변

6

Excel이 열려있는 동안에도 파일을 복사 할 수 있다고 생각합니다. 따라서 파일 복사본을 만든 다음 열 수 있습니다. 복사가 끝나면 반드시 자신을 정리하십시오.

+0

예 해결책 일 수 있습니다. – MonsterMMORPG

+1

이것은 easly 문제를 해결합니다 :) – MonsterMMORPG

+2

아니요, 해결책이 아닙니다. 그것은 여기 : http://stackoverflow.com/a/898017/48082 – Cheeso

0

을 사용하고 있습니다.

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.Read); 

쓰기 권한을 지정해야 할 수도 있습니다.

+0

내가 무엇을 요구하고 있는지 이해 했습니까? 나는 Excel을 종료하고 파일이 Microsoft Office에서 열리는 동안 Excel이 내 C# – MonsterMMORPG

0

당신은 네 번째 매개 변수로 File.Open을 시도 할 수 있습니다를 사용하여 C#을 사용 봐주세요 파일의 정확한 개폐를 보장하기 위해 C#을 넷 프레임 워크 4.0

+0

여전히 오류 – MonsterMMORPG

+0

을 제공합니다. FileShare.ReadWrite를 사용하여 열어야하기 때문에 Excel을 열어야합니다 - http://stackoverflow.com을 참조하십시오./questions/897796/open-an-open-an-open-an-net-streamreader/898017 # 898017 – splintor

3

Interop 라이브러리를 사용하면 이미 열려있는 Excel 인스턴스를 사용할 수 있습니다.

oExcel == (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") 
+0

이 용도로 필요한 네임 스페이스는 무엇입니까? – MonsterMMORPG

+0

Microsoft.Office.Interop "Excel 자동화"에 대한 자세한 내용은 google을 참조하십시오. 그물에 대한 많은 정보 ;-) – Koen

+0

다른 대답을 발견했습니다. 파일 복사는 실제로 여기에서 훨씬 더 좋은 방법입니다. – Koen

16

당신은 FileShare.ReadWrite 그것을 열 필요가 :

FileStream stream = File.Open("myfile.xlsx", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 

this answer를 참조하십시오.

+0

+1 최고의 대답 !!! – Warlock

+0

동일한 오류 메시지가 계속 표시되는데이 기능이 작동하지 않습니다. – jcubero

0

같은 파일을 두 번 이상 열려면 공유 모드에서 열어야합니다.

다른 사람들에게 도움이되기를 바랍니다.