Диаграммы Excel C#

#c# #excel #charts

#c# #excel #Диаграммы

Вопрос:

Я использую Excel для рисования диаграмм на c #, но мне нужно, чтобы диаграмма представляла собой одну серию, связанную друг с другом, а не две серии (когда я выбираю диапазон, содержащий два столбца данных)
кто-нибудь может помочь:

         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, 300, 300);
        Chart xlChart = chartObj.Chart;
        Range rg = ws.get_Range("B2", "C17");
        xlChart.SetSourceData(chartRange, XlRowCol.xlColumns);
  

Спасибо

Комментарии:

1. Я не понимаю, что вы пытаетесь сделать.

2. когда у вас есть столбец данных tow в Excel, и вы выбираете их и вставляете диаграмму, он может генерировать несколько рядов строк на диаграмме или может генерировать один ряд (т. Е. Строку), который относится к обоим столбцам, как если бы первый столбец был осью x, а второй — осью y, мне нужно сделать это в коде, а не в серии tow, как я упоминал

Ответ №1:

Я немного почистил код и добавил генерацию случайных данных, так что это должно выполняться само по себе.

 Random random = new Random();
Microsoft.Office.Interop.Excel.Application 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();
ChartObject chartObj = chartObjs.Add(150, 20, 300, 300);
Chart xlChart = chartObj.Chart;

// generate some random data
for (int row = 0; row < 16; row  )
{
    ws.Cells[row   2, 2] = row   1;
    ws.Cells[row   2, 3] = random.Next(100);
}

Range xValues = ws.Range["B2", "B17"];
Range values = ws.Range["C2", "C17"];

SeriesCollection seriesCollection = xlChart.SeriesCollection();

Series series1 = seriesCollection.NewSeries();
series1.XValues = xValues;
series1.Values = values; 
  

Комментарии:

1. 1! Попробовал ваш код, но получил исключение COM в этой строке SeriesCollection seriesCollection = xlChart.SeriesCollection();

2. @GETah — Это может означать, что вы неправильно установили диаграммы или неправильно создали chartObj. Если вам нужна помощь с этим, вам нужно предоставить более подробную информацию (какое исключение, что вы делаете) и задать отдельный вопрос.

3. Спасибо за быстрый ответ. На самом деле я использовал ваш код в автономном приложении VSTO, если это поможет

4. @GETah — Код не был написан или протестирован в приложении VSTO. Вы должны быть в состоянии сделать что-то подобное, но это будет отличаться.