private void btnExport_Click(object sender, EventArgs e) { saveFileDia.Title = @"请选择文件的保存位置"; saveFileDia.Filter = "Excel 97-2003 工作簿|*.xls";//Excel 工作簿|*.xlsx| try { string sheetName = StationId; string columnName = DataEnum2Titles.ToTitles(DataName); saveFileDia.FileName = $@"{StationId}雷达{columnName}电源数据"; if (saveFileDia.ShowDialog() == DialogResult.OK) { Export2Excel.ExportToExcel(_powerData, columnName, sheetName, saveFileDia.FileName); MessageBox.Show($@"保存Excel文件{saveFileDia.FileName}成功!", @"提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"实时数据查询窗口导出数据Excel过程出错", exception); MessageBox.Show(@"保存Excel文件过程出错," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void btnQuery_Click(object sender, EventArgs e) { Thread drawDataLineProThread = new Thread((ThreadStart) delegate { try { _synchContext.Post(a => { gbControl.Enabled = false; stationchkListBox.Enabled = false; powerchkListBox.Enabled = false; circularProgress.IsRunning = true; circularProgress.Visible = true; }, null); _powerDataDics.Clear(); _sheetNameList.Clear(); List <string> stationsList = new List <string>(); for (int i = 1; i < stationchkListBox.Items.Count; i++) { if (stationchkListBox.GetItemChecked(i)) { stationsList.Add(stationchkListBox.GetItemText(stationchkListBox.Items[i])); } } string conn = $"Data Source={_para.SqlServerPara.SqlIp};Initial Catalog={_para.SqlServerPara.SqlDb};User ID={_para.SqlServerPara.SqlUser};Password={_para.SqlServerPara.SqlPwd};"; DateTime sdt = dtpStartTime.Value; DateTime edt = dtpEndTime.Value; RadarDataClassesDataContext radarDataClasses = new RadarDataClassesDataContext(conn); List <string> powerList = new List <string>(); for (int i = 1; i < powerchkListBox.Items.Count; i++) { if (powerchkListBox.GetItemChecked(i)) { powerList.Add(powerchkListBox.GetItemText(powerchkListBox.Items[i])); } } for (int i = 0; i < powerList.Count; i++) { powerList[i] = DataEnum2Titles.ToProperties(powerList[i]); } _synchContext.Post(a => { chartVolCur.Titles.Clear(); chartVolCur.Titles.Add("电源数据曲线图"); chartVolCur.Titles.Add( $"({sdt.ToString(CultureInfo.InvariantCulture)}——{edt.ToString(CultureInfo.InvariantCulture)})"); chartVolCur.ChartAreas.Clear(); chartVolCur.Series.Clear(); chartVolCur.Legends.Clear(); ChartArea ca = new ChartArea("Default"); chartVolCur.ChartAreas.Add(ca); chartVolCur.ChartAreas[0].AxisX.IsMarginVisible = true; chartVolCur.ChartAreas[0].AxisX.Interval = 1; chartVolCur.ChartAreas[0].AxisX.MajorGrid.Interval = 1; //chartVolCur.Legends["Legend2"].DockedToChartArea = "Default"; foreach (var stationid in stationsList) { Dictionary <string, List <string> > powerDataDic = new Dictionary <string, List <string> >(); List <string> columnName = new List <string>(); chartVolCur.Legends.Add(new Legend(stationid) { Title = stationid, Docking = Docking.Bottom }); foreach (var powerName in powerList) { //chartVolCur.Legends["Legend2"].CellColumns.Add(new LegendCellColumn("Name", LegendCellColumnType.Text, stationid)); // Assign the legend to Series1. Series s = new Series(stationid + "_" + powerName) { MarkerSize = 10, MarkerStyle = MarkerStyle.Star10, ChartType = SeriesChartType.Line, IsValueShownAsLabel = true, BorderWidth = 3, ShadowOffset = 1, Legend = stationid, LegendText = DataEnum2Titles.ToTitles(powerName), IsVisibleInLegend = true, Font = new Font("Microsoft Sans Serif", 8F, FontStyle.Bold), }; var allpowerdata = (from vol in radarDataClasses.PowerDataTable where stationsList.Contains(vol.StationID) && vol.DateTime >= sdt && vol.DateTime <= edt orderby vol.DateTime ascending select vol).ToList(); for (int i = 0; i <= (edt - sdt).TotalMinutes; i++) { DateTime dt = sdt.AddMinutes(i); List <string> powerdata = new List <string>(); if (!powerDataDic.ContainsKey(dt.ToString(CultureInfo.InvariantCulture))) { powerDataDic.Add(dt.ToString(CultureInfo.InvariantCulture), powerdata); } var pd = (from v in allpowerdata where v.DateTime == dt && v.StationID == stationid select v).Distinct().ToList(); if (pd.Count > 0) { object obj = (typeof(PowerDataTable)).GetProperty(powerName).GetValue(pd[0], null); s.Points.AddXY(dt.ToString("HH:mm"), obj); powerDataDic[dt.ToString(CultureInfo.InvariantCulture)].Add(obj.ToString()); } else { s.Points.AddXY(dt.ToString("HH:mm"), DBNull.Value); powerDataDic[dt.ToString(CultureInfo.InvariantCulture)].Add(string.Empty); } } chartVolCur.Series.Add(s); columnName.Add(DataEnum2Titles.ToTitles(powerName)); } _powerDataDics.Add(stationid, powerDataDic); _sheetNameList.Add(stationid, columnName); } }, null); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"数据查询并绘制曲线过程出错", exception); _synchContext.Post(a => MessageBox.Show(this, @"绘制复杂曲线过程错误," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error) , null); } finally { _synchContext.Post(a => { gbControl.Enabled = true; stationchkListBox.Enabled = true; powerchkListBox.Enabled = true; circularProgress.IsRunning = false; circularProgress.Visible = false; }, null); } }) { IsBackground = true }; drawDataLineProThread.Start(); }
private void DrawNowDataLine() { Thread drawDataLineThread = new Thread((ThreadStart) delegate { try { _synchContext.Post(a => { gbControl.Enabled = false; circularProgress.IsRunning = true; circularProgress.Visible = true; }, null); _powerData.Clear(); DateTime sdt = dtpStartTime.Value; DateTime edt = dtpEndTime.Value; RadarDataClassesDataContext radarDataClasses = new RadarDataClassesDataContext(ConnectionString); _synchContext.Post(a => { chartVolCur.Titles.Clear(); chartVolCur.Titles.Add(DataEnum2Titles.ToTitles(DataName)); chartVolCur.Titles.Add( $"({sdt.ToString(CultureInfo.InvariantCulture)}——{edt.ToString(CultureInfo.InvariantCulture)})"); chartVolCur.ChartAreas.Clear(); chartVolCur.Series.Clear(); ChartArea ca = new ChartArea("CA1"); chartVolCur.ChartAreas.Add(ca); Series s = new Series("S1") { ChartType = SeriesChartType.Line, IsValueShownAsLabel = true, BorderWidth = 3, ShadowOffset = 1 }; chartVolCur.ChartAreas[0].AxisX.IsMarginVisible = true; chartVolCur.ChartAreas[0].AxisX.Interval = 1; chartVolCur.ChartAreas[0].AxisX.MajorGrid.Interval = 1; try { var powerdata = (from p in radarDataClasses.PowerDataTable where p.StationID == StationId && p.DateTime >= sdt && p.DateTime <= edt orderby p.DateTime ascending select p).ToList(); for (int i = 0; i <= (edt - sdt).TotalMinutes; i++) { DateTime dt = sdt.AddMinutes(i); var pd = (from v in powerdata where v.DateTime == dt select v).Distinct().ToList(); if (pd.Count > 0) { object obj = typeof(PowerDataTable).GetProperty(DataName).GetValue(pd[0], null); s.Points.AddXY(dt.ToString("HH:mm"), obj); _powerData.Add(dt.ToString(CultureInfo.InvariantCulture), obj.ToString()); } else { s.Points.AddXY(dt.ToString("HH:mm"), DBNull.Value); _powerData.Add(dt.ToString(CultureInfo.InvariantCulture), string.Empty); } } chartVolCur.Series.Add(s); } catch (Exception) { throw; } }, null); } catch (Exception exception) { CommonLogHelper.GetInstance("LogError").Error(@"实时数据查询并绘制曲线过程出错", exception); _synchContext.Post(a => MessageBox.Show(this, @"绘制当前曲线过程错误," + exception.Message, @"错误", MessageBoxButtons.OK, MessageBoxIcon.Error) , null); } finally { _synchContext.Post(a => { gbControl.Enabled = true; circularProgress.IsRunning = false; circularProgress.Visible = false; }, null); } }) { IsBackground = true }; drawDataLineThread.Start(); }