데이터를 사용하여 Excel 시트에서 그래프를 만들려고했습니다. 내 데이터 원본은 동일한 통합 문서입니다. 데이터는 시트 1에 있고 시트 2에 그래프를 만들고 싶습니다. 거의 모든 StackOverflow 스레드와 기타 웹 리소스를 읽었습니다. 내가 잘못한 곳을 찾을 수없는 것 같습니다. 그래프는 정확히 축척 된 축 외에는 아무것도 표시하지 않습니다.
4 개의 다른 선 / 막대 차트에서 B, C, D 및 E에 대해 A 열 (X 축)을 표시하고 싶습니다. 나는 Microsoft.Office.Interop.Excel
네임 스페이스를 사용 합니다.
이것은 코드 조각입니다.
Worksheet sheet2 = workBook.Worksheets[2];
ChartObjects chart = sheet2.ChartObjects(Type.Missing);
ChartObject[] chartObj = {chart.Add(10, 10, 550, 300), chart.Add(580, 10, 550, 300), chart.Add(10, 350, 550, 300), chart.Add(580, 350, 550, 300) };
int[,] rangeVal = { { 0, 400 }, { 0, 100 }, { 0, 300 }, { 0, 5 } };
for (int col = 2; col <= colsCount; col++)
{
Chart myChart = chartObj[col-2].Chart;
chartObj[col - 2].Select();
myChart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
SeriesCollection seriesCollection = myChart.SeriesCollection();
Series series1 = seriesCollection.NewSeries();
series1.Name = sheet1.Cells[1,col].Value.ToString();
series1.XValues = sheet1.get_Range("A2","A" + (rowsCount + 1).ToString());
series1.Values = sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString());
series1.ChartType = XlChartType.xlLine;
myChart.PlotBy = XlRowCol.xlRows;
myChart.Axes(XlAxisType.xlValue).MinimumScale = rangeVal[col-2,0];
myChart.Axes(XlAxisType.xlValue).MaximumScale = rangeVal[col-2,1];
//myChart.SetSourceData(sheet1.get_Range((char)((int)'A' + col - 1) + "2", (char)((int)'A' + col - 1) + (rowsCount + 1).ToString()));
}
다음은 주석이 달린 그래프의 스크린 샷입니다 SetSourceData
.
다음은 SetSourceData
활성화 된 그래프의 스크린 샷입니다 .
그리고 내 데이터 세트에는 0 값이 없습니다.
어떤 도움을 주시면 감사하겠습니다!
답을 찾고있는 사람을 위해. 이것은 내 시나리오였습니다.
MySQL에서 DataTable로 데이터를 읽어 왔는데 문제는 sheet1에 데이터를 저장하는 방법이었습니다. 문자열 값으로 저장했습니다. 이것이 sheet1에서 데이터를 읽는 부분이 문자열 값을 숫자 값으로 변환하지 않는 이유입니다. 단순히 0으로 간주합니다.
위의 코드는 그렇지 않으면 완벽하게 작동합니다.
어리석은 실수! :)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다