Как из файла эксель сделать программу

Задача экспорта и импорта данных с Microsoft Excel полезна в тех случаях, когда часть работы пользователь выполняет в электронных таблицах, а часть — в среде программирования. Это — альтернатива программированию баз данных (БД), когда пользователь, не владея технологией БД, успешно справляется с табличным процессором.

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

В программе, написанной на C#, т ребуется импортировать данные заданной структуры из Microsoft Excel.

РЕШЕНИЕ

Для подключения в проект необходимой библиотеки добавьте ссылку: Проект/Добавить ссылку … /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;

Для запуска импорта данных поместим на форму элемент button1, для выбора имени файла данных — элемент OpenFileDialog1, для отображения данных — элемент listBox1.

КАК СОХРАНИТЬ EXCEL В PDF

Текст Windows-приложения (файл Form1.cs) на платформе .Net Framework приведен ниже:

using System; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace Excel_Import_Framework < public partial class Form1 : Form < string[,] list = new string[50, 5]; public Form1() < InitializeComponent(); >private void Button1_Click(object sender, EventArgs e) < int n = ExportExcel(); listBox1.Items.Clear(); string s; for (int i = 0; i < n; i++) // по всем строкам < s = «»; for (int j = 0; j < 5; j++) //по всем колонкам s += » | » + list[i, j]; listBox1.Items.Add(s); >> // Импорт данных из Excel-файла (не более 5 столбцов и любое количество строк Выход return 0; Excel.Application ObjWorkExcel = new Excel.Application(); Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Open(ofd.FileName); Excel.Worksheet ObjWorkSheet = (Excel.Worksheet)ObjWorkBook.Sheets[1]; //получить 1-й лист var lastCell = ObjWorkSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell);//последнюю ячейку // размеры базы int lastColumn = (int)lastCell.Column; int lastRow = (int)lastCell.Row; // Перенос в промежуточный массив класса Form1: string[,] list = new string[50, 5]; for (int j = 0; j < 5; j++) //по всем колонкам for (int i = 0; i < lastRow; i++) // по всем строкам list[i, j] = ObjWorkSheet.Cells[i + 1, j + 1].Text.ToString(); //считываем данные ObjWorkBook.Close(false, Type.Missing, Type.Missing); //закрыть не сохраняя ObjWorkExcel.Quit(); // выйти из Excel GC.Collect(); // убрать за собой return lastRow; >> >

Читайте также:
Что такое координатор программы

Результат считывания одного листа Excel-книги размещается в массив list и отображается в элементе listBox1.

NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.

Источник: c-sharp.pro

Номер квартала по дате в Excel #shorts

Пишем надстройку для Excel на .NET с помощью библиотеки Excel-DNA

Excel-DNA — библиотека для .NET, с помощью которой можно написать и собрать полностью самодостаточный файл надстройки для Excel с расширением .xll
Этот файл достаточно положить в пользовательскую папку, без прав администратора, и просто включить в настройках Excel.

Такая надстройка будет иметь доступ к COM-модели Excel, C API Excel — позволяет взаимодействовать с интерфейсом программы и рабочими книгами. Сможет реализовать пользовательские формулы и добавить свое меню на интерфейсную ленту Ribbon UI.

В статье я расскажу как написать свою формулу для Excel на C#. Собрать и установить свою первую надстройку.

Подготовка

Создадим новый проект библиотеки классов для версии .NET 6

dotnet new classlib —framework net6.0 -o ExcelAddIn

В файле .csproj нужно изменить значение версии фреймворка на

net6.0-windows

Теперь установим базовый пакет ExcelDna.AddIn

dotnet add package ExcelDna.AddIn

Писать можно и в Visual Studio, и в VSCode.

Чтобы дебажить код в VSCode нужно создать файл launch.json и в нем изменить две строки, «program» и «args» :

< «version»: «0.2.0», «configurations»: [ < «name»: «.NET Core Launch (console)», «type»: «coreclr», «request»: «launch», «preLaunchTask»: «build», «program»: «C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE», «args»: [ «$\bin\Debug\net6.0-windows\ExcelAddIn-AddIn64.xll» ], «cwd»: «$», «console»: «internalConsole», «stopAtEntry»: false >, < «name»: «.NET Core Attach», «type»: «coreclr», «request»: «attach» >] >

Пути к файлу программы Excel и собранной надстройки нужно поставить свои.

Читайте также:
Программа педагогического эксперимента пример заполненный

Первая формула

Напишем простую формулу, которая складывает два числа:

global using ExcelDna.Integration; namespace ExcelAddIn; public static class ExcelFunctions < [ExcelFunction] public static double DNASUM(double a, double b) < return a + b; >>

Все статические методы помеченные атрибутом [ExcelFunction] теперь принимаются Excel как пользовательские формулы.

Нажмем F5, откроется Excel, который уже откроет файл нашей надстройки. Поскольку у нас нет цифровой подписи появится предупреждение.

Извещение системы безопасности

Нажимаем «Включить» и проверяем работу нашей формулы

Первая формула работает!

Интерфейс IExcelAddIn

Для работы нашей надстройки может понадобится, чтобы она при открытии и закрытии выполняла какие-либо полезные вещи. Например читала настройки из реестра, подключала базы данных.

Cоздадим класс MyAddIn , реализующий интерфейс IExcelAddIn

public class MyAddIn : IExcelAddIn < public void AutoClose() < throw new NotImplementedException(); >public void AutoOpen() < throw new NotImplementedException(); >>

При открытии надстройки будет создан экземпляр класса MyAddIn и выполнен метод AutoOpen()

Делаем формулу запроса курса валют с сайта ЦБ

Напишем теперь формулу, которая делает что-то полезное, например запрашивает курс валют с сайта ЦБ.

Интерфейс для клиента:

namespace ExcelAddIn.Services; public interface ICurrencyClient < public TaskGetExchangeRate(DateTime date); >

Класс клиента API сайта ЦБ. Парсим XML с курсами на нужную дату:

Добавляем нужные сервисы и создаем провайдер сервисов

using Microsoft.Extensions.DependencyInjection; using ExcelAddIn.Services; using System.Text; public class MyAddIn : IExcelAddIn < public static ServiceProvider ServiceProvider < get; private set; >public void AutoOpen() < Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); IServiceCollection Services = new ServiceCollection(); Services.AddHttpClient() .AddSingleton(); ServiceProvider = Services.BuildServiceProvider(); > public void AutoClose() < >>

И, наконец, определяем метод для формулы:

using ExcelAddIn.Services; using Microsoft.Extensions.DependencyInjection; namespace ExcelAddIn; public static class ExcelFunctions < [ExcelFunction] public static object ExchangeRate(double dateField) < ICurrencyClient currencyClient = MyAddIn.ServiceProvider.GetService(); DateTime date = dateField == 0 ? DateTime.Today : DateTime.FromOADate(dateField); if (ExcelAsyncUtil.Run(nameof(ExchangeRate), dateField, delegate < return currencyClient.GetExchangeRate(date) .GetAwaiter() .GetResult() ?? -1m; >) is not decimal requestResult) < return «Загрузка. «; >else if (requestResult < 0) < return ExcelError.ExcelErrorNA; >else < return Math.Round(requestResult, 2); >> >

Читайте также:
Программа шпион это вирус

Теперь формула =ExchangeRate( ) возвращает сегодняшний курс евро, а если сослаться на ячейку с датой в формате Excel, на нужную дату.

Сборка и установка

Чтобы собрать нашу надстройку в один файл со всеми зависимостями, нужно добавить в файл .csproj строки

dotnet build

и в папке binDebugnet6.0-windows забираем два собранных файла для 32 и 64-разрядных версий Excel

Эти файлы нужно поместить в папку %AppData%MicrosoftAddIns и в настройках Excel поставить галочку напротив нашего файла. Готово!

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

Источник: habr.com

Конвертируем XLSX в XLS

Конвертирование XLSX в XLS

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

Пути преобразования

Все методы преобразования XLSX в XLS можно разделить на три группы:

  • Онлайн-конвертеры;
  • Табличные редакторы;
  • Программы-конвертеры.
Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru