查询行和列颠倒的Excel

我怎样才能查询一个Excel文件的行和列颠倒/旋转90度?

可以用SELECT查询来完成,还是需要以编程方式recursion单元格?

这是一个.NET应用程序,所以linq或其他build议,欢迎。

偏斜的Excel

用这样的代码转置Datatable:

 private DataTable GenerateTransposedTable(DataTable inputTable) { DataTable outputTable = new DataTable(inputTable.TableName); outputTable.Columns.Add(inputTable.Columns[0].ColumnName); foreach (DataRow inRow in inputTable.Rows) { string newColName = inRow[0].ToString(); outputTable.Columns.Add(newColName); } for (int rCount = 1; rCount <= inputTable.Columns.Count - 1; rCount++) { DataRow newRow = outputTable.NewRow(); newRow[0] = inputTable.Columns[rCount].ColumnName; 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; } 

.NET不包含转置数据表的方法。 你必须自己做。 本网站链接有一个示例转置方法的教程。 我将复制并粘贴下面的代码片段:

 private DataTable Transpose(DataTable dt) { DataTable dtNew = new DataTable(); //adding columns for(int i=0; i<=dt.Rows.Count; i++) { dtNew.Columns.Add(i.ToString()); } //Changing Column Captions: dtNew.Columns[0].ColumnName = " "; for(int i=0; i<dt.Rows.Count; i++) { //For dateTime columns use like below dtNew.Columns[i+1].ColumnName =Convert.ToDateTime(dt.Rows[i].ItemArray[0].ToString()).ToString("MM/dd/yyyy"); //Else just assign the ItermArry[0] to the columnName prooperty } //Adding Row Data for(int k=1; k<dt.Columns.Count; k++) { DataRow r = dtNew.NewRow(); r[0] = dt.Columns[k].ToString(); for(int j=1; j<=dt.Rows.Count; j++) r[j] = dt.Rows[j-1][k]; dtNew.Rows.Add(r); } return dtNew; }