110,576
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 行列转换
/// </summary>
/// <param name= "dDataTable "> DataTable </param>
/// <returns> Return DataTable </returns>
public System.Data.DataTable DataTableRow2Col(System.Data.DataTable dt)
{
int iCol = dt.Columns.Count;
int iRow = dt.Rows.Count;
DataTable syllabus = new DataTable();
//创建对象表
object[,] myTable;
//初始化对象表的大小(直接将行列置换)
myTable = new object[iCol, iRow + 1];
//特殊应用
if (dt.TableName.ToUpper() == "xxx ")
{
//获取原列头名称
for (int ii = 0; ii < iCol; ii++)
{
myTable[ii, 0] = dt.Columns[ii].ColumnName;
}
//第一列的列头名称以及格式
syllabus.Columns.Add("序列 ", System.Type.GetType("System.String "));
}
else
{
//获取原列头名称
for (int ii = 0; ii < iCol; ii++)
{
myTable[ii, 0] = ii + 1;
}
//第一列的列头名称以及格式
syllabus.Columns.Add("序列 ", System.Type.GetType("System.Int32 "));
}
//行列数据转存
for (int i = 0; i < iCol; i++)
{
for (int ii = 0; ii < iRow; ii++)
{
myTable[i, ii + 1] = dt.Rows[ii][i];
}
}
//第二列的列头名称
syllabus.Columns.Add("次数 ", System.Type.GetType("System.Int32 "));
//其余列的列头名称(也就是原来的行,有多少行就有多少列)
for (int i = 0; i < iRow - 2; i++)
{
syllabus.Columns.Add(i.ToString());
}
//行到列的转换(包括原来的列名称和列对应的行上的数据)
//创建行到列的对象数组
object[] R2C;
//初始化对象数组的列(就是原行数,并且加上一,因为把原来的列头名称放为每一行的第一列了)
R2C = new object[iRow + 1];
//数据转置
for (int i = 0; i < iCol; i++)
{
//写入每一行的列数据
for (int ii = 0; ii < iRow + 1; ii++)
{
R2C[ii] = myTable[i, ii];
}
//写入表中
syllabus.Rows.Add((object[])R2C);
}
//返回表
return syllabus;
}
//
// dataGridView1
//
this.dataGridView1.BackgroundColor = System.Drawing.Color.Bisque;
this.dataGridView1.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.Bisque;
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Column1,
this.Column2});
this.dataGridView1.GridColor = System.Drawing.Color.Bisque;
this.dataGridView1.Location = new System.Drawing.Point(55, 189);
this.dataGridView1.Name = "dataGridView1";
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.Bisque;
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.RowHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView1.RowHeadersVisible = false;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(326, 190);
this.dataGridView1.TabIndex = 13;
//
// Column1
//
dataGridViewCellStyle2.BackColor = System.Drawing.Color.Bisque;
this.Column1.DefaultCellStyle = dataGridViewCellStyle2;
this.Column1.HeaderText = "Column1";
this.Column1.Name = "Column1";
//
// Column2
//
this.Column2.HeaderText = "Column2";
this.Column2.Name = "Column2";