Экспорт данных в Microsoft Excel (первый .Net Core проект)

Технологии программирования развиваются так, что за всеми не угнаться. Однако переход с одной платформы на другую не составляет иногда особого труда. Установив VS 2019 Community, я решил написать приложение на платформе .Net Core.
Задача экспорта и импорта данных с Microsoft Excel полезна в тех случаях, когда часть работы пользователь выполняет в электронных таблицах, а часть — в среде программирования. Это некоторая альтернатива программированию баз данных (БД), когда пользователь, не владея технологией БД, успешно справляется с табличным процессором.

ПОСТАНОВКА ЗАДАЧИ

Для примера выбрана следующая формулировка задачи: в программе, написанной на C#, вычисляется некоторый переходной процесс — функция y=Y(t), где t — дискретное время. Требуется экспортировать данные в Microsoft Excel и построить его средствами график переходного процесса, при необходимости — сохранить результаты в Excel-файле. Для определенности отмечу, что на компьютере у меня установлен Microsoft Excel 16.0.

РЕШЕНИЕ

Для подключения в проект необходимой библиотеки добавьте ссылку: Проект/Добавить ссылку … /Microsoft Excel 16.0 Object Library. Тогда в Обозревателе решений должны появиться вложенные закладки:
Зависимости
   COM
      Interop.Microsoft.Office.Core
      Interop.Microsoft.Office.Interop.Excel
   Платформы
      Microsoft.NetCore.App

Теперь для использования библиотеки работы с Excel удобно задать ee псевдоним:
using Excel = Microsoft.Office.Interop.Excel;

Текст консольного приложения на платформе .Net Core приведен ниже:

// Экспорт данных в MS Excel (.NetCore проект) 
using System;
using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelOutput
{
class Program
{
   static void Main(string[] args)
   {
   // Экспорт данных в Excel
      int n = 50;
      double[] Y = new double[n];
      Console.WriteLine("Для экспорта данных в Excel нажмите любую клавишу!");
      Console.ReadKey();
      for (int i = 0; i < n; i++)
         Y[i] = 1 - Math.Exp(-i / 10.0);
      OutInExcel(Y, n);   // Вызов метода
      Console.WriteLine("Вы сохранили данные в *.xlsx файле?");
   }
   // Сохранение данных с построением графика в MS Excel
   static void OutInExcel(double [] Y, int n)
   {
      // Создаём объект - экземпляр нашего приложения
      Excel.Application excelApp = new Excel.Application();
      // Создаём экземпляр рабочей книги Excel
      Excel.Workbook workBook;
      // Создаём экземпляр листа Excel
      Excel.Worksheet workSheet;
      workBook = excelApp.Workbooks.Add();
      workSheet = (Excel.Worksheet)workBook.Worksheets.get_Item(1);
      // Заполняем первый столбец листа из массива Y[0..n-1]
      for (int j = 1; j <= n; j++)
         workSheet.Cells[j, 1] = Y[j - 1];
      // Вывод текста
      Excel.Range rng = workSheet.Range["c1"];
      rng.Formula = "Результат";
      // Настраиваем линейный график через интерфейсы ChartObjects, ChartObject, Chart, Range
      Excel.ChartObjects chartObjs = (Excel.ChartObjects)workSheet.ChartObjects();
      Excel.ChartObject chartObj = chartObjs.Add(70, 30, 300, 200);
      Excel.Chart xlChart = chartObj.Chart;
      string sRange = "A1:A" + n.ToString(); // Вывод в 1 столбец - n чисел
      Excel.Range rng2 = workSheet.Range[sRange]; //
      // Устанавливаем тип диаграммы
      xlChart.ChartType = Excel.XlChartType.xlLineStacked; // тип графика - линейный
      // Устанавливаем источник данных (значения от 1 до n)
      xlChart.SetSourceData(rng2);
      // Открываем созданный excel-файл
      excelApp.Visible = true;
      excelApp.UserControl = true;
   }
}
}

Результат: В MS Excel откроется книга и лист со следующем содержимым:

При необходимости результат может быть сохранен в файл с выбранным Вами именем.

Для импорта данных из Excel рассмотрите следующий пример.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх