Технологии программирования развиваются так, что за всеми не угнаться. Однако переход с одной платформы на другую не составляет иногда особого труда. Установив 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 рассмотрите следующий пример.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.