/// <summary> /// 记录导出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AlarmMsgOutBtn_Click(object sender, EventArgs e) { if (WarmListView.Items.Count <= 0) { MessageBox.Show("請先搜索出需要的警報信息!"); return; } SaveFileDialog MyDialog = new SaveFileDialog(); MyDialog.Title = "選擇警報文件保存位置"; if (txtRB.Checked) { MyDialog.Filter = "所有文本文件|*.txt"; } else if (xlsRB.Checked) { MyDialog.Filter = "所有文本文件|*.xls"; } if (MyDialog.ShowDialog() != DialogResult.OK) { return; } string StrFilePath = MyDialog.FileName; if (txtRB.Checked) { if (!FileOperation.CreateDirFile(StrFilePath)) { return; } FileOperation.ClearFileContent(StrFilePath); foreach (string str in WarmListView.Items) { FileOperation.WriteDataFile(StrFilePath, str + "\r\n"); } } else if (xlsRB.Checked) { //导入为xls格式 NpoiLib MyNpoiLib = new NpoiLib("AlarmMessage"); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 0, "警報類型"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 0, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 1, "卡片信息"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 1, 6000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 2, "參考點信息"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 2, 8000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 3, "區域信息"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 3, 8000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 4, "當前電量"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 4, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 5, "休眠時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 5, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 6, "人員未移動時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 6, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 7, "參考點上報間隔時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 7, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 8, "數據節點上報間隔時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 8, 3000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 9, "警報產生時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 9, 5000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 10, "警報消除時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 10, 5000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 11, "是否處理"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 11, 2000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 12, "是否清除"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 12, 2000); if (null == CommonCollection.LogWarms) { MessageBox.Show("對不起,導出文件失敗!"); return; } DateTime SDTP = StartDTPicker.Value; DateTime EDTP = EndDTPicker.Value; int syear, smonth, sday, shour, sminute, eyear, emonth, eday, ehour, eminute; syear = SDTP.Year; smonth = SDTP.Month; sday = SDTP.Day; eyear = EDTP.Year; emonth = EDTP.Month; eday = EDTP.Day; string StrSHour = sHourCb.Text; string StrSMinute = sMinitueCb.Text; string StrEHour = eHourCB.Text; string StrEMinute = eMinitueCB.Text; try { shour = Convert.ToInt32(StrSHour); sminute = Convert.ToInt32(StrSMinute); ehour = Convert.ToInt32(StrEHour); eminute = Convert.ToInt32(StrEMinute); } catch (Exception) { MessageBox.Show("開始時間與結束時間的小時與分針格式有誤!"); return; } DateTime SDT, EDT; try { SDT = new DateTime(syear, smonth, sday, shour, sminute, 0); EDT = new DateTime(eyear, emonth, eday, ehour, eminute, 59); } catch (Exception) { MessageBox.Show("開始時間或結束時間格式有誤!"); return; } int index = 1; foreach (WarmInfo wm in CommonCollection.LogWarms) { if (null == wm) { continue; } if (DateTime.Compare(SDT, wm.AlarmTime) > 0) { continue; } if (DateTime.Compare(EDT, wm.AlarmTime) < 0) { continue; } //参考点信息 string StrRouterInfo = wm.RD[0].ToString("X2") + wm.RD[1].ToString("X2"); string StrRouterName = wm.RDName; if (null != StrRouterName && !"".Equals(StrRouterName)) { StrRouterInfo = StrRouterName + "(" + StrRouterInfo + ")"; } //區域信息 string StrAreaInfo = wm.AD[0].ToString("X2") + wm.AD[1].ToString("X2"); string StrAreaName = wm.AreaName; if (null != StrAreaName && !"".Equals(StrAreaName)) { StrAreaInfo = StrAreaName + "(" + StrAreaInfo + ")"; } string StrClassName = wm.GetType().Name; string StrWarmType = ""; switch (CurWarmType) { case SpeceilAlarm.BatteryLow: if ("BattLow".Equals(StrClassName)) { StrWarmType = "低電量警報"; string StrTagInfo = ((BattLow)wm).TD[0].ToString("X2") + ((BattLow)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((BattLow)wm).TagName && !"".Equals(((BattLow)wm).TagName)) { StrTagInfo = ((BattLow)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 4, ((BattLow)wm).Batt + "(" + ((BattLow)wm).BasicBatt + ") %"); break; } else { continue; } case SpeceilAlarm.PersonHelp: if ("PersonHelp".Equals(StrClassName)) { StrWarmType = "人員求救警報"; string StrTagInfo = ((PersonHelp)wm).TD[0].ToString("X2") + ((PersonHelp)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((PersonHelp)wm).TagName && !"".Equals(((PersonHelp)wm).TagName)) { StrTagInfo = ((PersonHelp)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); break; } else { continue; } case SpeceilAlarm.AreaControl: if ("AreaAdmin".Equals(StrClassName)) { StrWarmType = "區域管制警報"; string StrTagInfo = ((AreaAdmin)wm).TD[0].ToString("X2") + ((AreaAdmin)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((AreaAdmin)wm).TagName && !"".Equals(((AreaAdmin)wm).TagName)) { StrTagInfo = ((AreaAdmin)wm).TagName + "(" + StrTagInfo + ")"; } //ExcelOperation.SaveData(index, 2, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); //string StrAreaType = ""; /* switch (((AreaAdmin)wm).AreaType) * { * case AreaType.SimpleArea: * StrAreaType = "一般區域"; * break; * case AreaType.ControlArea: * StrAreaType = "管制區域"; * break; * case AreaType.DangerArea: * StrAreaType = "危險區域"; * break; * }*/ string StrTagType = ""; if (null != ((AreaAdmin)wm).TagAreaSt) { StrTagType = StrTagType + ((AreaAdmin)wm).TagAreaSt.GetAreasStr(); } break; } else { continue; } case SpeceilAlarm.Resid: if ("PersonRes".Equals(StrClassName)) { StrWarmType = "人員未移動警報"; string StrTagInfo = ((PersonRes)wm).TD[0].ToString("X2") + ((PersonRes)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((PersonRes)wm).TagName && !"".Equals(((PersonRes)wm).TagName)) { StrTagInfo = ((PersonRes)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 6, ((PersonRes)wm).ResTime + "(" + ((PersonRes)wm).BasicResTime + ") s"); break; } else { continue; } case SpeceilAlarm.TagDis: if ("TagDis".Equals(StrClassName)) { StrWarmType = "卡片異常警報"; string StrTagInfo = ((TagDis)wm).TD[0].ToString("X2") + ((TagDis)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((TagDis)wm).TagName && !"".Equals(((TagDis)wm).TagName)) { StrTagInfo = ((TagDis)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 5, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 5, ((TagDis)wm).SleepTime + " s"); break; } else { continue; } case SpeceilAlarm.ReferDis: if ("ReferDis".Equals(StrClassName)) { StrWarmType = "參考點異常警報"; MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 7, ((ReferDis)wm).SleepTime + " s"); break; } else { continue; } case SpeceilAlarm.NodeDis: if ("NodeDis".Equals(StrClassName)) { StrWarmType = "數據節點警報"; MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 8, ((NodeDis)wm).SleepTime + " s"); break; } else { continue; } default: StrWarmType = "未知警報類型"; if ("BattLow".Equals(StrClassName)) { StrWarmType = "低電量警報"; string StrTagInfo = ((BattLow)wm).TD[0].ToString("X2") + ((BattLow)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((BattLow)wm).TagName && !"".Equals(((BattLow)wm).TagName)) { StrTagInfo = ((BattLow)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 4, ((BattLow)wm).Batt + "(" + ((BattLow)wm).BasicBatt + ") %"); } else if ("PersonHelp".Equals(StrClassName)) { StrWarmType = "人員求救警報"; string StrTagInfo = ((PersonHelp)wm).TD[0].ToString("X2") + ((PersonHelp)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((PersonHelp)wm).TagName && !"".Equals(((PersonHelp)wm).TagName)) { StrTagInfo = ((PersonHelp)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); } else if ("AreaAdmin".Equals(StrClassName)) { StrWarmType = "區域管制警報"; //string StrAreaType = ""; string StrTagInfo = ((AreaAdmin)wm).TD[0].ToString("X2") + ((AreaAdmin)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((AreaAdmin)wm).TagName && !"".Equals(((AreaAdmin)wm).TagName)) { StrTagInfo = ((AreaAdmin)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); /* switch (((AreaAdmin)wm).AreaType) * { * case AreaType.SimpleArea: * StrAreaType = "一般區域"; * break; * case AreaType.ControlArea: * StrAreaType = "管制區域"; * break; * case AreaType.DangerArea: * StrAreaType = "危險區域"; * break; * }*/ string StrTagType = ""; if (null != ((AreaAdmin)wm).TagAreaSt) { StrTagType = StrTagType + ((AreaAdmin)wm).TagAreaSt.GetAreasStr(); } } else if ("PersonRes".Equals(StrClassName)) { StrWarmType = "人員未移動警報"; string StrTagInfo = ((PersonRes)wm).TD[0].ToString("X2") + ((PersonRes)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((PersonRes)wm).TagName && !"".Equals(((PersonRes)wm).TagName)) { StrTagInfo = ((PersonRes)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 6, ((PersonRes)wm).ResTime + "(" + ((PersonRes)wm).BasicResTime + ") s"); } else if ("TagDis".Equals(StrClassName)) { StrWarmType = "卡片異常警報"; string StrTagInfo = ((TagDis)wm).TD[0].ToString("X2") + ((TagDis)wm).TD[1].ToString("X2"); //卡片信息 if (null != ((TagDis)wm).TagName && !"".Equals(((TagDis)wm).TagName)) { StrTagInfo = ((TagDis)wm).TagName + "(" + StrTagInfo + ")"; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 1, StrTagInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 5, ((TagDis)wm).SleepTime + " s"); } else if ("ReferDis".Equals(StrClassName)) { StrWarmType = "參考點異常警報"; MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 7, ((ReferDis)wm).SleepTime + " s"); } else if ("NodeDis".Equals(StrClassName)) { StrWarmType = "數據節點警報"; MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 8, ((NodeDis)wm).SleepTime + " s"); } break; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 2, StrRouterInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 3, StrAreaInfo); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 9, wm.AlarmTime.ToString()); if (DateTime.Compare(wm.AlarmTime, wm.ClearAlarmTime) != 0) { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 10, wm.ClearAlarmTime.ToString()); } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 11, wm.isHandler.ToString()); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 12, wm.isClear.ToString()); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, index, 0, StrWarmType); index++; } MyNpoiLib.WriteToFile(StrFilePath); MessageBox.Show("導出文件成功!"); } }
/// <summary> /// Excel导出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void excelbtn_Click(object sender, EventArgs e) { //开始选择出入讯息 DateTime dt = startdtpicker.Value; DateTime Startdt = new DateTime(dt.Year, dt.Month, dt.Day); dt = enddtpicker.Value; DateTime Enddt = new DateTime(dt.Year, dt.Month, dt.Day); List <AccessRecord> lists = new List <AccessRecord>(); string strid = "", strname = "", strinname = "", stroutname = ""; strid = tagtb.Text; if (!"".Equals(strid)) { strname = CommonBoxOperation.GetTagName(strid); if (null == strname) {//说明strid可能是名称 Tag tg = CommonBoxOperation.GetTagFromName(strid); if (null != tg) { strid = tg.ID[0].ToString("X2") + tg.ID[1].ToString("X2"); } } } TagAccessRecordOperation.tagAccessOper.GetAccessRecord(strid, Startdt, Enddt, ref lists); if (lists.Count <= 0) { MessageBox.Show("對不起,記錄不存在!"); return; } SaveFileDialog MyDialog = new SaveFileDialog(); MyDialog.Title = "選擇出入統計文件保存位置"; MyDialog.Filter = "所有文本文件|*.xls"; if (MyDialog.ShowDialog() != DialogResult.OK) { return; } string StrFilePath = MyDialog.FileName; NpoiLib MyNpoiLib = new NpoiLib("Access statistics"); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 0, "Tag ID"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 0, 6000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 1, "卡片名稱"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 1, 6000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 2, "入口基站"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 2, 6000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 3, "出口基站"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 3, 6000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 4, "進入時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 4, 8000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 5, "外出時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 5, 8000); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, 0, 6, "間隔時間"); MyNpoiLib.SetColumnWidth(MyNpoiLib.sheet1, 6, 2000); int index = -1, row = 0; foreach (AccessRecord record in lists) { index++; if (record.isMark) { continue; } strid = record.TagID[0].ToString("X2") + record.TagID[1].ToString("X2"); strname = CommonBoxOperation.GetTagName(strid); AccessRecord access = null; if (record.rttype == ReferType.Entrance) {//说明当前是一个入口参考点,我们接下来需要找出口 strinname = CommonBoxOperation.GetRouterName(record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2")); access = SelectAccessRecord(lists.GetRange(index + 1, lists.Count - index - 1), record.TagID, ReferType.Export); if (null == access) { continue; } stroutname = CommonBoxOperation.GetRouterName(access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2")); access.isMark = true; } else { continue; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 0, strid); if (null == strname || "".Equals(strname)) { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, "****"); } else { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, strname); } if (null == strinname || "".Equals(strinname)) { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 2, record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2")); } else { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 2, strinname + "(" + record.RouterID[0].ToString("X2") + record.RouterID[1].ToString("X2") + ")"); } if (null == stroutname || "".Equals(stroutname)) { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 3, access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2")); } else { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 3, stroutname + "(" + access.RouterID[0].ToString("X2") + access.RouterID[1].ToString("X2") + ")"); } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 4, record.Occtime.ToString()); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 5, access.Occtime.ToString()); if (DateTime.Compare(record.Occtime, access.Occtime) > 0) { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 6, "****"); } else { MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 6, String.Format("{0:N2} h", (access.Occtime - record.Occtime).TotalHours)); } row++; } if (row <= 0) { MessageBox.Show("對不起,當前沒有記錄!"); return; } MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 0, "###當前記錄總數為:"); MyNpoiLib.writeToCell(MyNpoiLib.sheet1, row + 1, 1, row.ToString() + " 條"); MyNpoiLib.WriteToFile(StrFilePath); MessageBox.Show("導出文件成功!"); }