2011-04-25 5 views
0

모든 버전의 Excel이 설치된 모든 PC에서 내 앱 작업에 늦게 바인딩을 사용하려고합니다.늦은 바인딩으로 UsedRange 가져 오기

그래서 제가 읽은 예제를 구현하려고했는데, 너무 혼란 스럽습니다.

성공적으로 인스턴스를 만들고 파일을 성공적으로 열지 만 UsedRange를 얻는 방법은 무엇입니까?

내 코드 :

object excelApp; 
object book; 
object usedrange; 

excelType = Type.GetTypeFromProgID("Excel.Application"); 
excelApp = Activator.CreateInstance(excelType); 


object docs = excelApp.GetType().InvokeMember("Workbooks", 
    BindingFlags.GetProperty, null, excelApp, null); 


object[] parms = { "C:\\ABC", Missing.Value, true }; 
book = docs.GetType().InvokeMember("Open", 
    BindingFlags.InvokeMethod, null, docs, parms); 


object[] params2 = { "UsedRange", Missing.Value }; 
usedrange = book.GetType().InvokeMember("Range", 
    BindingFlags.GetProperty, null, book, params2); 

그리고 내가 셀에 의해 행 다음 셀을 어떻게받을 수 있나요?

미리 감사드립니다.

+0

WorkBook에는 Range 또는 UsedRange 멤버가 없습니다. 먼저이 일을 조속한 것으로 만드십시오. 가능한 경우 C# 버전 4 * 동적 * 키워드를 활용하십시오. –

답변

0

Excel.Interop API를 사용하십시오. 여기의 예 : http://www.dotnetperls.com/excel.

+0

Excel Interop은 이전에 사용했지만 다른 버전의 Office가있는 다른 컴퓨터에서 내 응용 프로그램을 실행할 때 다른 버전을 사용하기 때문에 라이브러리를 인식하지 못하는 문제가 있습니다. – Miguel

+0

Excel.Interop 어셈블리를 프로젝트 출력에 항상 복사하면 문제가 발생하지 않는다고 생각합니다. 응용 프로그램에 바이너리를 포함시킵니다. – mservidio

관련 문제