示例#1
0
        /// <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("導出文件成功!");
            }
        }
示例#2
0
        /// <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("導出文件成功!");
        }