在.NET中,将竖表变横表(支持固定列)

王朝c#·作者佚名  2008-05-19
宽屏版  字体: |||超大  

竖表变横表(支持固定列)

根据LoveCherry的竖变横方法改进而来

public DataTable MakeData(DataTable dt,int iColumnSize,int[] iColumnID) //iColumnsize:重复列数 iColumnID 需要横向排列的列的序号数组

{

int ColumnCount=iColumnID.Length;

int totalRows=dt.Rows.Count;

int itmp=dt.Rows.Count%iColumnSize; //行数

int iRows; //行数

if(itmp==0)

iRows=dt.Rows.Count/iColumnSize;

else

iRows=dt.Rows.Count/iColumnSize+1;

DataTable newdt=new DataTable();

for(int i=0;i<iColumnSize;i++)

{

for(int j=0;j<ColumnCount;j++)

{ string aa=dt.Columns[iColumnID[j]].ColumnName+i;

int bb=iColumnID[j];

DataColumn dc=new DataColumn(dt.Columns[iColumnID[j]].ColumnName+i,dt.Columns[iColumnID[j]].DataType);

newdt.Columns.Add(dc);

}

}

for(int i=0;i<iRows;i++)

{

DataRow dr=newdt.NewRow();

for(int j=0;j<iColumnSize;j++)

{

for(int k=0;k<ColumnCount;k++)

{

if((i+j*iColumnSize)<dt.Rows.Count)

{

string aa=dt.Columns[iColumnID[k]].ColumnName+j;

try

{

dr[dt.Columns[iColumnID[k]].ColumnName+j]=dt.Rows[iRows*j+i][iColumnID[k]];

}

catch

{}

}

}

}

newdt.Rows.Add(dr);

}

return newdt;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有