programing

get_Range 워크시트가 예외를 발생

javamemo 2023. 5. 25. 21:23
반응형

get_Range 워크시트가 예외를 발생

C#을 사용하여 Excel 워크시트를 조작하고 있습니다.다음 두 코드는 동일하게 작동해야 하지만 하나는 작동하고 다른 하나는 예외를 던집니다.왜 그럴까요?

효과:

oRange = (Excel.Range)oSheet.get_Range("A1","F1");
oRange.EntireColumn.AutoFit();

이 경우 예외가 발생합니다.

oRange = (Excel.Range)oSheet.get_Range(oSheet.Cells[1, 1],oSheet.Cells[4,4]);
oRange.EntireColumn.AutoFit();

예외:

RuntimeBinderException occurred. "object" does not contain a definition for 'get_Range'

oSheet는 다음과 같이 인스턴스화됩니다.

Excel.Worksheet oSheet = new Excel.Worksheet();

둘 다 다르게 인스턴스화해야 하나요?

예외는 다음에서 던져진 것처럼 보입니다.oSheet.Cells[1, 1]그리고.oSheet.Cells[4, 4]의 주장으로 사용되는.get_range.

다음을 적용하면 예외가 발생하지 않습니다.

Excel.Range c1 = oSheet.Cells[1, 1];
Excel.Range c2 = oSheet.Cells[4, 4];
oRange = (Excel.Range)oSheet.get_Range(c1, c2);
oRange.EntireColumn.AutoFit();

그래서, 그것은 아마도 그것과 관련이 있을 것입니다.oSheet.get_Range기능성개체를 인수로 수신하므로 다음을 호출하려고 할 수 있습니다.get_Range내부 셀을 수신할 인수에 대한 방법 및 업캐스트Range컴파일러에서 수행한 개체가 메서드 호출을 숨길 수 있습니다.

행/열별 셀 정의가 필요한 경우 위의 방법을 사용합니다.

대신 워크시트 범위 속성을 사용합니다.예를 들어, 대신에

oRange = (Excel.Range)oSheet.get_Range(oSheet.Cells[1, 1],oSheet.Cells[4,4]);

사용하다

oRange = (Excel.Range)oSheet.Range[oSheet.Cells[1, 1],oSheet.Cells[4,4]];

.NET 2를 활용했을 때 get_Range() 메서드를 광범위하게 사용하고 있었습니다..NET 4 Client Profile로 변경했을 때 이 예외도 발생했습니다.get_Range() 참조를 Range 속성으로 대체하여 이 문제를 해결했습니다.

이 문제가 있는 모든 사용자는 새 변수를 만드는 것보다 명시적 변환을 사용하는 것이 훨씬 좋습니다.

oRange = (Excel.Range)oSheet.get_Range((Excel.Range)oSheet.Cells[1, 1], (Excel.Range)oSheet.Cells[4,4]);

에서 VSC# 프로젝트를 업그레이드했습니다.Net Framework 3.5 - 4.5.5.업그레이드가 성공적으로 완료되면 Excel 보고서를 생성할 때 이 "object"에 'get_Range' 예외에 대한 정의가 포함되지 않습니다.

제가 한 것은 아래 코드를 사용하는 대신입니다.

range = xlSheet.get_Range(Cells[xlRow, xlCol], Cells[xlRow, xlCol]);

다시 썼습니다.

range = xlSheet.Range[Cells[xlRow, xlCol], xlSheet.Cells[xlRow, xlCol]];

그리고 그것은 성공하였다.

.NET 5에서 위의 답변을 시도해 보았지만 더 이상 작동하지 않습니다.대신, 다음 코드가 작동합니다.

Excel.Range c1 = (Excel.Range)excelSheet.Cells[1, 1];
Excel.Range c2 = (Excel.Range)excelSheet.Cells[4, 4];
Excel.Range oRange = oSheet.get_Range(c1, c2);
  

언급URL : https://stackoverflow.com/questions/6546785/worksheet-get-range-throws-exception

반응형