C#Transpose()方法,用于在excel工作表中对行和列进行转置
我想转换excel工作表的行和列并保存它。为此,我想使用C#transpose()方法。有人能举例说明如何在C#中使用它吗?语法是什么,应该创建什么对象来调用transpose()方法C#Transpose()方法,用于在excel工作表中对行和列进行转置,c#,.net,excel,c#-4.0,C#,.net,Excel,C# 4.0,我想转换excel工作表的行和列并保存它。为此,我想使用C#transpose()方法。有人能举例说明如何在C#中使用它吗?语法是什么,应该创建什么对象来调用transpose()方法 谢谢。首先,您必须将excel工作表转换为datatable,然后以编程方式转换datatable的行和列。要将excel工作表转换为datatable,您可以在stackoverflow上搜索问题,因为它有许多类似的问题。对于下面的转换datatable,代码起作用 private DataTable Gene
谢谢。首先,您必须将excel工作表转换为datatable,然后以编程方式转换datatable的行和列。要将excel工作表转换为datatable,您可以在stackoverflow上搜索问题,因为它有许多类似的问题。对于下面的转换datatable,代码起作用
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;
}
专用数据表GenerateTransposedTable(数据表可输入)
{
DataTable outputTable=新DataTable();
//通过循环行添加列
//标题行的第一列与Inputable中的相同
outputTable.Columns.Add(inputTable.Columns[0].ColumnName.ToString());
//标题行的第二列向前,“采用可输入的第一列”
foreach(inputable.Rows中的数据行inRow)
{
字符串newColName=inRow[0]。ToString();
outputTable.Columns.Add(newColName);
}
//通过循环列添加行
对于(int rCount=1;rCount,您的方法是Excel对象模型的一部分,但通过Visual Studio Tools for Office/Excel DNA/Managed XLL等包含在C#中
Object[,] transposedRange = (Object[,])xlApp.WorksheetFunction.Transpose(rng.Value2);
然后将TransposeSedRange粘贴回Excel:
xlApp.ActiveSheet.Range("A1").Resize(transposedRange.GetUpperBound(0), transposedRange.GetUpperBound(1)) = transposedRange;
转置可以作为PasteSpecial的参数访问(转置:任意)。
我在这里完整地回答了这个问题:“我想使用C#transpose()方法”-C#是一种编程语言,没有转置方法。当然可能有.NET类库有这样一种方法-你想用哪种方法?检查一下这是转置数据表。有一种方法可以转置excel工作表,transpose()。如果您知道的话,请告诉我用法。这与codeproject.com上的这篇文章中的代码完全相同:适用于转换“数据表”。对我来说,这比使用Excel路径更容易。尝试了其他解决方案(通过InContext),但出现错误“无法隐式转换类型”System.\uu ComObject”为“对象[,]”。谢谢。但什么是xlApp和rng?xlApp是应用程序对象。rng是您的范围,所以范围(“A1:B7”)Value2将其作为对象数组传递。如果您已经将Excel与C#一起使用,您将知道这一点。如果没有,则这是一个超出此问题范围的大主题。抱歉!!请解释什么是Value2。我需要它。Value2将范围作为对象数组传递给Transpose()我已经更新了我的答案,将其显式转换为多维对象数组。上面的所有内容都有效,我刚刚对其进行了测试。