未转化的图片 转化后的图片 代码如下: /// <summary> /// 生成交叉表,统计方式 暂时用求和。 /// </summary> /// <param name="dtSource"></param> /// <param name="sColField">交叉表列标题</param> /// <param name="rowHeaderField">交叉表行标题</param> /// <param name="dataField">数据列</param> /// <returns></returns> public DataTable BuildAcrossTable(DataTable dtSource, string sColField, string rowHeaderField, string dataField) { DataTable dtResult = new DataTable(); dtResult.Columns.Add("rowHeader",typeof(string)); for (int i = 0; i < dtSource.Rows.Count; i++) { string curColName=dtSource.Rows[i][sColField].ToString().Trim(); if (!dtResult.Columns.Contains(curColName)) { dtResult.Columns.Add(curColName, typeof(int)); } int iData = 0; DataRow[] drs = dtResult.Select("rowHeader='" + dtSource.Rows[i][rowHeaderField].ToString().Trim() + "'"); DataRow drNew; if(drs.Length==0) { drNew=dtResult.NewRow(); drNew["rowHeader"] = dtSource.Rows[i][rowHeaderField].ToString().Trim(); dtResult.Rows.Add(drNew); } else { drNew=drs[0]; } int.TryParse(drNew[curColName].ToString(),out iData); int addData=0; int.TryParse(dtSource.Rows[i][dataField].ToString(),out addData); drNew[curColName]=iData+addData; } return dtResult; }