Работа с Excel с помощью C# (Microsoft.Office.Interop.Excel)
Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.
Наработки очень пригодились в работе для формирования отчетности.
Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.

Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.
Далее создаем псевдоним для работы с Excel:
using Excel = Microsoft.Office.Interop.Excel;
Расстановка рамок.
Расставляем рамки со всех сторон:
Цвет рамки можно установить так:
Выравнивания в диапазоне задаются так:
Формулы
Определим задачу: получить сумму диапазона ячеек A4:A10.
Для начала снова получим диапазон ячеек:
Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);
Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:
string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.
Выделение ячейки или диапазона ячеек
Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:
Авто ширина и авто высота
Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:
Получаем значения из ячеек
Чтобы получить значение из ячейки, используем такой код:
Добавляем лист в рабочую книгу
Чтобы добавить лист и дать ему заголовок, используем следующее:
Добавление разрыва страницы
Сохраняем документ
Как открыть существующий документ Excel
Комментарии
При работе с Excel с помощью C# большую помощь может оказать редактор Visual Basic, встроенный в Excel.
Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.
Далее заходим в редактор Visual Basic и смотрим код, который туда записался:

В данном макросе записаны все действия, которые мы выполнили во время его записи. Эти методы и свойства можно использовать в C# коде.
Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:
Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.
Чтобы выбрать лист, выполните sheetData.Select(Type.Missing); где sheetData это нужный лист.
Работа с Excel с помощью C# (Microsoft.Office.Interop.Excel): 11 комментариев
Как прочитать данные из ячейки excel,и записать эти данные в sql server?
Добрый день.
Отправил на почту.
Добрый день.
А мне можно тоже самое?)
Здравствуйте, как изменить цвет диаграммы при работе в C#?(круговая диаграмма)
Вы можете записать макрос на изменение цвета в Visual Basic и списать получившийся код. Затем использовать его в своей программе.
Здравствуйте.
Можете подсказать, как «заставить» приложение работать с разными версиями MS Office? На машине разработчика стоит Office 2010, при запуске на машине с 2003-м — увы — ошибка.
Microsoft.Office.Interop.Excel это довольно старый способ работать с Excel документами.
Что касается версии Office 2003, то он использует совсем другой драйвер.
Соответственно версия Microsoft.Office.Interop.Excel.dll нужна старая, плюс драйвер microsoft jet 4.0, который на новых системах (Win 8, 10) работает неправильно.
Единственное, что могу посоветовать, так это скачать Microsoft Office Compatibility Pack для Office 2003, чтобы научить его открывать xslx документы.
А в своей программе использовать не Interop.Excel, а библиотеку EPPlus. Она работает с excel документами, используя технологию OpenXml и не надо париться по поводу драйверов.
Код будет очень похож на Interop.Excel-ный.
Очень полезная штука, спасибо за удобное представление информации на Вашем сайте!
Скажите пожалуйста, как прочитать данные из ячейки Excel и записать их в SQL Server?
Export model list to Excel in C# (Using Interop) — The easy way!
![]()
For reference we are going to use Microsoft.Office.Interop.Excel packge.
In this demo , I have created a c# console app and to separate Excel Export Operation I have created another class called excelexport.cs
To work on I need a model class and a list of objects to that model. So I have created a Model folder and inside that folder I have created a class called UserManager.cs
But I need to generate a list of objects for this class as I am not using any database for this. So I have created a seed method to generate a sets of dummy data.
So for now my UserManager class looks like this.
Our data is ready and now we need to make our Datatable converter to convert our list to a data table instance.
You can also gather some knowledge about Interop and how to access all the objects. interop and Reflection can help you I think.
I am going to make this as a generic but you can typed as your need. (Also read all the comments in the code, I have tried to write what’s happening on each line).
So as of now our function look like this
Now the fun part begins. To export this datatables into excel object we have to add office interop reference to our project.
Microsoft.Office.Interop.Excel is part of Dotnet assemblies so you just need to attach to your project.
Reference > Assemblies > Extentions > Search Excel > Add the latest version
Now turn over to ExcelExport.cs file and write a static method. I have named it as Generate Excel And take two parameter. The first one is the data table instance that we have just created and a path that we are going to save our excel file(We are going to deal with it later) ..
We are going to use datasets and add our datatable instance to its Table property. If you want to know more about DataSet you can find it here.
after this the process is quite simple. We have create a excel app , excel worksheet, workbook and add all of our row and colums to it.
To keep it short we have to renamed this as
Now its time for save. So for this we can save it as its default excel saved location that would be -> c:/users/
but for this I have choose to save it my custom location
So our excel export class looks like this
Now we have to call this method from our main method. To make this prettier I have included some operation to it.
How to reference Microsoft.Office.Interop.Excel dll?
I had developed a system that deals with excel sheets in 2006 using MS VS 2005. Now, I can not use the same reference with MS VS 2012.
7 Answers 7
Use NuGet (VS 2013+):
The easiest way in any recent version of Visual Studio is to just use the NuGet package manager. (Even VS2013, with the NuGet Package Manager for Visual Studio 2013 extension.)
Right-click on «References» and choose «Manage NuGet Packages. «, then just search for Excel.