C# DataTable数据增加小计合计列
生活随笔
收集整理的這篇文章主要介紹了
C# DataTable数据增加小计合计列
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/// <summary>
/// 分類小計,并有合計行
/// </summary>
/// <param name="dt"></param>
/// <param name="sColHeJi">顯示合計小計的字段</param>
/// <param name="nColHeJi">需要顯示‘合計’字段的列</param>
/// <param name="colsHeJi">需要合計的列</param>
public DataRow dbDataTableSubSumRowsWithColList(DataTable dt, string sColHeJi, string[] colsGroup, string[] colsHeJi)
{
DataRow dr = dt.NewRow();
dr[sColHeJi] = "合計";
dt.Rows.Add(dr);
//初始化合計數(shù)組
decimal[] arrDec = new decimal[colsHeJi.Length];
for (int i = 0; i < colsHeJi.Length; i++)
{
arrDec[i] = decimal.Zero;
}
//合計
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
arrDec[j] += Convert.ToDecimal(dt.Rows[i][cName]);//Tools.toDec(dt.Rows[i][cName] + "");
}
}
for (int i = 0; i < colsHeJi.Length; i++)
{
string cName = colsHeJi[i];
if (arrDec[i] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[i];
}
if (dt.Rows.Count <= 1) return dr;
//小計
string sRate = "";
int currSubSumCol = dt.Rows.Count - 2;
System.Collections.ArrayList ar = new System.Collections.ArrayList();
for (int i = dt.Rows.Count - 2; i >= 0; i--)
{
string currRate = dt.Rows[i]["belongedProjectTitle"] + "";
if (sRate != currRate)
{
if (i != dt.Rows.Count - 2)
{
dr = dt.NewRow();
dr[sColHeJi] = "小計";
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (arrDec[j] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[j];
}
dt.Rows.InsertAt(dr, currSubSumCol + 1);
}
currSubSumCol = i;
sRate = currRate;
for (int j = 0; j < colsHeJi.Length; j++)
{ //歸零
arrDec[j] = decimal.Zero;
}
}
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
arrDec[j] += Convert.ToDecimal(dt.Rows[i][cName]);
}
if (i == 0)
{
dr = dt.NewRow();
dr[sColHeJi] = "小計";
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (arrDec[j] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[j];
}
dt.Rows.InsertAt(dr, currSubSumCol + 1);
}
}
return dr;
}
再三須慎意,第一莫欺心
總結
以上是生活随笔為你收集整理的C# DataTable数据增加小计合计列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Intel 13代i9-13900K多核
- 下一篇: 科研论文提交流程与常见问题(EDAS 系