//读取一个工作簿的检查数据,并存进peoples的集合中 private peopleSet collectdata(string fileWay) { peopleSet ps = new peopleSet(2); //people的数据集合 openExcel(fileWay); String curPeopleID; //存储当前的检测用户 Sheets r_shs = r_wbk.Sheets; //获取excel工作簿的所有工作表 _Worksheet r_wsh = (_Worksheet)r_shs.get_Item(1); //获取第一个工作表 long i=1; //记录行的位置 if (Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column]).Text) == "") //第一行为空 i = 2; int j=ps.itemBegin_column; //数据项的起始位置 peopledata curpeople ; // 存取当前的体检人员的数据 KeyValuePair<String,String> itemset_item; long allrow = r_wsh.UsedRange.CurrentRegion.Rows.Count; this.label3.Text = "正在读取数据,请稍后……"; while(i <= allrow) { curPeopleID = Convert.ToString(((Range)r_wsh.Cells[i, ps.pID_column]).Text); if (ps.peopledic.ContainsKey(curPeopleID))//该用户ID已经记录 { itemset_item = new KeyValuePair<String,String>(Convert.ToString(((Range)r_wsh.Cells[i,ps.pItemSet_column]).Text),Convert.ToString(((Range)r_wsh.Cells[i,ps.pItem_column]).Text)); if (Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column]).Text) == "NULL") { ps.peopledic[curPeopleID].element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column + 1]).Text)); } else { ps.peopledic[curPeopleID].element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column]).Text)); } } else //该用户没记录 { curpeople = new peopledata(); //添加检查项目信息 itemset_item = new KeyValuePair<String, String>(Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemSet_column]).Text), Convert.ToString(((Range)r_wsh.Cells[i, ps.pItem_column]).Text)); curpeople.name = Convert.ToString(((Range)r_wsh.Cells[i, ps.PNname_column]).Text); curpeople.sex = Convert.ToString(((Range)r_wsh.Cells[i, ps.pSex_column]).Text); curpeople.age = Convert.ToString(((Range)r_wsh.Cells[i, ps.pAge_column]).Text); if (Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column]).Text) == "NULL") { curpeople.element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, ps.pItemData_column+1]).Text)); //增加检查项目 } else { curpeople.element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i,ps.pItemData_column]).Text)); //增加检查项目 } ps.peopledic.Add(curPeopleID, curpeople); } if(!itemDic.ContainsKey(itemset_item))//不包含这个项目 { itemDic.Add(itemset_item, j); ++j; } if (i < allrow) { SetTextMessage((int)(i * 100 / allrow)); } else { Thread.Sleep(100); SetTextMessage(0); } ++i; } app.AlertBeforeOverwriting = false; // 屏蔽系统的alert r_wbk.Close(); return ps; }
//读取一个工作簿的检查数据,并存进peoples的集合中 private void collectdata() { openExcel(txtboxPath.Text); //createExcel(); //Sheets shs = w_wbk.Sheets; //_Worksheet _wsh = (_Worksheet)shs.get_Item(1); //_wsh.Name = "汇总"; //_wsh.Cells[2, 2] = "测试"; //CloseExcel(w_wbk); String curPeopleID; //存储当前的检测用户 String prePeopleID; //存储前一个用户 Sheets r_shs = r_wbk.Sheets; //获取excel工作簿的所有工作表 _Worksheet r_wsh = (_Worksheet)r_shs.get_Item(1); //获取第一个工作表 long i=1; //记录行的位置 int j=itemBegin_column; //数据项的起始位置 curPeopleID =Convert.ToString(((Range) r_wsh.Cells[1, pID_column]).Text); prePeopleID = ""; peopledata curpeople = new peopledata(); // 存取当前的体检人员的数据 KeyValuePair<String,String> itemset_item; int oldrowindex; //存在旧的index long allrow = r_wsh.UsedRange.CurrentRegion.Rows.Count; //while(i !=r_wsh.UsedRange.Cells.Rows.Count) // 没读到行结束 //((Range)r_wsh.Cells[i,pID_column]).Text.ToString() !="" this.label3.Text = "正在读取数据,请稍后……"; while(i <= allrow) { if (curPeopleID == prePeopleID)//用户id没改变 { itemset_item = new KeyValuePair<String,String>(Convert.ToString(((Range)r_wsh.Cells[i,pItemSet_column]).Text),Convert.ToString(((Range)r_wsh.Cells[i,pItem_column]).Text)); // this.label2.Text = i.ToString(); curpeople.element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, pItemData_column]).Text)); //增加检查项目 if (i == allrow) { peoples.Add(curpeople); } } else //当前用户不同与上一行的用户id { //新用户添加基础信息 oldrowindex = peoplesId.IndexOf(curPeopleID); if (oldrowindex != -1)//已经记录过此用户 { itemset_item = new KeyValuePair<String, String>(Convert.ToString(((Range)r_wsh.Cells[i, pItemSet_column]).Text), Convert.ToString(((Range)r_wsh.Cells[i, pItem_column]).Text)); peoples[oldrowindex].element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, pItemData_column]).Text)); //增加检查项目 oldrowindex = peoplesId.IndexOf(prePeopleID); if (oldrowindex == -1) { peoplesId.Add(prePeopleID); peoples.Add(curpeople); } } else { // peoplesId.Add(curPeopleID); if (prePeopleID != "")//不是第一个用户 { oldrowindex = peoplesId.IndexOf(prePeopleID); if (oldrowindex == -1) { peoplesId.Add(prePeopleID); peoples.Add(curpeople); } curpeople = new peopledata(); } //添加检查项目信息 itemset_item = new KeyValuePair<String, String>(Convert.ToString(((Range)r_wsh.Cells[i, pItemSet_column]).Text), Convert.ToString(((Range)r_wsh.Cells[i, pItem_column]).Text)); curpeople.Id = curPeopleID; curpeople.name = Convert.ToString(((Range)r_wsh.Cells[i, PNname_column]).Text); curpeople.sex = Convert.ToString(((Range)r_wsh.Cells[i, pSex_column]).Text); curpeople.age = Convert.ToString(((Range)r_wsh.Cells[i, pAge_column]).Text); curpeople.element.Add(itemset_item, Convert.ToString(((Range)r_wsh.Cells[i, pItemData_column]).Text)); //增加检查项目 if (i == allrow) { peoples.Add(curpeople); } } } if(!itemDic.ContainsKey(itemset_item))//不包含这个项目 { itemDic.Add(itemset_item, j); ++j; } if (i < allrow) { SetTextMessage((int)(i * 100 / allrow)); } else { Thread.Sleep(100); SetTextMessage(0); } ++i; if (i <= allrow) { prePeopleID = curPeopleID; curPeopleID = Convert.ToString(((Range)r_wsh.Cells[i, pID_column]).Text); } } app.AlertBeforeOverwriting = false; // 屏蔽系统的alert r_wbk.Close(); }
//重写Equals,用id来判定数据是否重复 public bool Equals(peopledata other) { return base.Equals(other.Id); }