多工段查询存放到DataTable到List<DataTable>集合在C#里面做汇总
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#里面做汇总的更多相关文章
- 从数据库得到的结果集存放到List集合中
一.业务阐述 在开发中查询的数据库结果集,既要连接数据库.执行数据库操作.关闭数据库,还要把结果集的记录人为的设置到自己封装的DAO中等一系列的重复代码. 本文主要是想解决:用户只需要得到数据库连接, ...
- 获取项目中文件,存放到Debug中。
说起这个,还真是费了一般功夫. 说个最简单的方法: 第一步:把需要生成到Debug中的文件放到项目中(注意:当前文件夹目录是什么样的,存放到Debug中也是什么样) 第二部:设置文件属性中 复制到输出 ...
- Solr(六)Solr索引数据存放到HDFS下
Solr索引数据存放到HDFS下 一 新建solr core hdfs 方法:http://www.cnblogs.com/Matchman/p/7287385.html 二 修改solrconfig ...
- C#将图片存放到SQL SERVER数据库中的方法
本文实例讲述了C#将图片存放到SQL SERVER数据库中的方法.分享给大家供大家参考.具体如下: 第一步: ? 1 2 3 4 5 6 7 8 9 10 //获取当前选择的图片 this.pictu ...
- 乐视云监控数据存放到influxdb中
3.9 监控.告警系统 监控报警我们分PaaS平台和业务应用两大类. PaaS平台主要聚焦在基础设施和LeEngine的各个服务组件的监控报警(比如主机CPU,内存,IO,磁盘空间,LeEng ...
- 【PHP】如何将SESSION数据存放到Redis中
在php中,SESSION的数据默认是存放到文件中,这样性能不仅不高,而且不利于扩展.在搭建集群后,默认存放到文件中就不适用了.所以,我们一般将SESSION自定义,让SESSION中的数据存放到 数 ...
- 在DataTable中执行DataTable.Select("条件")返回DataTable;
转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...
- DataTable.select() 返回 DataTable
DataTable.select() 默认返回值为 DataRow[]数组 代码来自网络: /**/ /// <summary> /// 执行DataTable中的查询返回新的DataTa ...
- 在DataTable中执行DataTable.Select("条件")
.在DataTable中执行DataTable.Select("条件")返回DataTable: // <summary> // 执行DataTable中的查询返回 ...
随机推荐
- MFC 刷新失效的Picture控件
问题描述:如在摄像头显示时,关闭摄像头,此时Picture控件仍然显示最后一帧图像,需要刷新掉,还原Picture控件.或者重复显示两张不同大小的图片时,第二张背景有第一张图片残留. 解决方法1:(最 ...
- Maven手动增加依赖jar到本地Maven仓库中
Apache Maven是一个项目管理及自动构建工具,有APache软件基金会提供.我们只要配置成功后就可以通过配置pom.xml添加所需依赖的jar包和类库,因为这些类库已经在我们配置的Maven仓 ...
- php,cgi,nginx关系
nginx是服务器 什么是服务器? 例如:IIS,Apache,Nginx......主要是提供网上浏览网页的服务,应用层使用HTTP协议. CGI,FastCGI CGI全称是"公共网关接 ...
- 二十、oracle pl/sql基础
一.pl/sql developer开发工具pl/sql developer是用于开发pl/sql块的集成开发环境(ide),它是一个独立的产品,而不是oracle的一个附带品. 二.pl/sql介绍 ...
- ajaxUploadFile在IE9等IE浏览器,上传变json下载的问题解决(SpringMVC + ajaxUploadFile)
使用ajaxUploadFIle进行文件上传,在google中正常,但是IE中却变成了json文件下载.经过搜索和尝试,解决方案如下: 首先明确,该功能使用$.ajaxFileUpload而非ajax ...
- Oracle数据库初探
一.安装oracle数据库 步骤:转载一个很不错的文档:http://www.linuxidc.com/Linux/2015-02/113222.htm 注意点:安装的时候会check相关依赖,有些可 ...
- 第七十四节,css边框与背景
css边框与背景 学习要点: 1.声明边框 2.边框样式 3.圆角边框 本章主要探讨HTML5中CSS边框和背景,通过边框和背景的样式设置,给元素增加更丰富的外观. 声明边框 边框的声明有三个属性设 ...
- 整体认识flume:Flume介绍、分布式安装、常见问题及解决方案
问题导读 1.什么是flume? 2.flume包含哪些组件? 3.Flume在读取utf-8格式的文件时会出现解析不了时间戳,该如何解决? Flume是一个分布式.可靠.和高可用的海量日志采集.聚合 ...
- C语言:全局变量在多个c文件中公用的方法 [转]
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...
- dplyr 数据操作 数据过滤 (filter)
在R的使用过程中我们几乎都绕不开Hadley Wickham 开发的几个包,前面说过的ggplot2.reshape2以及即将要讲的dplyr 因为这几个包可以非常轻易的使我们从复杂的数据操作中逃离, ...