2012-10-11 23 views
2

我要轉置行和Excel工作表的列,並保存它的行和列。我想爲此使用C#transpose()方法。任何人都可以告訴它如何在C#中使用例子,什麼是語法,創建什麼對象來調用transpose()方法?C#移調()方法來轉置在excel表

謝謝。

+0

「我想用C#轉置()方法」 - C#是一種編程語言,並沒有一個移調方法。當然可能有.NET類庫有這樣的方法 - 你有哪一個想法? – Joe

+0

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheetfunction.transpose.aspx 入住這 – Shami

回答

3

你的方法是Excel對象模型的一部分,但包含在C#通過Visual Studio Tools for Office中/ Excel的DNA /管理XLL等

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

然後transposedRange粘貼到Excel中:

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

謝謝。但是xlApp和rng是什麼? – Shami

+0

xlApp是應用程序對象。 rng是你的範圍,所以Range(「A1:B7」)和Value2將它作爲對象數組傳遞。如果您已經在C#中使用Excel,您將會了解這一點。如果不是那麼這個問題的範圍之外的一個大話題。 – InContext

+0

對不起!請解釋什麼是Value2。我需要它。 – Shami

8

首先,您必須將Excel錶轉換爲數據表,然後以編程方式轉換數據表的行和列。爲了將Excel錶轉換爲數據表,您可以在stackoverflow上搜索問題,因爲它有很多類似的問題。對於轉換數據表下面的代碼工程;

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

這是移調數據表。有一種方法可以轉置Excel表格Transpose()。如果你知道的話,讓我知道這個用法。 – Shami

+0

這是這篇文章完全相同的代碼上codeproject.com:http://www.codeproject.com/Articles/44274/Transpose-a-DataTable-using-C – MB34

+0

工作好調換「數據表」。對我來說,這比去往Excel路線更容易。嘗試了其他的解決方案(通過InContext),但得到錯誤「不能隱式地將類型'System .__ ComObject'轉換爲'object [*,*]'」。 – user6121177