2013-03-26 1 views
3

X 및 Y 축을 쉽게 레이블링 할 수있는 문제가 발생했습니다.2 차원 그래프에서 Excel X 및 Y 축에 레이블을 지정하는 방법

저는 C#으로 VS2010 안에 Excel 그래프를 작성하고 있습니다. 2D XY 분산 형 차트입니다. 하지만 X 축 레이블을 제어 할 수는 없습니다! Y 축 레이블 만 제어 할 수 있습니다! 나는 이걸 이해하려고 너무 많은 시간을 보내고 포기했다. 그래서 나는 누군가의 도움을 찾고 있습니다! 다음은 Y 축 레이블로 덮어, 당신은 그것을 통해 단계로

private void showExcelXY_v2() 
    { 
     xla = new Microsoft.Office.Interop.Excel.Application(); 

     xla.Visible = true; 
     Workbook wb = xla.Workbooks.Add(XlSheetType.xlWorksheet); 
     Worksheet ws = (Worksheet)xla.ActiveSheet; 

     // Now create the chart. 
     ChartObjects chartObjs = (ChartObjects)ws.ChartObjects(Type.Missing); 
     ChartObject chartObj = chartObjs.Add(100, 20, 500, 300); 
     Microsoft.Office.Interop.Excel.Chart xlChart = chartObj.Chart; 

     //add some data from your datasource like a dataset or like below. 
     ws.Cells[1, 1] = "Value of n"; 
     ws.Cells[1, 2] = "Term"; 


     ws.Cells[2, 1] = "0"; 
     ws.Cells[2, 2] = "0"; 

     ws.Cells[3, 1] = "9181"; 
     ws.Cells[3, 2] = "0"; 

     ws.Cells[4, 1] = "9181"; 
     ws.Cells[4, 2] = "-377094"; 

     ws.Cells[5, 1] = "0"; 
     ws.Cells[5, 2] = "-377094"; 

     ws.Cells[6, 1] = "-9554"; 
     ws.Cells[6, 2] = "-329688"; 

     ws.Cells[7, 1] = "-9554"; 
     ws.Cells[7, 2] = "0"; 

     ws.Cells[8, 1] = "0"; 
     ws.Cells[8, 2] = "0"; 


     //set the source data and the chart type. 
     Range chartRange = ws.get_Range("A2", "B" + "8"); 
     xlChart.SetSourceData(chartRange, Type.Missing); 
     xlChart.ChartType = XlChartType.xlXYScatterLines; 

     // Customize axes: 
     Microsoft.Office.Interop.Excel.Axis xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); 
     xAxis.HasTitle = true; 
     xAxis.AxisTitle.Text = "Above   Pressure (psi)   Below"; 

     Microsoft.Office.Interop.Excel.Axis yAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); 
     yAxis.MajorTickMark = XlTickMark.xlTickMarkCross; 
     yAxis.HasTitle = true; 
     yAxis.AxisTitle.Text = "Compression (lbf)"; 

     // Add title: 
     xlChart.HasTitle = true; 
     xlChart.ChartTitle.Text = "XPak Performance Envelope" + '\n' + "(Open Top & Bottom)"; 

     // Remove legend: 
     xlChart.HasLegend = false; 
    } 

이 코드의 결과는, X 축 레이블이 Y 축으로 이동을 보여줍니다 여기에 내 코드입니다. X 축으로 이동하지 마십시오! 어떤 아이디어라도 크게 감사 할 것입니다.

답변

4

당신은 두 축이 같은 방식으로 정의되어 :

xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary) 

yAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary) 

X 축이 "분류"축과 Y 축입니다 "값"축입니다. x 축 (보정 된)에 대해 다음을 시도해보십시오.

xAxis = (Microsoft.Office.Interop.Excel.Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary) 
+0

David, 감사합니다. 이 악몽을 끝내 줬어! 나는 (XlAxisType.xlCategory, XlGroup.xlValue) 그것을 받아들이 기 위해 당신의 제안의 순서를 재 배열해야했지만, 그것은 내 문제를 해결했다! –

관련 문제