对图表使用辅助轴会导致x轴和主要y轴问题(Excel)

使用辅助轴制作图表,使我的图表主要y-axis显示了一些我不想要的值。

只有x-axis和辅助y-axis 。 而且x-axis也没有我所传递的date值。

码:

 chartType2 = GetChartType(worksheet, chartToDraw, endcolcnt, i, chartType2, chartType); chartType2.UseSecondaryAxis = true; Scale(headerString, endcolcnt, worksheet, chartType2, stcol, isFieldSame, endcol, stcolumn1, endrow, startRow); 

和缩放function只分配标题名称和全部。

关于系列拍摄的细节 在这里输入图像说明

输出: exceloutput

input 输入

很难说没有更多的代码。 那些function到底在做什么?

你是不是想让右侧的轴线? 基于你发布的黑色图表,看起来就像你以后的样子。 你可以做chartType.YAxis.Crosses = eCrosses.Max

或者你真的想要两个轴,这将需要两个图表/系列? 如果你想这样做,那么你需要创build第二个图表(看起来像你的function可能是这样做的),然后添加一个唯一的系列,但有一个共同的X值数据集。 只要确保你以正确的顺序添加它们。

这显示了两种情况:

 [TestMethod] public void Chart_Secondary_Axis_Test() { //http://stackoverflow.com/questions/28540458/using-secondary-axis-for-chart-cause-x-axis-and-primary-y-axis-issue-excel var existingFile = new FileInfo(@"c:\temp\temp.xlsx"); if (existingFile.Exists) existingFile.Delete(); using (var pck = new ExcelPackage(existingFile)) { var wsContent = pck.Workbook.Worksheets.Add("Content"); //Some data wsContent.Cells["A1"].Value = "A"; wsContent.Cells["B1"].Value = "B"; wsContent.Cells["C1"].Value = "C"; wsContent.Cells["D1"].Value = "D"; wsContent.Cells["A2"].Value = 100; wsContent.Cells["A3"].Value = 400; wsContent.Cells["A4"].Value = 200; wsContent.Cells["A5"].Value = 300; wsContent.Cells["A6"].Value = 600; wsContent.Cells["A7"].Value = 500; wsContent.Cells["B2"].Value = 300; wsContent.Cells["B3"].Value = 200; wsContent.Cells["B4"].Value = 1000; wsContent.Cells["B5"].Value = 600; wsContent.Cells["B6"].Value = 500; wsContent.Cells["B7"].Value = 200; wsContent.Cells["D2"].Value = new DateTime(2015, 1, 1); wsContent.Cells["D3"].Value = new DateTime(2015, 1, 2); wsContent.Cells["D4"].Value = new DateTime(2015, 1, 3); wsContent.Cells["D5"].Value = new DateTime(2015, 1, 4); wsContent.Cells["D6"].Value = new DateTime(2015, 1, 5); wsContent.Cells["D7"].Value = new DateTime(2015, 1, 6); const int dataRow = 7; const string FORMATDATE = "m/d/yy"; wsContent.Cells[2, 4, dataRow, 4].Style.Numberformat.Format = FORMATDATE; //Single Axis with intersection on the right var chart1 = wsContent.Drawings.AddChart("Chart1", eChartType.XYScatterLines); chart1.SetSize(600, 400); var serie1 = (ExcelScatterChartSerie)chart1.Series.Add(wsContent.Cells[2, 1, dataRow, 1], wsContent.Cells[2, 4, dataRow, 4]); serie1.Header = wsContent.Cells[1, 1].Value.ToString(); chart1.YAxis.Crosses = eCrosses.Max; //Dual Axis var chart2a = wsContent.Drawings.AddChart("Chart2", eChartType.ColumnStacked); chart2a.SetSize(600, 400); chart2a.SetPosition(400, 0); var serie2a = chart2a.Series.Add(wsContent.Cells[2, 2, dataRow, 2], wsContent.Cells[2, 4, dataRow, 4]); serie2a.Header = wsContent.Cells[1, 2].Value.ToString(); var chart2b = chart2a.PlotArea.ChartTypes.Add(eChartType.XYScatterLines); var serie2b = chart2b.Series.Add(wsContent.Cells[2, 1, dataRow, 1], wsContent.Cells[2, 4, dataRow, 4]); serie2b.Header = wsContent.Cells[1, 1].Value.ToString(); chart2b.UseSecondaryAxis = true; //Flip the axes pck.Save(); } } 

在这里输入图像说明