Remkomplekty.ru

IT Новости из мира ПК
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Microsoft office interop excel c скачать

Работа с Excel с помощью C# (Microsoft.Office.Interop.Excel)

Оставляю заметку по работе с 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 столбца, и т.п. Пример:

Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.

.NetBlog — блог о программировании на C# .Net, и других, не мене интересных вещах.

Заметки о разработке ПО, советы по .net, SharePoint, SQL, архитектура приложений, литература по программированию. А также просто просто мысли о жизни и рассказы о том, что интересно автору, например путешествиях и вкусной еде 😉

суббота, 11 октября 2014 г.

COM Interop на примере работы с Excel

В предыдущем посте я писал о создании csv-файла и экспорта в него данных из ASP.NET и при этом, перечисляя разные варианты, не упомянул один совсем уже бредовый для web-приложения, но частенько очень подходящий для приложений десктопных. Это работа с установленным в системе COM-объектом c помощью технологии под названием COM Interop.

Читать еще:  Office 365 pro plus ключик

COM Interop используется в .Net для предоставления возможности взаимодействия управляемого .Net кода с COM-объектами. Тля того чтобы использовать какой-либо COM-объект из управляемого кода, необходимо создать сборку, содержащую информацию о типах содержащихся в COM-библиотеке, в совместимом с CRL формате.

В процессе работы приложения CLR создает для каждого COM-объекта внутренний объект, называемый Runtime Callable Wrapper (Вызываемая оболочка времени выполнения) или RCW, которая используется для создания COM-объекта и маршалинга данных между управляемой и неуправляемой средой. Также, RCW используется для мониторинга количества активных ссылок на COM-объект и его уничтожение, когда количество активных ссылок станет равным нулю. Выглядит это примерно так:

Обычно, если вы ходите создать CLR библиотеку для какого-либо компонента самостоятельно, то вам нужно использовать утилиту Tlbimp.exe, но для использования компонентов Office этого делать не нужно. Все необходимые библиотеки уже устанавливаются вместе с продуктом. Нам достаточно только добавить нужную сборку в проект.

И добавить соответствующую строку using в ваш код

using Excel = Microsoft.Office.Interop.Excel;

В качестве источника данных для примера будем использовать список массивов строк ( List ). В коде я написал комментарии, которые, думаю, будут вполне понятно объяснять что происходит.

Ну и пара нюансов с которыми вы можете столкнуться. В случае, если в COM-компоненте происходит исключение, которое вы не обработаете, то, как и положено, весть домен приложения будет аварийно закрыт. Вместе с RCW. В результате чего, COM-объект так и останется висеть в памяти. То есть, вполне реально получить вот такую картинку:

И нюанс второй. Код сверху не совсем правильный. Дело в том, что работая с COM Interop нужно быть предельно внимательным и осторожным, потому, что случайно можно создать COM-объект, совершенно об этом не подозревая. В данном случае, создается даже не один «случайный» объект, а несколько.
Во-первых, в строке xlsWB = App.Workbooks.Add(missingValue); создается объект App.Workbooks, который не присваевается переменной и, соответственно, не освобожается дл тех пор, пока не выгрузится домен приложения.
Во-вторых, такая же проблема в строке в строке: xlsSheet = (Excel.Worksheet)xlsWB.Worksheets.get_Item(1);

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

Ошибка загрузки библиотеки типов/DLL (Microsoft.Office.Interop.Excel.Application)

Я пытаюсь создать документ Excel через C#., когда я запускаю приложение, оно выдает следующую ошибку:

Невозможно привести объект COM типа ‘System.__ComObject’ к интерфейсу введите ‘Microsoft.Office.Interop.Excel.Application’. Эта операция не удалось, так как вызов QueryInterface компонента COM для интерфейс с IID ‘ <000208D5-0000-0000-C000-000000000046>‘ не удалось выполнить из-за к следующей ошибке: ошибка загрузки типа library/DLL. (исключение от HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)).

Он прекрасно работал до того, как я обновил Visual Studio с 2010 по 2012 год . Я также обновил Office с 2010 по 2013 год .

  • Нет никаких ошибок / предупреждений в окне вывода.
  • Microsoft.Office.Interop.Excel ссылка добавлена

1 Ответ

Я боролся с этой ошибкой в течение нескольких дней . Я наконец-то нашел решение.

Это происходит потому, что я установил Office 2013 вместо Office 2010, который я использовал со старой версией моего проекта. После того, как я обновил свой офис, проект больше не мог связать ссылку Excel.

Читать еще:  Как открыть файл microsoft office

Несмотря на то , что я ссылался на новую библиотеку Excel, которая является 15.0, это не сработало.

Вот что я сделал:

  • Удалите ссылку Excel (Microsoft.Office.Interop.Excel). Версия 15.0, в моем случае.
  • Установите Microsoft Excel (какую бы версию вы ни использовали. Версия 2010 для меня)
  • Добавьте ссылку Excel (более старую. Версия 14.0, в моем случае)

Похожие вопросы:

Библиотека типов объявляет классы, интерфейсы, константы и процедуры, предоставляемые приложением или библиотекой динамической компоновки (DLL). Библиотека типов обычно является ресурсом в файле.

Когда я использую следующий код я получаю ошибку компиляции #import #include Я получаю следующую ошибку: неустранимая ошибка C1083: не удается открыть тип файл.

Я пытаюсь построить старую версию приложения, которое состоит из проектов VC++, написанных в Visual Studio 2003. Мой OS — это Windows 7 Enterprise (64-разрядный). При попытке построить решение я.

У меня есть python .pyd то есть смешанный режим C++ DLL. DLL загружается нормально и загружает неуправляемые библиотеки DLL C++ без проблем, но когда он пытается загрузить .NET DLL, на которые.

Я пытаюсь использовать Mpi4py 1.3 с python 2.7 на Windows 7 64bits. Я загрузил установочную версию отсюда, которая включает OpenMPI 1.6.3, поэтому в установленном каталоге.

Я пытаюсь зарегистрировать свой DLL, используя следующую команду: C:WindowsMicrosoft.NETFramework64v2.0.50727>RegAsm.exe /tlb d:Certificated igicorpcertificate.dll Я использую машину x64 .

Я использовал для загрузки библиотеки DLL servicestack из https://github.com/ServiceStack/ServiceStack/downloads . Почему последние библиотеки DLL недоступны?

У меня есть приложение windows, включая некоторые консольные и c++ проекты. При создании приложения я получаю ниже упомянутой ошибки:- ошибка C1084: не удается прочитать файл библиотеки типов.

У нас не было проблем со старой версией (TeeChart.TChart.7), но недавно мы установили TeeChart.TChart.10 и начали иметь проблему в нашем приложении времени выполнения. Наша проблема заключается в.

Я пытаюсь использовать PyQt4 внутри MotionBuilder (Autodesk) (потому что я знаю qt очень хорошо, и мне не нравится motionbuilder GUI api). Я нахожусь на Windows 64 битах Я использую MotionBuilder.

Microsoft Office Interop (Excel Automation) in C# and VB.NET

Microsoft Office Interop (Excel Automation) is an option when creating/reading Excel files (XLS, XLSX, CSV) from C# or VB.NET application, but it has many drawbacks.

Issues, when using Microsoft Office Interop (Excel Automation) from C# or VB.NET, are that:

  • It requires a license for Microsoft Office on every client machine.
  • It requires that all client machines have the same version of Microsoft Excel installed.
  • It works only on Windows operating systems.
  • When using Automation, Microsoft Excel is loaded in the background, taking a few MB and loading a large number of files and DLLs.
  • Microsoft Office applications (including Excel) were designed as UI applications and, because of that, API is very slow. Generating a single worksheet with 200 rows and 100 columns takes 239.4 seconds on our test machine.
  • Microsoft doesn’t recommend using Excel Automation (or any Office Interop) on the server, see Considerations for server-side Automation of Office.
Читать еще:  Интернет магазины товары из китая бесплатная доставка

We are proud that our Excel .NET library is one of the best alternatives for Microsoft Office Interop (Excel Automation).

GemBox.Spreadsheet Free comes free of charge, while GemBox.Spreadsheet Professional is a commercial version that is licensed per developer. Find more information about supported features.

Better than Excel Automation

With Microsoft Office installed on most business desktops, it is tempting to use Microsoft Excel Interop. Look at the following table for good reasons not to do so:

Outperforming competition

When comparing and evaluating different XLSX, XLS, ODS, CSV reading and HTML, PDF and XPS reporting products, don’t forget the following considerations:

Plain and fair licensing

We don’t charge you additional server licenses. You can use our component for an unlimited number of projects (you don’t need to purchase additional «OEM licenses») and we don’t force you to purchase subscription packages.
Our licensing is very simple: every developer working with our component needs to be covered by developer license. We don’t care if it is a Windows or web application, how many servers you use, or if you have just one customer or millions of customers.

Performance

In the case of desktop application, you don’t want your user to wait 20 seconds for every single report. In the case of web application, you want your server to simultaneously support as many users as possible. Our test programs generate single XLS file with 200 rows and 200 columns of tabular data. Half of the values are strings and half are numbers, with 50% of cells having some cell style applied (font size and border). On our test machine the results are following:

  • GemBox.Spreadsheet takes 0.9 seconds.
  • Microsoft Excel automation takes 240 seconds (266 times slower).

Performance example is included in the GemBox.Spreadsheet Examples, so you are free to do the test yourself and see how our component performs with the tabular data that you require.

Clean and easy to use API

GemBox.Spreadsheet is a designed and developed to conform to Microsoft standards for .NET libraries. Caching also enables you to access the worksheet in a more natural way. For example, the same task of changing cell text orientation would be one line in GemBox.Spreadsheet:

and three lines in one of the competing products:

The latter is a hassle and forces you to think about Excel’s unique cell style limit. In other words, you will have to pay attention to not creating the same cell style again in a more complex worksheet.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×