2016-10-28 2 views
0

테이블 내에서 여러 행을 삭제하고 삽입 할 수 있습니까? 예를 들어 210-560, 10-11 등의 행 범위를 삭제하고 싶다고 가정 해 봅니다. 아래 예제에서와 같이 한 행에서 행할 수 있습니까? 범위가있는 루프를 만들어야합니다. 숫자를 삭제하여 범위를 삭제 하시겠습니까?Excel.Interop 테이블에서 여러 행 삭제 및 삽입

C#을

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.Delete(); 

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.InsertRowRange(); 

VBA 하나를 사용하여이 같은 간단한 방법을 사용할 수 있지만

: 당신은 당신이 간단하게 쓸 수있는 C#에서 VBA 코드로 동일한 작업을 수행하려면

Rows("210:560").Delete 
Rows("11:12").EntireRow.Insert 

답변

1

을 :

var ws = xlWorkBook.Worksheets["Sheet1"]; 
ws.Range["210:560"].Delete(); 
ws.Range["11:12"].Insert(); 

는 당신은 한 번에 여러 행을 지정할 수 있습니다

ws.Range["210:560,722:838,917:917"].Delete(); 
ws.Range["11:12,15:17,19:19"].Insert(); 

단일 행의 경우 위에 표시된 것과 같이 행 번호를 두 번 지정해야합니다.

행의 문자열 크기 제한은 255 자입니다. 한 번에 이보다 많은 행을 처리하려는 경우 범위의 합집합을 수행해야합니다. 따라서이 같은 예를 들어 뭔가 :

application.Union(ws.Range["2:5,7:8,9:9"], ws.Range["11:12,15:17,19:19"]).Delete(); 

(.. 그냥 간결하게하기 위해 나는이 예제에있는 큰 문자열을 보이지 않았다 application 현재 Excel.Application의 인스턴스)

유일한 것은 주의 사항 : 제어판의 Windows 국가 별 설정에 지정된 목록 구분 기호를 사용해야합니다. 이는 전 세계 또는 ISV와 같은 알려지지 않은 사용자에게 응용 프로그램을 제공하는 경우 특히 중요합니다. 예 : 독일어 사용자의 경우 기본 목록 구분 기호는 ;이고 영국 사용자의 경우는 ,이 아닙니다. 물론 사용자가 수동으로 거의 모든 것을 설정할 수 있습니다.

당신이 사용하여 Windows 국가 별 설정에서 현재 목록 구분을 얻을 수 있습니다 :

var sep = (string)application.International[XlApplicationInternational.xlListSeparator];