Пример #1
0
        private void radButton3_Click(object sender, EventArgs e)
        {
            try
            {
                FileStream fs        = null;
                IWorkbook  workbook  = null;
                ISheet     sheet     = null;
                IRow       ExcelRow  = null; //行
                ICell      ExcelCell = null; //列

                //初始化一个OpenFileDialog类
                OpenFileDialog fileDialog = new OpenFileDialog();
                fileDialog.Filter = "(*.xlsx)|*.xlsx|(*.xls)|*.xls";
                //判断用户是否正确的选择了文件
                if (fileDialog.ShowDialog() == DialogResult.OK)
                {   //文件路径
                    string Path = fileDialog.FileName;
                    try
                    {
                        using (fs = System.IO.File.OpenRead(Path))
                        {
                            #region 判断版本
                            //2007版本及以上
                            if (Path.IndexOf(".xlsx") > 0)
                            {
                                workbook = new XSSFWorkbook(fs);
                            }
                            //2003版本
                            else if (Path.IndexOf(".xls") > 0)
                            {
                                workbook = new HSSFWorkbook(fs);
                            }
                            #endregion

                            int i         = 1;
                            int NodataFlg = 0; //跳出循环的Flag
                            if (workbook != null)
                            {                  //读取第一个sheet,当然也可以循环读取每个sheet
                                sheet = workbook.GetSheetAt(0);

                                //遍历所有数据

                                //下拉框内容
                                //RadListDataItem selectedItem = (RadListDataItem)rddl_addTags.SelectedItem.Value;//必须取value然后转换再获取value
                                RadListDataItem selectedItem = null;
                                var             DrillId      = -1;
                                if (int.TryParse(selectedItem.Value.ToString(), out DrillId))
                                {
                                    if (DrillId != -1)
                                    {
                                        while (NodataFlg != 1)
                                        {
                                            #region 判断第i行是否为空
                                            ExcelRow = sheet.GetRow(i);     //第i行
                                            //如果为null,证明已经没有可以读取的行
                                            if (ExcelRow == null)
                                            {
                                                break;
                                            }
                                            ExcelCell = ExcelRow.GetCell(0);//读取excel第i行的第1列数据(测点)

                                            if ((ExcelCell == null) || (ExcelCell.ToString() == ""))
                                            {
                                                break;
                                            }
                                            #endregion

                                            #region 数据插入
                                            var TransferType  = sheet.GetRow(0).GetCell(1).ToString().Trim();                                                //语言
                                            var Tag           = sheet.GetRow(i).GetCell(0).ToString().Trim();                                                //基础测点值必须存在,不然导入失败
                                            var TransferName  = sheet.GetRow(i).GetCell(1) == null ? "" : sheet.GetRow(i).GetCell(1).ToString().Trim();      //装翻译的结果
                                            var drillTag      = AlldataList.Where(o => o.Tag == Tag && o.DrillId == DrillId).FirstOrDefault();               //在DrillTag中查询当前测点是否存在
                                            var tagdictionary = TagDictionary.Where(o => o.Basic == Tag && o.TransferType == TransferType).FirstOrDefault(); //检索当前测点及语言类型是否存在
                                            //声明一堆需要插入数据的变量
                                            string        vfrom  = sheet.GetRow(i).GetCell(2) == null ? "" : sheet.GetRow(i).GetCell(2).ToString().Trim();
                                            string        vto    = sheet.GetRow(i).GetCell(3) == null ? "" : sheet.GetRow(i).GetCell(3).ToString().Trim();
                                            string        unit   = sheet.GetRow(i).GetCell(4) == null ? "" : sheet.GetRow(i).GetCell(4).ToString().Trim();
                                            string        hvalue = sheet.GetRow(i).GetCell(5) == null ? "" : sheet.GetRow(i).GetCell(5).ToString().Trim();
                                            string        lvalue = sheet.GetRow(i).GetCell(6) == null ? "" : sheet.GetRow(i).GetCell(6).ToString().Trim();
                                            string        type   = sheet.GetRow(i).GetCell(7) == null ? "" : sheet.GetRow(i).GetCell(7).ToString().Trim();
                                            string        isbool = sheet.GetRow(i).GetCell(8) == null ? "" : sheet.GetRow(i).GetCell(8).ToString().Trim();
                                            DrillTag      model  = new DrillTag();
                                            TagDictionary tagdic = new TagDictionary();
                                            if (drillTag == null)
                                            {
                                                //添加到DrillTag表
                                                model.DrillId = DrillId;
                                                if (string.IsNullOrEmpty(Tag))
                                                {
                                                    i++;
                                                    continue;
                                                }
                                                else
                                                {
                                                    model.Tag = Tag;
                                                }
                                                if (string.IsNullOrEmpty(TransferName))
                                                {
                                                    i++;
                                                    continue;
                                                }
                                                if (!string.IsNullOrEmpty(vfrom))//判断vfrom值是否为空
                                                {
                                                    model.DefaultFrom = Convert.ToDecimal(vfrom);
                                                }
                                                else
                                                {
                                                    model.DefaultFrom = 0;
                                                }
                                                if (!string.IsNullOrEmpty(vto))//判断vto值是否为空
                                                {
                                                    model.DefaultTo = Convert.ToDecimal(vto);
                                                }
                                                else
                                                {
                                                    model.DefaultTo = 1000;
                                                }
                                                if (!string.IsNullOrEmpty(unit))//判断unit是否为空
                                                {
                                                    model.Unit = unit;
                                                }
                                                if (!string.IsNullOrEmpty(hvalue))//判断hvalue是否为空
                                                {
                                                    model.HValue = Convert.ToDecimal(hvalue);
                                                }
                                                if (!string.IsNullOrEmpty(lvalue))//判断lvalue是否为空
                                                {
                                                    model.LValue = Convert.ToDecimal(lvalue);
                                                }
                                                if (!string.IsNullOrEmpty(type))//判断type是否为空
                                                {
                                                    model.Type = type;
                                                }
                                                if (!string.IsNullOrEmpty(isbool))//判断type是否为空
                                                {
                                                    model.IsBool = bool.Parse(isbool);
                                                }
                                                else
                                                {
                                                    model.IsBool = false;
                                                }
                                                model.dataMakePGM  = "Setting";
                                                model.dataMakeTime = DateTime.Now;
                                                model.dataMakeUser = AppDrill.username;
                                                model.dataUpdPGM   = "Setting";
                                                model.dataUpdTime  = DateTime.Now;
                                                model.dataUpdUser  = AppDrill.username;
                                                _db.DrillTag.Add(model);
                                                //因为这个基础测点是新增的,字典表肯定不存在,直接插入
                                                tagdic.Basic        = Tag;          //基础测点
                                                tagdic.TransferType = TransferType; //语言类型
                                                tagdic.TagShowName  = TransferName; //翻译结果
                                                tagdic.dataMakePGM  = "Setting";
                                                tagdic.dataMakeTime = DateTime.Now;
                                                tagdic.dataMakeUser = AppDrill.username;
                                                tagdic.dataUpdPGM   = "Setting";
                                                tagdic.dataUpdTime  = DateTime.Now;
                                                tagdic.dataUpdUser  = AppDrill.username;
                                                _db.TagDictionary.Add(tagdic);
                                            }
                                            else
                                            {
                                                //更新操作
                                                if (!string.IsNullOrEmpty(vfrom))//判断vfrom值是否为空
                                                {
                                                    drillTag.DefaultFrom = Convert.ToDecimal(vfrom);
                                                }
                                                if (!string.IsNullOrEmpty(vto))//判断vto值是否为空
                                                {
                                                    drillTag.DefaultTo = Convert.ToDecimal(vto);
                                                }
                                                if (!string.IsNullOrEmpty(unit))//判断unit是否为空
                                                {
                                                    drillTag.Unit = unit;
                                                }
                                                if (!string.IsNullOrEmpty(hvalue))//判断hvalue是否为空
                                                {
                                                    drillTag.HValue = Convert.ToDecimal(hvalue);
                                                }
                                                if (!string.IsNullOrEmpty(lvalue))//判断lvalue是否为空
                                                {
                                                    drillTag.LValue = Convert.ToDecimal(lvalue);
                                                }
                                                if (!string.IsNullOrEmpty(type))//判断type是否为空
                                                {
                                                    drillTag.Type = type;
                                                }
                                                drillTag.dataUpdPGM  = "Setting";
                                                drillTag.dataUpdTime = DateTime.Now;
                                                drillTag.dataUpdUser = AppDrill.username;
                                                //因为基础测点表中存在此测点,所以需要判断字典表中是否存在次测点的翻译
                                                if (tagdictionary == null)
                                                {
                                                    tagdic.Basic        = Tag;          //基础测点
                                                    tagdic.TransferType = TransferType; //语言类型
                                                    tagdic.TagShowName  = TransferName; //翻译结果
                                                    tagdic.dataMakePGM  = "Setting";
                                                    tagdic.dataMakeTime = DateTime.Now;
                                                    tagdic.dataMakeUser = AppDrill.username;
                                                    tagdic.dataUpdPGM   = "Setting";
                                                    tagdic.dataUpdTime  = DateTime.Now;
                                                    tagdic.dataUpdUser  = AppDrill.username;
                                                    _db.TagDictionary.Add(tagdic);
                                                }
                                                else
                                                {
                                                    tagdictionary.TagShowName = TransferName;//修改只用修改翻译结果就行了
                                                    tagdictionary.dataUpdPGM  = "Setting";
                                                    tagdictionary.dataUpdTime = DateTime.Now;
                                                    tagdictionary.dataUpdUser = AppDrill.username;
                                                }
                                            }
                                            #endregion
                                            i++;
                                        }
                                        try
                                        {
                                            lbl_error.Text      = AppDrill.message[6];//等待中
                                            lbl_error.ForeColor = Color.White;
                                            backgroundWorker2.WorkerSupportsCancellation = true;
                                            backgroundWorker2.RunWorkerAsync();//进行保存操作
                                        }
                                        catch (Exception)
                                        {
                                            MessageBox.Show(AppDrill.message[5]);
                                        }
                                    }
                                    else
                                    {
                                        lbl_error.Text      = list_error[2];//井号未选择
                                        lbl_error.ForeColor = Color.Red;
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                        lbl_error.Text      = list_error[1];//保存失败
                        lbl_error.ForeColor = Color.Red;
                    }
                }
            }
            catch
            {
                MessageBox.Show(AppDrill.message[5]);
            }
        }
Пример #2
0
        /// <summary>
        /// list_channel 条目点击事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void list_channel_SelectedIndexChanged(object sender, EventArgs e)
        {
            //先判值赋给上一次的index
            if (TempAlarmList.ContainsKey(current_index))
            {
                TempAlarmList[current_index].H         = string.IsNullOrEmpty(txt_HighAlarm.Text) ? 99999 : double.Parse(txt_HighAlarm.Text);
                TempAlarmList[current_index].L         = string.IsNullOrEmpty(txt_LowAlarm.Text) ? -99999 : double.Parse(txt_LowAlarm.Text);
                TempAlarmList[current_index].HIsActive = chb_H.Checked;
                TempAlarmList[current_index].LIsActive = chb_L.Checked;
                TempAlarmList[current_index].Tag       = AlarmtagList[current_index].Tag;
            }
            else if (!TempAlarmList.ContainsKey(current_index) && (lst_channel.SelectedIndex != current_index))
            {
                JsonAlarm tag = new JsonAlarm();
                tag.H         = string.IsNullOrEmpty(txt_HighAlarm.Text) ? 99999 : double.Parse(txt_HighAlarm.Text);
                tag.L         = string.IsNullOrEmpty(txt_LowAlarm.Text) ? -99999 : double.Parse(txt_LowAlarm.Text);
                tag.HIsActive = chb_H.Checked;
                tag.LIsActive = chb_L.Checked;
                tag.Tag       = AlarmtagList[current_index].Tag;
                TempAlarmList.Add(current_index, tag);
            }

            int index = lst_channel.SelectedIndex;

            this.lbl_Status.Text = "";
            txt_HighAlarm.Text   = "";
            txt_LowAlarm.Text    = "";
            lbl_Tags.Text        = "";
            lbl_TagId.Text       = "";
            lbl_DrillId.Text     = "";
            chb_H.Checked        = false;
            chb_L.Checked        = false;
            //0714修改,先从缓存判断有没有值
            if (TempAlarmList.ContainsKey(index))
            {
                txt_HighAlarm.Text = TempAlarmList[index].H.ToString();
                txt_LowAlarm.Text  = TempAlarmList[index].L.ToString();
                lbl_TagId.Text     = TempAlarmList[index].Tag;
                lbl_Tags.Text      = Transformation(TempAlarmList[index].Tag);
                lbl_DrillId.Text   = "1";
                chb_H.Checked      = TempAlarmList[index].HIsActive;
                chb_L.Checked      = TempAlarmList[index].LIsActive;
            }


            //0710修改,用JsonAlarm更新
            else if (JsonAlarmList.Count != 0)
            {
                JsonAlarm tag = JsonAlarmList.Where(o => o.Tag == AlarmtagList[lst_channel.SelectedIndex].Tag).FirstOrDefault();
                if (tag != null)
                {
                    txt_HighAlarm.Text = tag.H.ToString();
                    txt_LowAlarm.Text  = tag.L.ToString();
                    lbl_TagId.Text     = tag.Tag;
                    lbl_Tags.Text      = Transformation(tag.Tag);
                    lbl_DrillId.Text   = "1";
                    chb_H.Checked      = tag.HIsActive;
                    chb_L.Checked      = tag.LIsActive;
                }
                else
                {
                    DrillTag tag2 = AlarmtagList[lst_channel.SelectedIndex];
                    txt_HighAlarm.Text = tag2 == null ? "" : (tag2.HValue >= 99999 ? "" : tag2.HValue.ToString());
                    txt_LowAlarm.Text  = tag2 == null ? "" : (tag2.LValue <= -99999 ? "" : tag2.LValue.ToString());
                    lbl_Tags.Text      = tag2 == null ? "" : Transformation(tag2.Tag);
                    lbl_TagId.Text     = tag2 == null ? "" : tag2.Tag;
                    lbl_DrillId.Text   = tag2 == null ? "" : tag2.DrillId.ToString();
                    chb_H.Checked      = tag2.HisActive == null ? false : (bool)tag2.HisActive;
                    chb_L.Checked      = tag2.LisActive == null ? false : (bool)tag2.LisActive;
                }
            }
            else
            {
                if (AlarmtagList.Count != 0)
                {
                    DrillTag tag = AlarmtagList[lst_channel.SelectedIndex];
                    txt_HighAlarm.Text = tag == null ? "" : (tag.HValue >= 99999 ? "" : tag.HValue.ToString());
                    txt_LowAlarm.Text  = tag == null ? "" : (tag.LValue <= -99999 ? "" : tag.LValue.ToString());
                    lbl_Tags.Text      = tag == null ? "" : Transformation(tag.Tag);
                    lbl_TagId.Text     = tag == null ? "" : tag.Tag;
                    lbl_DrillId.Text   = tag == null ? "" : tag.DrillId.ToString();
                    chb_H.Checked      = tag.HisActive == null ? false : (bool)tag.HisActive;
                    chb_L.Checked      = tag.LisActive == null ? false : (bool)tag.LisActive;
                }
            }

            current_index = lst_channel.SelectedIndex;
        }