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

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

根据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;
        }

转载于:https://www.cnblogs.com/JoinZhang/archive/2006/03/16/351781.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值