From d5a2d7e66f9c8046bd88b8269e61aac5a2a265e2 Mon Sep 17 00:00:00 2001 From: duheng <2286773002@qq.com> Date: 星期五, 28 三月 2025 10:49:55 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs | 217 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 134 insertions(+), 83 deletions(-) diff --git a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs index 2b9d445..702b6ec 100644 --- a/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs +++ b/WinFrmUI/PBS.WinFrmUI.DataAnalysis/FlowPressAnalysis.cs @@ -1,5 +1,7 @@ 锘縰sing DevExpress.Utils; using DevExpress.XtraCharts; +using DevExpress.XtraGrid.Columns; +using DevExpress.XtraGrid.Views.Grid; using System.Data; using System.IO; using Yw.WinFrmUI; @@ -23,17 +25,17 @@ if (dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) return; var datalist = new List<FlowPressChartViewModel>(); - ParseExcel(dlg.FileName, out datalist); + var datatable = new DataTable(); + ParseExcel(dlg.FileName, out datalist,out datatable); if (datalist.Any()) { - SetBindingData(datalist); + SetBindingData(datalist,datatable); } } #region Private Variable private XYDiagram _diagram; private XYDiagramDefaultPane _default_pane; - private XYDiagramPane _bottom_pane; private AxisX _axis_x_flow; private AxisY _axis_y_head; @@ -49,11 +51,16 @@ this.chartControl1.RuntimeHitTesting = true; - - + this.chartControl1.Legend.Visibility = DefaultBoolean.True; _diagram = (XYDiagram)this.chartControl1.Diagram; + _diagram.EnableAxisXScrolling = true; + _diagram.EnableAxisYScrolling = true; + _diagram.EnableAxisXZooming = true; + _diagram.EnableAxisYZooming = true; _default_pane = _diagram.DefaultPane; - _bottom_pane = (XYDiagramPane)_diagram.FindPaneByName("BottomPanel"); + + _diagram.AxisX.TimeSpanScaleOptions.MeasureUnit = TimeSpanMeasureUnit.Minute; + _diagram.AxisX.TimeSpanScaleOptions.ScaleMode = ScaleMode.Continuous; _axis_x_flow = _diagram.AxisX; _axis_y_head = _diagram.AxisY; @@ -61,20 +68,21 @@ _axis_y_eff.Alignment = AxisAlignment.Far; - _axis_x_flow.Visibility = DefaultBoolean.False; _axis_x_flow.GridLines.Visible = false; - _axis_y_head.Visibility = DefaultBoolean.False; _axis_y_head.GridLines.Visible = false; - _axis_y_eff.Visibility = DefaultBoolean.False; _axis_y_eff.GridLines.Visible = false; + + this.chartControl1.CrosshairEnabled = DefaultBoolean.True; } /// <summary> /// 璁剧疆鍥捐〃 /// </summary> - public void SetBindingData(List<FlowPressChartViewModel> vm_list) + public void SetBindingData(List<FlowPressChartViewModel> vm_list,DataTable dataTable) { + var view = gridControl1.MainView as GridView; + view.Columns.Clear(); this.chartControl1.BeginInit(); this.chartControl1.Series.Clear(); @@ -96,10 +104,15 @@ AxisYBase axis_y = null; XYDiagramPaneBase pane = null; + var colTime = new GridColumn(); + colTime.FieldName = "鏃堕棿"; + colTime.Caption = "鏃堕棿"; + colTime.Visible = true; + view.Columns.Add(colTime); foreach (var vm in vm_list) { - if (vm.Name.Contains("鍘嬪姏")) + if (!vm.Name.Contains("鍘嬪姏")) { axis_x = _axis_x_flow; axis_y = _axis_y_head; @@ -112,11 +125,26 @@ pane = _default_pane; } + var col = new GridColumn(); + col.FieldName = vm.Name; + col.Caption = vm.Name; + col.Visible = true; + view.Columns.Add(col); AddLineSeries(vm.Name, axis_x, axis_y, pane, vm.Datas); } + var min_x = vm_list.SelectMany(x => x.Datas).Min(x => TimeSpan.Parse(x.Time)); + var max_x = vm_list.SelectMany(x => x.Datas).Max(x => TimeSpan.Parse(x.Time)); + + _axis_x_flow.NumericScaleOptions.AutoGrid = false; + _axis_x_flow.WholeRange.SideMarginsValue = 0; + _axis_x_flow.VisualRange.SideMarginsValue = 0; + _axis_x_flow.WholeRange.SetMinMaxValues(min_x, max_x); + _axis_x_flow.VisualRange.SetMinMaxValues(min_x, max_x); + + gridControl1.DataSource = dataTable; this.chartControl1.EndInit(); } @@ -153,13 +181,17 @@ view.EmptyPointOptions.Color = Color.Transparent; view.Pane = pane; - var series_pt_list = pt_list.Select(x => new SeriesPoint(x.Time, x.Y)).ToArray(); + + var series_pt_list = pt_list.Select(x => new SeriesPoint(TimeSpan.Parse(x.Time), x.Y)).ToArray(); var series = new DevExpress.XtraCharts.Series(); series.Tag = id; - series.ShowInLegend = false; - series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.DateTime; + //series.ShowInLegend = false; + series.Name = id; + series.ArgumentScaleType = DevExpress.XtraCharts.ScaleType.TimeSpan; + series.TimeSpanSummaryOptions.MeasureUnit = TimeSpanMeasureUnit.Minute; series.LabelsVisibility = DevExpress.Utils.DefaultBoolean.False; - series.CrosshairEnabled = DefaultBoolean.False; + series.CrosshairEnabled = DefaultBoolean.True; + series.CrosshairLabelPattern = id + ":{V:N2}"; series.ToolTipEnabled = DefaultBoolean.False; series.SeriesPointsSorting = SortingMode.None; series.Visible = true; @@ -168,98 +200,117 @@ this.chartControl1.Series.Add(series); } - public static string ParseExcel(string fileName, out List<FlowPressChartViewModel> datalist) + public static string ParseExcel(string fileName, out List<FlowPressChartViewModel> datalist,out DataTable dataTable) { datalist = new List<FlowPressChartViewModel>(); - try + dataTable = new DataTable(); + if (!File.Exists(fileName)) + return "鏂囦欢涓嶅瓨鍦�"; + int line = 0; + + //鍒濆鍖栨枃浠� + NPOI.HSSF.UserModel.HSSFWorkbook theBook = null; + using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite)) { - if (!File.Exists(fileName)) - return "鏂囦欢涓嶅瓨鍦�"; - int line = 0; + theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file); + } - //鍒濆鍖栨枃浠� - NPOI.HSSF.UserModel.HSSFWorkbook theBook = null; - using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite)) - { - theBook = new NPOI.HSSF.UserModel.HSSFWorkbook(file); - } - - //妫�鏌ヨ〃鏍兼槸鍚︾鍚� - NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1"); + //妫�鏌ヨ〃鏍兼槸鍚︾鍚� + NPOI.SS.UserModel.ISheet sheet1 = theBook.GetSheet("Sheet1"); + if (sheet1 == null) + { + sheet1 = theBook.GetSheetAt(0); if (sheet1 == null) + return ("鏃燬heet鏁版嵁"); + } + + //鏍囬琛� + int title_line_index = 0; + + var row_title = sheet1.GetRow(title_line_index); + if (row_title == null) + { + return ("绗竴琛岀涓�鍒椾笉鑳界┖"); + } + + //寮�濮嬭鍙栫殑琛� + int start_line = title_line_index + 1; + var cell_0 = row_title.GetCell(0); + if (cell_0 == null) + { + return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢"); + } + + var totalcell = row_title.Cells.Count; + for (int i = 0; i < totalcell; i++) + { + var row_cell = row_title.GetCell(i); + + if (i > 0) { - sheet1 = theBook.GetSheetAt(0); - if (sheet1 == null) - return ("鏃燬heet鏁版嵁"); + if (row_cell != null) + { + datalist.Add(new FlowPressChartViewModel() + { + Name = row_cell.StringCellValue, + Datas = new List<TimeChartViewModel>() + }); + } + dataTable.Columns.Add(row_cell.StringCellValue, typeof(double)); } - - //鏍囬琛� - int title_line_index = 0; - - var row_title = sheet1.GetRow(title_line_index); - if (row_title == null) + else { - return ("绗竴琛岀涓�鍒椾笉鑳界┖"); - } + dataTable.Columns.Add(row_cell.StringCellValue, typeof(string)); - //寮�濮嬭鍙栫殑琛� - int start_line = title_line_index + 1; - var cell_0 = row_title.GetCell(0); - if (cell_0 == null) - { - return ("鏃犳硶璇诲彇琛ㄥご鏂囦欢"); } + } - var totalcell = row_title.Cells.Count; + NPOI.SS.UserModel.IRow row_temp = null; + NPOI.SS.UserModel.ICell cell; + + for (line = start_line; line < 10000; line++) + { + + row_temp = sheet1.GetRow(line); + if (row_temp == null) + break; + var rowData = new object[totalcell]; for (int i = 0; i < totalcell; i++) { - if (i > 0) - { - var row_cell = row_title.GetCell(i); - if (row_cell != null) - { - datalist.Add(new FlowPressChartViewModel() - { - Name = row_cell.StringCellValue, - Datas = new List<TimeChartViewModel>() - }); - } - } - } - - NPOI.SS.UserModel.IRow row_temp = null; - NPOI.SS.UserModel.ICell cell; - - for (line = start_line; line < 10000; line++) - { - - row_temp = sheet1.GetRow(line); - if (row_temp == null) - break; - - for (int i = 0; i < totalcell; i++) + try { if (i > 0) { var cell_temp = row_temp.GetCell(i); - datalist[i].Datas.Add(new TimeChartViewModel() + double yvalue = cell_temp.NumericCellValue; + var timevalue = row_temp.GetCell(0).NumericCellValue; + //double.TryParse(cell_temp.StringCellValue,out yvalue); + datalist[i - 1].Datas.Add(new TimeChartViewModel() { - Time = row_temp.GetCell(0).StringCellValue, - Y = row_temp.GetCell(i).NumericCellValue, + Time = DateTime.FromOADate(timevalue).ToString("HH:mm:ss"), + Y = yvalue, }); + rowData[i] = yvalue; + } + else + { + var timevalue = row_temp.GetCell(0).NumericCellValue; + rowData[i] = DateTime.FromOADate(timevalue).ToString("HH:mm:ss"); } } - - + catch (Exception ex) + { + var a = ex.Message; + } } - return ""; + dataTable.Rows.Add(rowData); + } - } - catch (Exception ex) - { - return "鏂囦欢寮傚父!"; - } + return ""; + + + } } } \ No newline at end of file -- Gitblit v1.9.3