2012-10-11 28 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