Как создать таблицу Excel в C#

В этом примере используется следующий код для создания диаграммы Excel в новой книге.

private void btnCreateChart_Click(
    object sender, EventArgs e)
{
    // Получить объект приложения Excel.
    Excel.Application excel_app =
        new Excel.ApplicationClass();

    // Сделать Excel видимым (необязательно).
    excel_app.Visible = true;

    // Создаем книгу.
    Excel.Workbook workbook =
        excel_app.Workbooks.Add(Type.Missing);

    // Получить первый рабочий лист.
    Excel.Worksheet sheet = (Excel.Worksheet)workbook.Sheets[1];

    // Добавить некоторые случайные данные в диапазон ячеек.
    object[,] values = 
    { 
        { "Salesperson",  2005,  2006, 2007, 2008, 2009, 2010},
        { "Ann", 0, 0, 0, 0, 0, 0},
        { "Bob", 0, 0, 0, 0, 0, 0},
        { "Cat", 0, 0, 0, 0, 0, 0},
        { "Don", 0, 0, 0, 0, 0, 0},
    };
    Random rand = new Random();
    for (int i = 1; i < 5; i++)
    {
        for (int j = 1; j < 7; j++)
        {
            values[i, j] = rand.Next(60, 101);
        }
    }
    Excel.Range value_range = sheet.get_Range("A1", "G5");
    value_range.Value2 = values;

    Excel.Range colA = (Excel.Range)sheet.Columns[1, Type.Missing];
    colA.ColumnWidth = 12;

    // Создаем диаграмму.
    Excel.Shape chart_shape = sheet.Shapes.AddChart(
        Excel.XlChartType.xlLine, 400, 5, 300, 200);
    Excel.Chart chart = chart_shape.Chart;

    // Устанавливаем данные.
    Excel.Range chart_range = sheet.get_Range("A2", "G5");
    chart.SetSourceData(chart_range, Excel.XlRowCol.xlRows);

    // Установите метки оси X.
    Excel.Range axis_range = sheet.get_Range("B1", "G1");
    Excel.Series series = (Excel.Series)chart.SeriesCollection(1);
    series.XValues = axis_range;

    // Удалите сохраненный файл, если он уже существует.
    string filename = Application.StartupPath + "\\Chart.xlsx";
    System.IO.File.Delete(filename);

    // Сохраните изменения и закройте книгу.
    workbook.SaveAs(filename, Type.Missing, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing,
        Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing,
        Type.Missing, Type.Missing, Type.Missing,
        Type.Missing);
    workbook.Close(true, Type.Missing, Type.Missing);

    // Закройте сервер Excel.
    excel_app.Quit();

    MessageBox.Show("Done");
}

Код начинается с создания объекта приложения Excel. Он использует метод Workbooks.Add этого объекта для создания новой книги. Затем он получает первую рабочую таблицу этой книги.

Далее код определяет массив, содержащий данные, которые он будет добавлять на рабочий лист. Он начинается с некоторых исходных данных, а затем использует объект Random для рандомизации некоторых показателей продаж. Затем код создает объект Range, представляющий ячейки A1..G5, и устанавливает их значения, равные значениям в массиве. Код также изменяет размер первого столбца, чтобы сделать его достаточно широким, чтобы отображать данные.

Далее код использует метод Shapes.AddChart рабочего листа для создания нового объекта диаграммы с типом xlLine. Новая диаграмма составляет 400 пикселей от левого края рабочего листа, 5 пикселей от верхнего края, ширина 300 и высота 300.

Метод Shapes.AddChart возвращает объект Shape. Свойством Chart объекта является объект Chart. Код сохраняет этот объект в переменной chart, поэтому он может работать с ним более легко.

Затем программа использует метод chart объекта SetSourceData, чтобы сообщить, какие данные должны отображаться. Код получает первую серию диаграммы (ось X) и устанавливает ее для отображения чисел года ниже оси X.

В этот момент программа готова сохранить новую книгу. Сначала он удаляет любую ранее созданную книгу с тем же именем, а затем вызывает метод SaveAs книги, чтобы сохранить книгу с нужным именем. (Обратите внимание, что программа сохраняет книгу в эксклюзивном режиме. Если вы сохраните ее в режиме общего доступа, вы не сможете манипулировать диаграммой, если позже ее откроете.)

Источник: http://csharphelper.com/blog/2016/02/make-an-excel-chart-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector