public static void AddChartControl(Dictionary<string, List<HisCycleLayerUnit>> dicCycList, ReportsModel reportModel, string picPath)
{
string path = Environment.CurrentDirectory + "\\ExportItem.xml";
ExportItems exportItems = new ExportItems();
exportItems = SerializeHelper.XmlDeserializeFromFile<ExportItems>(path, Encoding.UTF8) as ExportItems;
List<string> list = new List<string>();
if (exportItems.listExportItems != null && exportItems.listExportItems.Count > 0)
{
foreach (var obj in exportItems.listExportItems)
{
list.Add(obj.name);
}
}
if (list != null && list.Count > 0)
{
PrintingSystem ps = new PrintingSystem();
CompositeLink link = new CompositeLink(ps);
ps.Links.Add(link);
foreach (var obj in list)
{
ChartControl spineChart = new ChartControl();
// Series series = new Series(obj, ViewType.Spline);
foreach (var strBatCode in dicCycList)
{
Series series = new Series(obj, ViewType.Spline);
double dModel = 0.0;
for (int i = 0; i < strBatCode.Value.Count; i++)
{
if (obj == "充电容量")
{
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, strBatCode.Value[i].CHARGECAPACITY));
series.Name = strBatCode.Key;
}
else if (obj == "放电容量")
{
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, strBatCode.Value[i].DISCHARGECAPACITY));
series.Name = strBatCode.Key;
}
else if (obj == "充电能量")
{
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, strBatCode.Value[i].CHARGEENERGY));
series.Name = strBatCode.Key;
}
else if (obj == "放电能量")
{
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, strBatCode.Value[i].DISCHARGEENERGY));
series.Name = strBatCode.Key;
}
else if (obj == "CD_Energy_Retention_Data") {
if (reportModel.reportXml == strBatCode.Value[i].CYCLEID.ToString())
{
dModel = strBatCode.Value[i].DISCHARGEENERGY;
}
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, (strBatCode.Value[i].DISCHARGEENERGY / dModel) * 100));
series.Name = strBatCode.Key;
}
else if (obj == "Capacity_Retention_Data")
{
if (reportModel.reportXml == strBatCode.Value[i].CYCLEID.ToString())
{
dModel = strBatCode.Value[i].CHARGEENERGY;
}
series.Points.Add(new SeriesPoint(strBatCode.Value[i].CYCLEID, (strBatCode.Value[i].CHARGEENERGY / dModel) * 100));
series.Name = strBatCode.Key;
}
}
if (series != null&&series.Points.Count>0)
spineChart.Series.Add(series);
}
XYDiagram diagram = (XYDiagram)spineChart.Diagram;
// diagram.AxisX.GridLines.Color = Color.Black;
diagram.AxisX.Title.Visibility = DefaultBoolean.True;
diagram.AxisX.Title.Alignment = StringAlignment.Center;
diagram.AxisX.Title.Text = "Cycle_No.";
diagram.AxisX.Title.EnableAntialiasing = DefaultBoolean.True;
diagram.AxisX.Title.Font = new Font("Tahoma", 12, FontStyle.Bold);
// diagram.AxisY.GridLines.Color = Color.YellowGreen;
diagram.AxisY.Title.Visibility = DefaultBoolean.True;
diagram.AxisY.Title.Alignment = StringAlignment.Center;
diagram.AxisY.Title.Text = obj;
diagram.AxisY.Title.EnableAntialiasing = DefaultBoolean.True;
diagram.AxisY.Title.Font = new Font("Tahoma", 12, FontStyle.Bold);
((XYDiagram)spineChart.Diagram).EnableAxisXZooming = true;
spineChart.Titles.Add(new ChartTitle());
spineChart.Titles[0].Text = obj + "曲线";
spineChart.Titles[0].Font = new Font("Tahoma", 14, FontStyle.Bold);
spineChart.Dock = DockStyle.Fill;
//PrintingSystem ps = new PrintingSystem();
//CompositeLink link = new CompositeLink(ps);
//ps.Links.Add(link);
link.Links.Add(CreatePrintableLink(spineChart));
//link.Landscape = false;
//link.CreatePageForEachLink();
//link.PaperName = obj + "曲线";
//XlsxExportOptions options = new XlsxExportOptions();
//options.SheetName = obj + "曲线"; //修改sheet页命名
//link.ExportToXlsx(picPath, options);
}
link.Landscape = true;
link.PaperName = "曲线图";
link.CreatePageForEachLink();
XlsxExportOptions options = new XlsxExportOptions();
options.SheetName = "曲线图"; //修改sheet页命名
options.ExportMode = DevExpress.XtraPrinting.XlsxExportMode.SingleFilePageByPage;
link.ExportToXlsx(picPath, options);
}
}