2011-04-28 2 views
-1

해결책 : POST복사 엑셀 행 (VS 2008, .NET 프레임 워크 3.5) FOUND

안녕하세요 바닥을 확인,

내가 Excel 개체 모델 (네임 스페이스 마이크로 소프트를 가져 오기를 사용하고 있습니다. Office.Interop.Excel)을 사용하여 코드에서 Excel.Application 개체를 연 다음 통합 문서, 워크 시트 등을 엽니 다. 내가하고있는 일은 무척 간단합니다. 두 개의 워크 시트 개체를 열어 두었습니다. 하나는 이미 데이터로 채워지고 다른 하나는 비어 있으며 첫 번째 워크 시트의 일부 행으로 채워지기로되어 있습니다. 첫 번째 워크 시트의 셀과 관련된 일부 조건이 충족되지 않으면 첫 번째 사용 가능한 행에서 두 번째 워크 시트의 전체 행을 복사하려고합니다. 출력 워크 시트의 첫 번째 빈 행을 인덱싱하는 정수 카운터가 1로 초기화됩니다.이 카운터는 outputSheet.Rows (counter)에 행을 삽입 할 때마다 분명히 증가합니다.

내가 봤 거든 모든 솔루션 중 VBA를 (나는 VB.NET 기반의 솔루션을 찾고 있어요) 또는 .NET Framework 3.5 (런타임 예외를 받고 있어요)와 호환되지 않습니다. Range 객체를 올바르게 사용하지 않고 있다고 생각합니다. 어쨌든이 일을하는 가장 간단한 방법은 무엇입니까? 엑셀 파일에 OLEDB 연결을 열지 않으려는 것입니다. 구현하려는 간단한 행 복사 메커니즘에 너무 복잡합니다.

감사합니다,

제이슨

편집 # 1 : 내가 처리해야 엑셀 기록의 일반적인 종류 :

1 | V | 1 | 01078215 | 02 | 성명

2 | V | 1 | 8048321 | 01 | 전체 이름

예를 들어 행의 네 번째 셀이 8 자리가 아닌 경우 행을 그대로 두 번째 Excel 파일에 복사하고 싶습니다.

편집 # 2 : 코드 :이라

'copy a row from an excel spreadsheet to another 

Sub CopyRowTo(ByVal input As Excel.Worksheet, 

        ByVal output As Excel.Worksheet, 

        ByVal row_in As Integer, 

        ByVal row_out As Integer) 

    input.Activate() 

    input.Rows(row_in).Select() 

    input.Rows(row_in).Copy() 

    output.Activate() 

    output.Rows(row_out).Select() 

    output.Rows(row_out).Paste() 

End Sub 

: CopyRowTo (inputSheet, outputSheet, 1, 1)

#

FOUND 해결책 : 나는 솔루션을 발견

내 문제. 해당 객체에 포함 된 범위를 에드 (- 어떤 이유로, 내가 가진 후 Excel.Worksheet 객체에 붙여 넣기 방법을 적용 할 필요가 나타납니다

input.Activate() 

input.Rows(row_in).Copy() 

output.Activate() 

output.Rows(row_out).Select() 

output.Paste() 

가 선택() : 다음 코드는 속임수를 썼는지 나는 VB.NET을 전혀 얻지 못한다. 솔직히). 당신은 무료 버전의 한계 (시트 당 150 행, 5 개 워크 시트까지) 내 경우

감사합니다,

J

#
+0

시트 1 데이터의 예 및 시트 2에 표시되는 방법을 제공하십시오. 지금까지 작성한 코드를 표시하십시오. VBA 코드를 사용할 때 어떤 오류가 표시됩니까? – shahkalpesh

+0

시트 1 데이터 예제, 다른 필드는 "|"로 구분됩니다. 1 | V | 1 | 01078215 | 주소 | 우편 번호 | 도시 1 2 | V | 3 | 0567892 | 주소 2 | 우편 번호 2 | City 2 예를 들어, 네 번째 필드에 8 자리가없는 경우 (두 번째 행의 경우) 전체 엑셀 행을 새 스프레드 시트에 복사해야합니다. 그냥 추가 서식이 필요하지 않습니다. – Jason

+0

시작 게시물의 "편집 : 코드"부분에 제공된 코드를 사용하고 있습니다. 그러나 "붙여 넣기()"Range 클래스의 올바른 음모 멤버가 아닙니다 예외가 수신됩니다.이 다음 Microsoft 설명서를 모순됩니다 : http://msdn.microsoft.com/en-us/library/ aa220332 % 28v = office.11 ​​% 29.aspx – Jason

답변

1

는 Gembox 라이브러리는 쉽게 그것을 만드는 : http://www.gemboxsoftware.com/GBSpreadsheetFree.htm

아마 비슷한 다른 것들이 있습니다.

+0

불행히도이 작업은 에너지 공급자가받는 스프레드 시트를 능가합니다. 150 개를 훨씬 초과합니다. 그러나 당신의 관심에 감사드립니다. – Jason

관련 문제