12
Microsoft Visual Studio C# (Часть 7) 1 Введение в разработку Windows приложений с использованием COM объектов Компонентная модель объектов или технология COM (Component Object Model) предоставляет возможность одной программе (клиенту) работать с объектом другой программы (сервером). Технология СОМ упрощает создание программ, обеспечивая их совместимость в разных версиях платформы Windows и относительную независимость от языка программирования (компоненты СОМ могут создаваться на разных языках и далее внедряться в приложении путем использования стандартного интерфейса). Обобщенно, COM приложение может содержать от одного до нескольких внедренных объектов, а каждый объект может содержать один или несколько интерфейсов, каждый из которых содержит методы объекта. Внешняя программа, используя методы объекта, выполняет необходимые действия по обмену данными с сервером, не беспокоясь об особенностях внутренней реализации. Сервером может быть либо исполняемый файл, либо библиотека. Основным недостатком использования СОМ объектов являлась необходимость хранения и регистрации в системном реестре всей информация обо всех COM компонентах. Отказ от регистрации экземпляра компонента в реестре и помещение его в доступное место или в каталог приложения, частично решает проблемы связанные с использованием реестра (отпадает необходимость в регистрации компонента, присвоении ему глобальных идентификаторов GUID и поиска по ним исполняемого файла или библиотеки компонента и т.п.). Реализацией данного подхода в .NET является технология сборок. Сборка (assembly) - это совокупность файлов, устанавливаемых на компьютер и необходимых для выполнения программного кода приложения (среда выполнения - NET Runtime Framework не входит в понятие сборки). В большинстве случаев создаются одни файловые сборки, состоящие из одного ЕХЕ или DLL- файла. Среда выполнения (NET Runtime Framework) работает не с инструкциями (командами) для процессоров, а с командами виртуальной машины или промежуточным кодом - Microsoft Intermediate Language (MSIL), который компилируется и выполняется средой. Поэтому сборка, как минимум, имеет один файл кода MSIL, в котором описывается сборка, функциональность входящих в нее классов (так называемые метаданные) и непосредственно программные инструкции. Метаданные являются частью сборки, поэтому в документации сборки называются самодокументируемыми. Кроме того, в сборку могут входить файлы ресурсов, графические файлы, дополнительные EXE файлы, DLL- файлы. Программы на языке MSIL создают так называемый "управляемый код" (managed code). Это означает, что общеязыковая исполняющая среда CLR (Common Language Runtime), которая является частью NET Runtime Framework, не просто преобразует MSIL в машинные инструкции, а выполняет эти действия с учетом внешних установок (Например, Модуль №1 программы может задать собственный набор прав и набор прав для Модуля №2). Сборка является минимальным объектом .NET, в котором задаются привилегии, и производится контроль версии. Сборки, которые находятся в каталоге приложения (или в его подкаталоге) получили названия закрытых (private) сборок, а сборки, хранящиеся в глобальном кэш сборок (Global Assembly Cache, GAC) общих (shared). Для того, чтобы какой либо объект COM мог быть использован в приложении, он должен быть оформлен как сборка. При добавлении компонента COM в каталоге приложения создается новый экземпляр закрытой сборки (обычно одна или несколько библиотек .dll) и формируются ссылки на объекты сборки. Если мы создадим новый проект и вызовем Обозреватель решений, то в дереве структуры решения можно видеть (рис. 1), что наш проект уже состоит из нескольких составляющих файлов и ссылок на сборки. Эти файлы будут использоваться для построения результирующей сборки приложения.

Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

1

Введение в разработку Windows приложений с использованием COM объектов

Компонентная модель объектов или технология COM (Component Object Model) предоставляет возможность одной программе (клиенту) работать с объектом другой программы (сервером).

Технология СОМ упрощает создание программ, обеспечивая их совместимость в разных версиях платформы Windows и относительную независимость от языка программирования (компоненты СОМ

могут создаваться на разных языках и далее внедряться в приложении путем использования стандартного интерфейса). Обобщенно, COM приложение может содержать от одного до нескольких внедренных объектов, а

каждый объект может содержать один или несколько интерфейсов, каждый из которых содержит методы объекта. Внешняя программа, используя методы объекта, выполняет необходимые действия по

обмену данными с сервером, не беспокоясь об особенностях внутренней реализации. Сервером может быть либо исполняемый файл, либо библиотека. Основным недостатком использования СОМ объектов являлась необходимость хранения и регистрации

в системном реестре всей информация обо всех COM компонентах. Отказ от регистрации экземпляра компонента в реестре и помещение его в доступное место или в каталог приложения, частично решает

проблемы связанные с использованием реестра (отпадает необходимость в регистрации компонента, присвоении ему глобальных идентификаторов GUID и поиска по ним исполняемого файла или библиотеки компонента и т.п.). Реализацией данного подхода в .NET является технология сборок.

Сборка (assembly) - это совокупность файлов, устанавливаемых на компьютер и необходимых для выполнения программного кода приложения (среда выполнения - NET Runtime Framework не входит в

понятие сборки). В большинстве случаев создаются одни файловые сборки, состоящие из одного ЕХЕ или DLL-файла. Среда выполнения (NET Runtime Framework) работает не с инструкциями (командами) для

процессоров, а с командами виртуальной машины или промежуточным кодом - Microsoft Intermediate Language (MSIL), который компилируется и выполняется средой. Поэтому сборка, как минимум, имеет

один файл кода MSIL, в котором описывается сборка, функциональность входящих в нее классов (так называемые метаданные) и непосредственно программные инструкции. Метаданные являются частью сборки, поэтому в документации сборки называются самодокументируемыми. Кроме того, в сборку

могут входить файлы ресурсов, графические файлы, дополнительные EXE файлы, DLL-файлы. Программы на языке MSIL создают так называемый "управляемый код" (managed code). Это означает,

что общеязыковая исполняющая среда CLR (Common Language Runtime), которая является частью NET Runtime Framework, не просто преобразует MSIL в машинные инструкции, а выполняет эти действия с учетом внешних установок (Например, Модуль №1 программы может задать собственный набор прав и

набор прав для Модуля №2). Сборка является минимальным объектом .NET, в котором задаются привилегии, и производится контроль версии.

Сборки, которые находятся в каталоге приложения (или в его подкаталоге) получили названия закрытых (private) сборок, а сборки, хранящиеся в глобальном кэш сборок (Global Assembly Cache, GAC) общих (shared). Для того, чтобы какой либо объект COM мог быть использован в приложении, он

должен быть оформлен как сборка. При добавлении компонента COM в каталоге приложения создается новый экземпляр закрытой сборки (обычно одна или несколько библиотек .dll) и формируются ссылки

на объекты сборки. Если мы создадим новый проект и вызовем Обозреватель решений, то в дереве структуры решения можно видеть (рис. 1), что наш проект уже состоит из нескольких составляющих файлов и ссылок на

сборки. Эти файлы будут использоваться для построения результирующей сборки приложения.

Page 2: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

2

Рисунок 1. Окно модуля приложения и окно «Обозреватель решений»

Узел Ссылки в окне Обозреватель решений содержит имена, совпадающие с именами, определенными в директивах using файла кода проекта - *.cs. В файле решения - *.csproj, можно найти код, который наглядно показывает, что наше решение уже будет включать в себя семь библиотек,

которые необходимы для выполнения (в принципе, это тоже файлы shared сборки для Microsoft Visual C#).

<ItemGroup> <Reference Include="System" />

<Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" />

<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="Microsoft.CSharp" /> <Reference Include="System.Data" />

<Reference Include="System.Deployment" /> <Reference Include="System.Drawing" />

<Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> </ItemGroup>

<ItemGroup>

Для того, чтобы посмотреть расположение библиотек, дважды кликнем по имени узла System в ветви Ссылки окна Обозреватель решений. Внизу панели Visual Studio отобразится имя библиотеки (рис. 2)

Page 3: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

3

Рисунок 2. Библиотеки сборки

Будем использовать так называемое "раннее связывание", когда COM объекты добавляются в решение и в целевой сборке присутствуют их dll файлы.

Вначале добавим файлы библиотек для Word и Excel. Для этого выбираем мышкой в дереве структуры решения узел Ссылки. Далее, правым кликом мышки входим в контекстное меню и выбираем пункт Добавить ссылку... При его выборе появляется диалоговое окно с закладками (рис. 3).

Рисунок 3. Окно «Добавить ссылку»

.NET - содержит все доступные .NET компоненты.

COM - содержит все доступные COM компоненты.

Page 4: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

4

Проекты - содержит все компоненты многократного использования, созданные разработчиком

(совокупность проектов решения). Начиная с Net 2.0 корпорация Microsoft предложила несколько .Net сборок взаимодействия с

приложениями Microsoft Office XP (в терминологии Майкрософт - primary interop assembly, PIA). В них содержится описание наиболее часто используемых библиотек (для Microsoft Office начиная с XP и

более поздних версий). PIA несколько облегчают взаимодействие между управляемым кодом и СОМ объектами Office и позволяют выполнять неуправляемый код (СОМ) из управляемого кода (.NET) при помощи Microsoft .NET Framework и общеязыковой среды выполнения. СОМ сборки взаимодействия

позволяют управляемым приложениям привязываться к неуправляемым типам во время компиляции и затем передавать в общеязыковую среду выполнения информацию о том, как в процессе выполнения

должны группироваться неуправляемые типы. Начиная с VS 2008 Microsoft.Office.Interop.Excel и Microsoft.Office.Interop.Word .NET сборки уже представлены без посредников.

Итак, для получения доступа к COM объектам, начиная с Visual Studio 2008, нам потребуются только ссылки Microsoft.Office.Interop.Excel и Microsoft.Office.Interop.Word - все остальное выполняют

библиотеки, ассоциированные с этими ссылками (рис. 4).

Рисунок 4. Добавление COM интерфейсов

Далее необходимо ввести алиасы для Excel и Word COM объектов: using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word; Введение алиаса позволяет сократить количество кода при обращении к объектам.

Page 5: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

5

Работа с Com сервером Excel

Создадим приложение, вид окна которого представлен на рисунке 5.

Рисунок 5. Окно приложения

Объекты, которыми оперирует сервер Excel, несколько десятков. Мы будем рассматривать лишь

основные, которые непосредственно требуются для обмена информацией приложения и сервера. Все объекты имеют иерархическую структуру. Сам сервер - объект Application или приложение Excel,

может содержать одну или более книг, ссылки на которые содержит свойство Workbooks. Книги - объекты Workbook, могут содержать одну или более страниц, ссылки на которые содержит свойство Worksheets или (и) диаграмм - свойство Charts. Страницы - Worksheet, содержать объекты ячейки или

группы ячеек, ссылки на которые становятся доступными через объект Range. Ниже в иерархии: строки, столбцы... Аналогично и для объекта Chart серии линий, легенды...

Обратим внимание на то, что, интерфейс C# вместо понятия ячейки использует объекты Range (выбранная ячейка или группа ячеек). Отметим также группу объектов ActiveCell, ActiveChart и ActiveSheet, относящихся к активному окну (расположенному поверх других). Они, по набору свойств и

методов, полностью аналогичны объектам Range, Chart и Sheet и, в ряде случаев, просто облегчают получение ссылки.

Немного обособленно от этой иерархической структуры объектов находится свойство Windows объекта Excel.Application, предназначенное для управления окнами сервера Excel. Свойство Windows содержит набор объектов Window, которые имеют, в свою очередь, набор свойств и методов для управления

размерами, видом, масштабом и упорядочиванием открытых окон, отображением заголовков, цветами и т.д. Эти же возможности доступны и для свойств и методов объекта Excel.Application - ActiveWindow

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

функции проекта. Определим глобально основной объект Excel.Application и, сразу, хотя он и понадобится нам значительно позже - объект Excel.Window:

namespace WindowsFormsApplication1 { public partial class Form1 : Form

Page 6: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

6

{ private Excel.Application excelapp; private Excel.Window excelWindow; public Form1() { InitializeComponent(); }

Запуск Excel из приложения на C#

Следующий код позволяет выполнять запуск Excel: excelapp = new Excel.Application(); excelapp.Visible=true;

Создание рабочих книг

Вторым в иерархии объектов Excel.Application является объект Workbook. Информация об объектах Workbook хранится в виде ссылок на открытые рабочие книги в свойстве Workbooks. Книга в приложение может быть добавлена только через добавление ссылки в совокупность Workbooks, а

ссылка на открытую книгу может быть получена различным образом (по имени, номеру, как ссылка на активную книгу).

Рассмотрим создание рабочей книги из 3х листов

excelapp = new Excel.Application(); excelapp.Visible=true; excelapp.SheetsInNewWorkbook=3; excelapp.Workbooks.Add(Type.Missing); Свойство SheetsInNewWorkbook возвращает или устанавливает количество листов, автоматически помещаемых Excel в новые рабочие книги.

В качестве параметра методу Add можно передать имя шаблона рабочей книги, однако, в этом случае

мы привязываемся к пути, по которому инсталлированы приложения MicrosoftOffice. В примере использован другой способ: Type - класс декларации типов, Type.Missing - отсутствие значения. Некоторые методы Excel принимают необязательные параметры, которые не поддерживаются в C#. Для

решения этой проблемы в коде на C# требуется передавать поле Type.Missing вместо каждого необязательного параметра, который является ссылочным типом (reference type). Кроме того, (этого нет

в документации) при задании в методе ADD чисел от 1 до 7 будет создана книга с одним листом (1, 6), диаграмма(2), макрос (3, 4) и книга с четырьмя листами (5). Из других свойств отметим свойство TemplatesPath. С его помощью, зная имя файла шаблона, можно

напрямую задавать имя шаблона (правда, в этом нет необходимости, если мы не хотим использовать, например, свой собственный шаблон). Свойство StartupPath возвращает путь к папке, которая содержит

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

Page 7: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

7

Открытие существующего документа

Добавим в область глобального определения переменных еще две строчки, определив массив ссылок на созданные книги и на объект - конкретную книгу.

private Excel.Workbooks excelappworkbooks; private Excel.Workbook excelappworkbook;

Для открытия существующего документа основным методом является метод Open набора Excel.Workbooks. Для открытия текстовых файлов как рабочих книг, баз данных, файлов в формате

.XML, используются методы OpenText, OpenDatabase или OpenXml.

Рассмотрим открытие файла Расчет.xls, который находится в папке C:\1 excelapp = new Excel.Application(); excelapp.Visible=true; excelapp.Workbooks.Open(@"C:\1\Расчет.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); Метод Open имеет много параметров. Но, большинство из них, как видно из примера, необязательны.

Рассмотрим параметры метода Open: Workbook_object.Open(

FileName, //Имя открываемого файла файла UpdateLinks, //Способ обновления ссылок в файле ReadOnly, //При значении true открытие только для чтения

Format, //Определение формата символа разделителя Password, //Пароль доступа к файлу до 15 символов

WriteResPassword, //Пароль на сохранение файла IgnoreReadOnlyRecommended, //При значении true отключается вывод //запроса на работу без внесения изменений

Origin, //Тип текстового файла Delimiter, //Разделитель при Format = 6

Editable, //Используется только для надстроек Excel 4.0 Notify, //При значении true имя файла добавляется в //список нотификации файлов

Converter, //Используется для передачи индекса конвертера файла //используемого для открытия файла

AddToMRU //При true имя файла добавляется в список //открытых файлов )

Page 8: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

8

Вывод информации в ячейки Excel

1. Вывод без форматирования

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

области определения переменных напишем: private Excel.Sheets excelsheets; private Excel.Worksheet excelworksheet; Обратим внимание на разницу задания всех и рабочих листов книги.

Аналогичного определения для ячеек и ячейки мы задать не можем, так как отдельно данные объекты как самостоятельные в C# отсутствуют, а есть понятие области выделенных ячеек, которая может включать одну или более ячеек, с которыми можно выполнять действия. Поэтому для ячеек, с которыми

выполняется действие, введем следующее определение:

private Excel.Range excelcells;

Для выделения используется метод get_Range, который позволяет выделить группу ячеек через

задание угловых ячеек диапазона, и есть возможность обратиться непосредственно к свойствам Rows и

Cells - в любом случае выделенным будет диапазон ячеек.

excelsheets=excelappworkbook.Worksheets; //Получаем ссылку на лист 1 excelworksheet=(Excel.Worksheet)excelsheets.get_Item(1); //Выделение группы ячеек excelcells=excelworksheet.get_Range("A1","С10"); //Тоже excelcells=excelworksheet.get_Range("A1","С10").Cells; excelcells=excelworksheet.get_Range("A1","С10").Rows; excelcells=excelworksheet.get_Range("A1","С10").Cells; //Одну ячейку excelcells=excelworksheet.get_Range("A1","A1"); excelcells=excelworksheet.get_Range("A1",Type.Missing); //Десять строк с 1 по 10ю excelcells=(Excel.Range)excelworksheet.Rows["1:10",Type.Missing]; //Три столбца excelcells=(Excel.Range)excelworksheet.Columns["A:C",Type.Missing]; //Одну строку excelcells=(Excel.Range)excelworksheet.Rows["1",Type.Missing]; //Один столбец excelcells=(Excel.Range)excelworksheet.Columns["C",Type.Missing];

Page 9: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

9

Еще один способ определения выбранных ячеек - использование метода get_Offset(x,y) объекта Range, возвращающего объект Range, отстоящий от заданной ячейки на заданное количество строк и столбцов, считая от левого верхнего угла. Это позволяет работать с ячейками, позиция которых заданы

относительно выбранной ячейки или группы ячеек.

excelcells=excelworksheet.get_Range("A1",Type.Missing); .... выполняем действие с ячейкой A1 excelcells=excelcells.get_Offset(0,1); .... выполняем действие с ячейкой B1 excelcells=excelcells.get_Offset(1,-1); .... выполняем действие с ячейкой A2 Следует отметить и еще одну особенность группы свойств Excel.Application. Как только мы получили

ссылку на конкретный объект (книгу, лист, группу ячеек, диаграмму) их можно сделать активными, применив к ним метод Activate(). С этого момента они доступны через соответствующие свойства

ActiveWorkbook, ActiveSheet, ActiveChart, ActiveCell. Кроме того, при выполнении действий с конкретным объектом, он автоматически становится активным и, действия с ним могут далее выполняться с использованием перечисленных свойств.

excelappworkbook=excelappworkbooks[1]; excelappworkbook.Activate(); excelsheets=excelapp.ActiveWorkbook.Worksheets; //Код аналогичен примеру использования метода get_Offset excelworksheet=(Excel.Worksheet)excelsheets.get_Item(1); excelcells= excelworksheet.get_Range("A1",Type.Missing); .... выполняем действие с ячейкой A1 excelcells=excelapp.ActiveCell.get_Offset(0,1); .... выполняем действие с ячейкой B1 excelcells=excelapp.ActiveCell.get_Offset(1,-1); .... выполняем действие с ячейкой A2

Возможности объединения ячеек гораздо богаче - можно использовать объединения областей, группу областей, определение границ выделенных ячеек и т.п., однако, для большинства практических задач

вполне достаточно перечисленных выше методов. Выделенные ячейки далее могут быть объединены и с ними действия могут выполняться как с одной

ячейкой. Для этого используется метод Merge: excelcells.Merge(Type.Missing);

Точно также можно использовать и свойство Excel.Application Selection. То есть, объект может быть определен как селектированный и, далее, для ссылки на объект использоваться свойство Selection.

В следующем примере объединяется группа ячеек в одну без ссылки на выделенный объект.

excelcells=excelworksheet.get_Range("A1","C10"); excelcells.Select(); ((Excel.Range)(excelapp.Selection)).Merge(Type.Missing);

Рассмотрим пример вывода данных в ячейки Excel

Page 10: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

10

excelapp = new Excel.Application(); excelapp.Visible = true; //Получаем набор ссылок на объекты Workbook excelappworkbooks = excelapp.Workbooks; //Создаем книгу excelapp.Workbooks.Add(Type.Missing); //Получаем массив ссылок на листы выбранной книги excelsheets = excelapp.ActiveWorkbook.Worksheets; //Получаем ссылку на лист 1 excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1); //Выделение группы ячеек excelcells = excelworksheet.get_Range("A1", Type.Missing); //Выводим число excelcells.Value2 = 1; //Выводим текст excelcells=excelworksheet.get_Range("A2",Type.Missing); //Выводим значение текстовую строку excelcells.Value2="Лист 2"; excelcells.Font.Size=20; excelcells.Font.Italic=true; excelcells.Font.Bold=true; //Вывод в ячейки используя номер строки и столбца Cells[строка, столбец] for(int n=1; n <= 10; n++) { excelcells = (Excel.Range)excelworksheet.Cells[3,n]; //Выводим числа excelcells.Value2=n.ToString(); }

Рассмотрим пример вывода данных в ячейки Excel из таблицы dataGridView

excelapp = new Excel.Application(); excelapp.Visible = true; //Получаем набор ссылок на объекты Workbook excelappworkbooks = excelapp.Workbooks; //Создаем книгу

Page 11: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

11

excelapp.Workbooks.Add(Type.Missing); //Получаем массив ссылок на листы выбранной книги excelsheets = excelapp.ActiveWorkbook.Worksheets; //Получаем ссылку на лист 1 excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1); //Вывод в ячейки используя номер строки и столбца Cells[строка, столбец] int x,y; x=dataGridView1.RowCount; y=dataGridView1.ColumnCount; for (int m = 1; m <=x; m++) { for (int n = 1; n <=y; n++) { excelcells = (Excel.Range)excelworksheet.Cells[m, n]; //Выводим значения excelcells.Value2 = dataGridView1.Rows[m-1].Cells[n-1].Value; } }

2. Форматированный вывод

При выводе информации часто бывает необходимо изменить формат ячейки, например, задать числовой

формат, это можно сделать следующим образом: //Очищаем содержимое ячейки и формат excelcells.Clear(); //Задаем формат excelcells.NumberFormat="### ##0,00"; //Выводим значение, которое будет отформатировано excelcells.Value2=100000.5; Результат будет зависеть от системных установок Windows (Пуск|Настройка|Панель управления|Язык и

стандарты). Для формата даты и установки общего формата:

excelcells.Clear(); excelcells.NumberFormat="Д ММММ, ГГГГ"; excelcells.Value2="01.11.2004 - 14.07.2007г.";

И последнее - возврат к общему формату.

excelcells.Clear(); excelcells.NumberFormat="Общий";

Page 12: Windows COM - edu.semgu.kz€¦ · могут создаваться на разных языках и далее внедряться в приложении путем использования

Microsoft Visual Studio C# (Часть 7)

12

Ссылки на источники

1. Работа с Com сервером Excel – http://wladm.narod.ru/C_Sharp/comexcel.html

2. Работа с Com сервером Word – http://wladm.narod.ru/C_Sharp/comword.html