Работа с Excel в C#

C#   30 Июнь 2012  Автор статьи:  

Для работы с Excel в .NET будем использовать библиотеку Microsoft.Office.Interop.Excel. Для этого добавим ее в ссылки и будем обращаться к ней через сокращение Exc:

1
using Exc = Microsoft.Office.Interop.Excel;

Прообразом Excel является класс Application. С помощью него мы можем открыть класс Workbook, который является прообразом книги Excel. Внутри книги, как и в Excel существует листы. Для работы с ними существует класс Worksheet. Для того, чтобы работать с Excel нам нужно загружать листы из различных книг и обращаться к ячейкам.

1
2
3
4
5
6
7
8
9
10
11
private Exc.Application ObjExcel = new Exc.Application();
private Exc.Workbook ObjWorkBook;
private Exc.Worksheet ObjWorkSheet;
/*Функция для загрузки листа Excel
принимает на вход путь до книги
номер листа.*/

public void Load(string path, int sheetNumber)
{
    ObjWorkBook = ObjExcel.Workbooks.Open(path, 0, false, 5, "", "", false, Exc.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
    ObjWorkSheet = (Exc.Worksheet)ObjWorkBook.Sheets[sheetNumber];
}

Для того, чтобы сохранить изменения в листе будем использовать функцию Save:

1
2
3
4
public void Save()
{
    ObjWorkBook.Save();
}

Когда вы работаете с Excel, то создается процесс, если его не закрыть, то он так и останется висеть там, и не даст редактировать книгу, поэтому после окончания работы с книгой используйте функцию Close:

1
2
3
4
public void Close()
{
    ObjExcel.Quit();
}

Перейдем, наконец, к самым вкусным функциям:

1
2
3
4
5
6
7
8
9
10
11
12
13
/*cell - это номер ячейки в
стандартном Excel формате
Например A1*/

public string GetCell(string cell)
{
    Exc.Range range = ObjWorkSheet.get_Range(cell);
    return range.Text.ToString();
}
public void SetCell(string cell, string value)
{          
    Exc.Range range = ObjWorkSheet.get_Range(cell);
    range.Value = value;
}

Класс для работы с Excel готов. Если вам необходимо добавить другие функции, то используйте ObjWorkSheet для работы с листом. В нем содержится очень много возможностей для редактирования внешнего вида и других плюшек.

  • Predatore
  • alex

    Показали бы как открыть существующий файл и внести изменения сохранив.

    • alex

      а ну да… это оно и есть, сори

  • Дмитрий Пооль

    Отличная реализация через класс. Очень помогло, спасибо =)

Научиться программировать

  • на Delphi

  • на Java

  • на C++