2

我想转置excel工作表的行和列并保存。为此,我想使用 C# transpose() 方法。任何人都可以通过示例告诉它如何在 C# 中使用,语法是什么,应该创建什么对象来调用 transpose() 方法?

谢谢你。

4

3 回答 3

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;
}
于 2012-10-11T11:44:39.130 回答
3

您的方法是 Excel 对象模型的一部分,但通过 Visual Studio Tools for Office / Excel DNA / Managed XLL 等包含在 C# 中

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

然后将 transposedRange 粘贴回 Excel:

xlApp.ActiveSheet.Range("A1").Resize(transposedRange.GetUpperBound(0), transposedRange.GetUpperBound(1)) = transposedRange;
于 2012-10-11T12:25:41.787 回答
0

Transpose 可以作为 PasteSpecial(Transpose:不管) 的参数访问。
我在这里完整回答了这个问题: Transpose values in excel using C#

于 2019-07-15T21:23:09.990 回答