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();//保存文件
}
Barcode | 418 | 419 | ||
Cycle_No. | Charge | Discharge | Charge | Discharge |
1 | 13 | 12 | 1 | 1 |
2 | 14 | 11 | 1 | 1 |
3 | 14 | 11 | 2 | 1 |
4 | 14 | 11 | 1 | 1 |
5 | 14 | 12 | 1 | 1 |
6 | 14 | 11 | 2 | 2 |
7 | 14 | 11 | 2 | 1 |
8 | 14 | 11 | 1 | 1 |
9 | 14 | 11 | 1 | 1 |
10 | 1 | 0 | 1 | 2 |
11 | 2 | 1 | ||
12 | 1 | 1 | ||
13 | 1 | 1 | ||
14 | 1 | 1 | ||
15 | 2 | 1 | ||
16 | 1 | 1 | ||
17 | 1 | 1 | ||
18 | 2 | 1 | ||
19 | 1 | 1 | ||
20 | 1 | 1 | ||
21 | 1 | 1 |