- sith_ortodox
- Расстановка рамок.
- Формулы
- Выделение ячейки или диапазона ячеек
- Авто ширина и авто высота
- Получаем значения из ячеек
- Добавляем лист в рабочую книгу
- Добавление разрыва страницы
- Сохраняем документ
- Как открыть существующий документ Excel
- Комментарии
- Работа с Excel с помощью C# (Microsoft.Office.Interop.Excel): 11 комментариев
- 1 ответ 1
- Частичное решение проблемы
- Как отличить нужные сборки от всех остальных?
- UPDATE 08.01.2016 Окончательное решение проблемы
sith_ortodox
Active member
Добавление сборки Microsoft.Office.Interop.Excel
Пошаговое руководство, с помощью которого вы сможете добавить сборку Microsoft.Office.Interop.Excel.dll, предназначенную для работы с Excel файлами, в свой проект.
1. Перейдите в окно Solution Explorer.
2. Найдите пункт References и нажмите на нём правую кнопку мыши.
3. В появившемся контекстном меню выберите пункт Add Reference.
4. В окне Reference Manager выберите пункт Assemblies -> Extensions.
5. Найдите сборку Microsoft.Office.Interop.Excel, после чего выберите ее, установив рядом с ней галочку.
6. Нажмите на кнопку с надписью «OK», чтобы добавить сборку в проект.
Оставляю заметку по работе с Excel с помощью C#.
Привожу фрагменты кода, которые искал когда-то сам для работы с 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?
Visual Studio 2015 не видит Microsoft.Office.Interop при работе с Microsoft Office 2016. Сборка Microsoft Office 16.0 Object Library подключена. С пространством имён Microsoft.Office.Core всё нормально, но Microsoft.Office.Interop не видит вообще.
В чём может быть причина?
1 ответ 1
Частичное решение проблемы
Пока проблему удалось разрешить, но, к сожалению, пока частично.
Вследствие пока невыясненных причин, в процессе установки необходимые сборки не попали в глобальный кэш (GAC). Поэтому, для Excel необходимую сборку нашёл в папке пакета и подключил оттуда. Расположение папки:
Там же можно найти сборку и для Access.
Сборку для Outlook нашёл здесь:
Как отличить нужные сборки от всех остальных?
(Информация скорее для тех, кто в будущем, возможно, будет читать этот ответ)
Сборки предназначенные для работы с Office из .NET имеют характерное название:
То есть, для Excel сборка будет называться:
UPDATE 08.01.2016 Окончательное решение проблемы
В конечном итоге проблема полностью разрешилась сама собой путём установки «чистого» Microsoft Office 2016 «с нуля». Ранее было просто выполнено обновление с версии 2010 (видимо прошло некорректно).