Импорт данных из Microsoft Excel

Задача экспорта и импорта данных с 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.

Текст 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 столбцов и любое количество строк <= 50.
      private int ExportExcel()
      {
         // Выбрать путь и имя файла в диалоговом окне
         OpenFileDialog ofd = new OpenFileDialog();
         // Задаем расширение имени файла по умолчанию (открывается папка с программой)
         ofd.DefaultExt = "*.xls;*.xlsx";
         // Задаем строку фильтра имен файлов, которая определяет варианты
         ofd.Filter = "файл Excel (Spisok.xlsx)|*.xlsx";
         // Задаем заголовок диалогового окна
         ofd.Title = "Выберите файл базы данных";
         if (!(ofd.ShowDialog() == DialogResult.OK)) // если файл БД не выбран -> Выход
            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.

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

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

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