private void btnQuery_Click(object sender, EventArgs e)

{

if (cboxFactory.Text=="")

{

MessageBox.Show("请选择厂别!","系统提示");

return;

}

fname = cboxFactory.Text;

//gongyi = cmbGongYi.Text.Trim();

List gongDuans = new List();//工段数组

gongyi = new List();

        for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))
{
gongDuans.Add(checkedListBox1.Items[i].ToString());
}
} for (int i = 0; i < checkedListBox2.Items.Count; i++)
{
if (checkedListBox2.GetItemChecked(i))
{
gongyi.Add(checkedListBox2.Items[i].ToString());
}
}
backgroundWorker1.RunWorkerAsync(gongDuans);
ChangState();
}
Thread myThread;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
myThread = Thread.CurrentThread;
List<string> gongDuans =(List<string>)e.Argument;
String gongyis = "";
if (gongyi.Count > 0)
{ for (int j = 0; j < gongyi.Count; j++)
{ gongyis = gongyis + gongyi[j];
if (j != gongyi.Count-1) gongyis = gongyis + "-";
}
}
if (gongDuans.Count>0)
{
List<DataTable> dts = new List<DataTable>();
for (int i = 0; i < gongDuans.Count; i++)
{
if (!backgroundWorker1.CancellationPending)
{ dts.Add(GetDuiZhi(gongDuans[i],fname,gongyis)); }
} backgroundWorker1.ReportProgress(100, dts);
}
} private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
try
{
List<DataTable> dtPays = e.UserState as List<DataTable>;
Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
workbook.Open(Application.StartupPath + @"\Templates\在制品堆积表1.xlt");
Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];//第一个工作表
sheet.Cells["B2"].PutValue(cboxFactory.Text);
quTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
sheet.Cells["J2"].PutValue(quTime);
int lastIndex = 3; #region 构造带汇总的新集合
List<DataTable> dtNewPays = new List<DataTable>();
if (dtPays != null && dtPays.Count > 0)
{
foreach (DataTable item in dtPays)
{
DataRow newRow = item.NewRow();
int orderPaiNum=0
,Lnum=0
,Tnum=0
,duiZhiNum=0
,rong=0;
decimal LAh = 0
, TAh = 0; //newRow["gongDuan"] = item.Rows[0]["gongDuan"].ToString()+"合计"; orderPaiNum = Convert.ToInt32(item.Compute("sum(orderPaiNum)", "true") is DBNull ? 0 : item.Compute("sum(orderPaiNum)", "true"));
newRow["orderPaiNum"] = orderPaiNum; Lnum = Convert.ToInt32(item.Compute("sum(Lnum)", "true") is DBNull ? 0 : item.Compute("sum(Lnum)", "true"));
newRow["Lnum"] = Lnum; Tnum = Convert.ToInt32(item.Compute("sum(Tnum)", "true") is DBNull ? 0 : item.Compute("sum(Tnum)", "true"));
newRow["Tnum"] = Tnum; duiZhiNum = Convert.ToInt32(item.Compute("sum(duiZhiNum)", "true") is DBNull ? 0 : item.Compute("sum(duiZhiNum)", "true"));
//if (newRow["gongDuan"].ToString()=="制片合计")
// newRow["duiZhiNum"] = Convert.ToInt32(duiZhiNum/2);
//else
newRow["duiZhiNum"] =duiZhiNum; rong = Convert.ToInt32(item.Compute("sum(rong)", "true") is DBNull ? 0 : item.Compute("sum(rong)", "true"));
newRow["rong"] = rong; LAh = Convert.ToDecimal(item.Compute("sum(LAh)", "true") is DBNull ? 0 : item.Compute("sum(LAh)", "true"));
newRow["LAh"] = LAh; TAh = Convert.ToDecimal(item.Compute("sum(TAh)", "true") is DBNull ? 0 : item.Compute("sum(TAh)", "true"));
newRow["TAh"] = TAh; item.Rows.Add(newRow); //新增列(该列隐藏)
//item.Columns.Add(new DataColumn("duiZhiNum1", typeof(Int32)));
//foreach (DataRow row in item.Rows)
//{
// //制片堆积个数除以2
// if (row["gongDuan"].ToString() == "制片")
// row["duiZhiNum1"] = Convert.ToDouble(row["duiZhiNum"]) / 2;
// else
// row["duiZhiNum1"] = row["duiZhiNum"];
//} //清除0
DataTable dtWithOutZrro = ClearZero(item); dtNewPays.Add(dtWithOutZrro);
//foreach (DataRow row in item.Rows)
//{
// oderPaiNum += Convert.ToInt32(row["oderPaiNum"].ToString() == "" ? "0" : row["oderPaiNum"].ToString());
// Lnum += Convert.ToInt32(row["Lnum"].ToString() == "" ? "0" : row["Lnum"].ToString());
// Tnum += Convert.ToInt32(row["Tnum"].ToString() == "" ? "0" : row["Tnum"].ToString());
// duiZhiNum += Convert.ToInt32(row["duiZhiNum"].ToString() == "" ? "0" : row["duiZhiNum"].ToString());
// rong += Convert.ToInt32(row["rong"].ToString() == "" ? "0" : row["rong"].ToString()); // LAh += Convert.ToDecimal(row["LAh"].ToString() == "" ? "0" : row["LAh"].ToString());
// TAh+=Convert.ToDecimal(row["TAh"].ToString() == "" ? "0" : row["TAh"].ToString())
//}
}
}
#endregion
if (dtNewPays != null && dtNewPays.Count > 0)
{
for (int i = 0; i < dtNewPays.Count; i++)
{
DataTable dt = dtNewPays[i];
if (dt.Rows.Count > 0)
{
sheet.Cells.ImportDataTable(dt, false, "A" + (lastIndex + 1));
lastIndex += dt.Rows.Count;
}
}
}
sheet.Cells.DeleteRows(lastIndex, 2);
MemoryStream ms = workbook.SaveToStream();
ms.Seek(0, SeekOrigin.Begin);
fpSpread1.OpenExcel(ms);
ms.Close(); fpSpread1.Sheets[0].RowCount = lastIndex + 3;
fpSpread1.Sheets[0].ColumnCount = 16;
//fpSpread1.Sheets[0].Columns[13].Visible = false;
fpSpread1.Sheets[0].OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
} /// <summary>
/// 清除零值
/// </summary>
/// <returns></returns>
public DataTable ClearZero(DataTable dt)
{
DataTable result = dt.Clone();
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = result.NewRow();
for (int j = 0; j < dt.Columns.Count; j++)
{
if (dt.Rows[i][j].ToString() == "0" || dt.Rows[i][j].ToString() == "0.00%")
{
dr[j] = DBNull.Value;
}
else
{
dr[j] = dt.Rows[i][j];
}
}
result.Rows.Add(dr);
}
return result;
}

多工段查询存放到DataTable到List<DataTable>集合在C#里面做汇总的更多相关文章

  1. 从数据库得到的结果集存放到List集合中

    一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接, ...

  2. 获取项目中文件,存放到Debug中。

    说起这个,还真是费了一般功夫. 说个最简单的方法: 第一步:把需要生成到Debug中的文件放到项目中(注意:当前文件夹目录是什么样的,存放到Debug中也是什么样) 第二部:设置文件属性中 复制到输出 ...

  3. Solr(六)Solr索引数据存放到HDFS下

    Solr索引数据存放到HDFS下 一 新建solr core hdfs 方法:http://www.cnblogs.com/Matchman/p/7287385.html 二 修改solrconfig ...

  4. C#将图片存放到SQL SERVER数据库中的方法

    本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: ? 1 2 3 4 5 6 7 8 9 10 //获取当前选择的图片 this.pictu ...

  5. 乐视云监控数据存放到influxdb中

    3.9     监控.告警系统 监控报警我们分PaaS平台和业务应用两大类. PaaS平台主要聚焦在基础设施和LeEngine的各个服务组件的监控报警(比如主机CPU,内存,IO,磁盘空间,LeEng ...

  6. 【PHP】如何将SESSION数据存放到Redis中

    在php中,SESSION的数据默认是存放到文件中,这样性能不仅不高,而且不利于扩展.在搭建集群后,默认存放到文件中就不适用了.所以,我们一般将SESSION自定义,让SESSION中的数据存放到 数 ...

  7. 在DataTable中执行DataTable.Select("条件")返回DataTable;

    转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...

  8. DataTable.select() 返回 DataTable

    DataTable.select() 默认返回值为 DataRow[]数组 代码来自网络: /**/ /// <summary> /// 执行DataTable中的查询返回新的DataTa ...

  9. 在DataTable中执行DataTable.Select("条件")

     .在DataTable中执行DataTable.Select("条件")返回DataTable:  // <summary> // 执行DataTable中的查询返回 ...

随机推荐

  1. 从P1到P7——我在淘宝这7年(转)

    作者: 赵超  发布时间: 2012-02-25 14:47  阅读: 114607 次  推荐: 153   [收藏] (一) 2011-12-08 [原文链接] 今天有同事恭喜我,我才知道自己在淘 ...

  2. Java作用域

    1. java访问控制修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java支持4种不同的访问权限. 默认的,也称为 default,在同一包内可见,不使用任何修饰符. ...

  3. apache 修改连接数(转)

    1.先要修改最大连接数,必须了解Apache的MPM(Multi -Processing Modules,多道处理模块)Apache2.0中MPM分为3种(perfork.worker.event). ...

  4. Mac下MySQL的安装与配置

    之前一直用的是阿里云的服务器,在服务器上装了一个MySQL,但是今天发现到期了,而且续费时发现之前的大学生优惠不能用了,可是明明到6月份,大学生才毕业啊,shit!!!所以没办法只能在自己电脑上装一个 ...

  5. javascript 私有方法的实现

    原文地址: http://frugalcoder.us/post/2010/02/11/js-classes.aspx Classy JavaScript - Best Practices 11. F ...

  6. Hadoop Datanode 机器缺失 VD 问题修复尝试

    背景: 新集群 Datanode 使用两个 SSD 做 raid 1 作为根磁盘,12 个 SAS 单独做 raid 0 作为数据盘,在机器部署完毕后,缺发现 PD slot 4 和 slot 5 丢 ...

  7. HDU 5860 Death Sequence

    用线段树可以算出序列.然后o(1)询问. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<c ...

  8. mysqldump 数据库备份命令及脚本

    mysql -uroot -phowhy@123 -e 'show databases;' | grep -ivE 'waring|database|mysql'|sed -r "s#^(. ...

  9. mongodb部署单节点(一)

    部署包:mongodb-linux-x86_64-rhel55-3.0.2.tgz(百度云盘下载地址:http://pan.baidu.com/s/1jIQAGlw 密码:l7pf) 第一步:上传该文 ...

  10. 1.rs.first()、rs.last()、rs.next()、rs.getRow()

    rs.first()获取第一条数据的信息rs.last()获取最后一条数据的信息rs.next()获取下一条数据的信息rs.getRow()获取当前信息的行数 import java.sql.*; p ...