操作Excel 来绘制曲线,调用了Epplus动态库来完成

 public void AddChart(ExcelPackage package)
        {
                       ExcelPackage packages = new ExcelPackage();
                  ExcelWorksheet worksheet = null;
                  ExcelChartSerie chartSerie = null;
                  ExcelLineChart chart = null;


                  if (package.Workbook.Worksheets.Count > 0)
                  {
                      #region  充电能量 容量  曲线
                      foreach (var wSheet in package.Workbook.Worksheets)
                      {
                          #region research
                          //不用绘制时间曲线图
                          if (wSheet.Name == "CD_Capacity_Data(Ah)" || wSheet.Name == "CD_Energy_Data(Wh)")
                          {

                              if (wSheet.Name == "CD_Capacity_Data(Ah)")
                              {

                                  worksheet = packages.Workbook.Worksheets.Add("Charge_Capacity Plot");
                              }
                              else if (wSheet.Name == "CD_Energy_Data(Wh)")
                              {
                                  worksheet = packages.Workbook.Worksheets.Add("Charge_Energy Plot");
                              }

                              chart = worksheet.Drawings.AddChart("ColumnStackedChart", eChartType.LineMarkers) as ExcelLineChart;//设置图表样式
                              chart.Legend.Position = eLegendPosition.Right;
                              chart.Legend.Add();
                              chart.Title.Text = worksheet.Name;//设置图表的名称
                              //chart.SetPosition(200, 50);//设置图表位置
                              chart.SetSize(900, 600);//设置图表大小
                              chart.ShowHiddenData = true;

                              if (worksheet.Name == "Charge_Capacity Plot")
                              {

                                  chart.YAxis.Title.Text = "Charge_Capacity";
                              }
                              else
                              {
                                  chart.YAxis.Title.Text = "Charge_Energy";

                              }

                              chart.XAxis.MinorUnit = 1;//设置X轴的最小刻度
                              chart.XAxis.Title.Text = "Cycle_No";
                              //  chart.YAxis.MinorUnit = 1;

                              //chart.DataLabel.ShowCategory = true;
                              chart.DataLabel.ShowPercent = true;//显示百分比

                              int rows = wSheet.Dimension.End.Row;  //获取sheet页的行数
                              int cols = wSheet.Dimension.End.Column;//获取sheet页的列数

                              //  行在前  列在后

                              for (int col = 2; col <= cols; col++)
                              {
                                  if (col % 2 == 0)
                                  {
                                      ExcelRangeBase y = wSheet.Cells[3, col, rows, col];

                                      ExcelRangeBase x = wSheet.Cells[3, 1, rows, 1];

                                      // chartSerie = chart.Series.Add(wSheet.Cells[row + 2, col , row + 2, col], wSheet.Cells[row + 2, 1, row + 2, 1]);

                                      chartSerie = chart.Series.Add(wSheet.Cells[string.Format("{0}:{1}", y.Address, y.Address)], wSheet.Cells[string.Format("{0}:{1}", x.Address, x.Address)]);

                                      ExcelRangeBase yy = wSheet.Cells[1, col, 1, col];

                                      chartSerie.HeaderAddress = wSheet.Cells[string.Format("{0}:{1}", yy.Address, yy.Address)];  //设置每条线的名称
                                  }
                              }
                              chart.SetPosition(0, 10, 0, 20);
                          #endregion research
                          }
                      }
                      #endregion

                      #region 放电能量 容量  曲线
                      foreach (var wSheet in package.Workbook.Worksheets)
                      {
                          #region research
                          //不用绘制时间曲线图
                          if (wSheet.Name == "CD_Capacity_Data(Ah)" || wSheet.Name == "CD_Energy_Data(Wh)" )
                          {
                              if (wSheet.Name == "CD_Capacity_Data(Ah)")
                              {

                                  worksheet = packages.Workbook.Worksheets.Add("Discharge_Capacity Plot");
                              }
                              else if (wSheet.Name == "CD_Energy_Data(Wh)")
                              {
                                  worksheet = packages.Workbook.Worksheets.Add("Discharge_Energy Plot");
                              }

                              chart = worksheet.Drawings.AddChart("ColumnStackedChart", eChartType.LineMarkers) as ExcelLineChart;//设置图表样式
                              chart.Legend.Position = eLegendPosition.Right;
                              chart.Legend.Add();
                              chart.Title.Text = worksheet.Name;//设置图表的名称
                              chart.SetSize(900, 600);//设置图表大小
                              chart.ShowHiddenData = true;
                              //  chart.YAxis.MinorUnit = 1;

                              if (worksheet.Name == "Discharge_Capacity Plot")
                              {

                                  chart.YAxis.Title.Text = "Discharge_Capacity";
                              }
                              else
                              {
                                  chart.YAxis.Title.Text = "Discharge_Energy";

                              }

                              chart.XAxis.MinorUnit = 1;//设置X轴的最小刻度
                              chart.XAxis.Title.Text = "Cycle_No";

                              //chart.DataLabel.ShowCategory = true;
                              chart.DataLabel.ShowPercent = true;//显示百分比

                              int rows = wSheet.Dimension.End.Row;  //获取sheet页的行数
                              int cols = wSheet.Dimension.End.Column;//获取sheet页的列数

                              //  行在前  列在后

                              for (int col = 3; col <= cols; col++)
                              {
                                  if (col % 2 != 0)
                                  {
                                      ExcelRangeBase y = wSheet.Cells[3, col, rows, col];

                                      ExcelRangeBase x = wSheet.Cells[3, 1, rows, 1];

                                      chartSerie = chart.Series.Add(wSheet.Cells[string.Format("{0}:{1}", y.Address, y.Address)], wSheet.Cells[string.Format("{0}:{1}", x.Address, x.Address)]);

                                      ExcelRangeBase yy = wSheet.Cells[1, col - 1, 1, col - 1];

                                      chartSerie.HeaderAddress = wSheet.Cells[string.Format("{0}:{1}", yy.Address, yy.Address)];  //设置每条线的名称
                                  }
                              }
                              chart.SetPosition(0, 10, 0, 20);
                          #endregion research
                          }
                      }
                      #endregion

                      #region 放电 能量 容量 比例  曲线

                      foreach (var wSheet in package.Workbook.Worksheets)
                      {
                          #region research
                          //不用绘制时间曲线图
                          if (wSheet.Name == "Capacity_Retention_Data(%)" || wSheet.Name == "CD_Energy_Retention_Data(%)")
                          {
                              if (wSheet.Name == "Capacity_Retention_Data(%)")
                              {

                                  worksheet = packages.Workbook.Worksheets.Add("Capacity_Retention_Data Plot");
                              }
                              else if (wSheet.Name == "CD_Energy_Retention_Data(%)")
                              {
                                  worksheet = packages.Workbook.Worksheets.Add("CD_Energy_Retention_Data Plot");
                              }

                              chart = worksheet.Drawings.AddChart("ColumnStackedChart", eChartType.LineMarkers) as ExcelLineChart;//设置图表样式
                              chart.Legend.Position = eLegendPosition.Right;
                              chart.Legend.Add();
                              chart.Title.Text = worksheet.Name;//设置图表的名称
                              chart.SetSize(900, 600);//设置图表大小
                              chart.ShowHiddenData = true;
                              //  chart.YAxis.MinorUnit = 1;
                              if (worksheet.Name == "Capacity_Retention_Data Plot")
                              {

                                  chart.YAxis.Title.Text = "Capacity_Retention";
                              }
                              else
                              {
                                  chart.YAxis.Title.Text = "CD_Energy_Retention";
                              
                              }

                              chart.XAxis.MinorUnit = 1;//设置X轴的最小刻度
                              chart.XAxis.Title.Text = "Cycle_No";
                              //chart.DataLabel.ShowCategory = true;
                              chart.DataLabel.ShowPercent = true;//显示百分比

                              int rows = wSheet.Dimension.End.Row;  //获取sheet页的行数
                              int cols = wSheet.Dimension.End.Column;//获取sheet页的列数

                              //  行在前  列在后

                              for (int col = 2; col <= cols; col++)
                              {

                                  ExcelRangeBase y = wSheet.Cells[3, col, rows, col];

                                  ExcelRangeBase x = wSheet.Cells[3, 1, rows, 1];

                                  chartSerie = chart.Series.Add(wSheet.Cells[string.Format("{0}:{1}", y.Address, y.Address)], wSheet.Cells[string.Format("{0}:{1}", x.Address, x.Address)]);

                                  ExcelRangeBase yy = wSheet.Cells[1, col, 1, col];

                                  chartSerie.HeaderAddress = wSheet.Cells[string.Format("{0}:{1}", yy.Address, yy.Address)];  //设置每条线的名称
                              }
                              chart.SetPosition(0, 10, 0, 20);
                          #endregion research
                          }
                      }
                      #endregion

                   

                  }
                  foreach (var obj in packages.Workbook.Worksheets)
                  {
                  package.Workbook.Worksheets.Add(obj.Name,obj);
                   }
            

                  
               //   package.Save();//保存文件
              
        }

Barcode418419
Cycle_No.ChargeDischargeChargeDischarge
1131211
2141111
3141121
4141111
5141211
6141122
7141121
8141111
9141111
101012
11  21
12  11
13  11
14  11
15  21
16  11
17  11
18  21
19  11
20  11
21  11


 

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值