C # - редактирование данных диаграммы Excel - PullRequest
0 голосов
/ 14 сентября 2011

Итак, сейчас я создаю диаграммы Excel в программе ac #, которая использует диапазон ячеек.Могу ли я отредактировать свой код так, чтобы я отобразил все данные в двух столбцах, потому что я не буду знать диапазон.Данные экспортируются в Excel через datagridview, так что я буду знать, к каким столбцам они пойдут, я просто не буду знать, где останавливаются ячейки.Я хочу построить график для всего, что находится в столбцах a и b, а затем график для всего в столбцах c и d и график для всего в e и f.

Вот мой код с диапазонами:

Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlWorkBook = xlApp.Workbooks.Add(misValue);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
        int i = 0;
        int j = 0;

        for (i = 0; i <= dataGridView1.RowCount - 1; i++)
        {
            for (j = 0; j <= dataGridView1.ColumnCount - 1; j++)
            {
                DataGridViewCell cell = dataGridView1[j, i];
                xlWorkSheet.Cells[i + 1, j + 1] = cell.Value;
            }

        }

        Excel.Range chartRange;

        Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing);
        Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 80, 300, 250);
        Excel.Chart chartPage = myChart.Chart;

        chartRange = xlWorkSheet.get_Range("A1", "B65");
        chartPage.SetSourceData(chartRange, misValue);
        chartPage.ChartType = Excel.XlChartType.xlColumnClustered;

        Excel.Range chartRange1;

        Excel.ChartObjects xlChart1 = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing);
        Excel.ChartObject myChart1 = (Excel.ChartObject)xlChart1.Add(10, 80, 300, 250);
        Excel.Chart chartPage1 = myChart1.Chart;

        chartRange1 = xlWorkSheet.get_Range("C1", "D65");
        chartPage1.SetSourceData(chartRange1, misValue);
        chartPage1.ChartType = Excel.XlChartType.xlColumnClustered;

        Excel.Range chartRange2;

        Excel.ChartObjects xlChart = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing);
        Excel.ChartObject myChart2 = (Excel.ChartObject)xlChart.Add(10, 80, 300, 250);
        Excel.Chart chartPage2 = myChart2.Chart;

        chartRange2 = xlWorkSheet.get_Range("E1", "F65");
        chartPage2.SetSourceData(chartRange2, misValue);
        chartPage2.ChartType = Excel.XlChartType.xlColumnClustered;

1 Ответ

0 голосов
/ 14 сентября 2011

Вы пытались это сделать:

chartRange = xlWorkSheet.get_Range("A1", "B" + dataGridView1.RowCount);

Сделав это, вы получите весь необходимый диапазон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...