2012-10-11 3 views
2

Excel 시트의 행과 열을 옮겨서 저장하고 싶습니다. 이 목적으로 C# transpose() 메서드를 사용하고 싶습니다. 아무도 C#에서 예제와 함께 사용할 수있는 방법을 설명 할 수 있습니다. 구문은 무엇이며 transpose() 메서드를 호출하기 위해 어떤 객체를 만들지는 못합니까?Excel 시트의 행과 열을 옮겨 놓는 Transpose() 메서드

감사합니다.

+0

"C# transpose() 메서드를 사용하고 싶습니다."- C#은 프로그래밍 언어이며 Transpose 메서드가 없습니다. 물론 이러한 메서드가있는 .NET 클래스 라이브러리가있을 수 있습니다. 하나는 마음에 들어 있습니까? – Joe

+0

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheetfunction.transpose.aspx 확인하십시오 – Shami

답변

3

당신의 방법은 오피스/엑셀 DNA/Visual Studio 도구를 통해 C#에서 Excel 개체 모델의 일부이지만 포함되어 관리 XLL 등

Object[,] transposedRange = (Object[,])xlApp.WorksheetFunction.Transpose(rng.Value2); 

그런 다음 Excel로 다시 transposedRange를 붙여 넣습니다

xlApp.ActiveSheet.Range("A1").Resize(transposedRange.GetUpperBound(0), transposedRange.GetUpperBound(1)) = transposedRange; 
+0

감사합니다. 그러나 xlApp와 rng는 무엇입니까? – Shami

+0

xlApp은 Application 개체입니다. rng가 범위이므로 Range ("A1 : B7") 및 Value2가 개체 배열로 전달됩니다. C#으로 Excel을 이미 사용하고 있다면이 사실을 알게 될 것입니다. 그렇지 않다면이 질문의 범위를 벗어난 큰 주제. – InContext

+0

죄송합니다. Pls는 Value2가 무엇인지 설명합니다. 나는 그것을 필요로한다. – Shami

8

먼저 Excelable 시트를 datatable로 변환 한 다음 행과 열을 datatable.Excel 시트로 변환하는 것은 datatable로 변환해야합니다. 비슷한 질문이 많은 경우 stackoverflow에서 질문을 검색 할 수 있습니다. 코드 아래에 datatable을 trasposing하는 경우 ;

private DataTable GenerateTransposedTable(DataTable inputTable) 
{ 
    DataTable outputTable = new DataTable(); 

    // Add columns by looping rows 

    // Header row's first column is same as in inputTable 
    outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString()); 

    // Header row's second column onwards, 'inputTable's first column taken 
    foreach (DataRow inRow in inputTable.Rows) 
    { 
     string newColName = inRow[0].ToString(); 
     outputTable.Columns.Add(newColName); 
    } 

    // Add rows by looping columns   
    for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++) 
    { 
     DataRow newRow = outputTable.NewRow(); 

     // First column is inputTable's Header row's second column 
     newRow[0] = inputTable.Columns[rCount].ColumnName.ToString(); 
     for (int cCount = 0; cCount <= inputTable.Rows.Count - 1; cCount++) 
     { 
      string colValue = inputTable.Rows[cCount][rCount].ToString(); 
      newRow[cCount + 1] = colValue; 
     } 
     outputTable.Rows.Add(newRow); 
    } 

    return outputTable; 
} 
+0

이것은 데이터 테이블을 변환하는 것입니다. 엑셀 시트를 트랜스 포즈하는 방법, 트랜스 포즈()가 있습니다. 알고 계시면 사용법을 알려주십시오. – Shami

+0

이것은 codeproject.com에이 기사에서 동일한 부호이다 : http://www.codeproject.com/Articles/44274/Transpose-a-DataTable-using-C – MB34

+0

"자료 테이블"을 전이하기를 위해 좋은 일. 나에게 이것은 엑셀 경로보다 쉽다. 다른 솔루션 (InContext에 의해)을 시도했지만 오류가 발생했습니다 "암시 적으로 'System .__ ComObject'유형을 'object [*, *]'로 변환 할 수 없습니다." – user6121177

관련 문제