Letysite.ru

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

C работа с word

Записная книжка программиста-новичка, C#, SQL, PHP и все-все-все

Я ведь это уже делал, но хрен теперь найдешь тот кусок кода, гуглим снова… Где бы найти простое и понятное руководство для начинающего, а не тонкости для мега-гуру?

Навигация по записям

Работаем с MS Word из C#, часть 1. Открываем шаблон, ищем текст внутри документа

Задача: вывести данные в документ Word. На самом деле это очень большая и необъятная тема, примерно как сам Word, 90% возможностей которого не используются обычными пользователями. Сузим до более простой и чаще встречающейся на практике задачи, с которой в своей время пришлось столкнуться мне самому: надо вывести красивую справку, договор, отчет или иной документ Word с добавлением данных из кода C#. Само собой должны поддерживаться версии Word до 2007, так что о новых форматах файлов придется забыть.

Для начала вспомним, что в Word есть такая замечательная вещь как шаблоны. Соответственно большую часть сложного оформления можно вынести в них и из кода открывать шаблон и вставлять данные в нужные места. Для начала ограничимся простыми строками (типовая задача в крупных предприятиях — вставка дат, цифр, фио и тому подобных вещей, договор на сумму такую-то, от такой-то даты с фио таким-то с параметрами объекта такими-то).

Задача на текущую статью: открыть из кода C# шаблон Word и что-то в него вставить. Шаблон в формате .dot приготовим заранее, в том же самом ворде. Для связи с ним будем использовать механизм COM Interoperability (сокращенно Interop), то есть запускать отдельный exe-процесс самого Word и через специальный интерфейс управлять им. Интерфейсы слава богу есть и находятся они в специальных библиотеках, поставляемых вместе с Office, но документация по ним крайне невнятная, поведение местами очень странное и не логичное. В версиях Visual Studio 2010 и выше возможности программирования Office расширены, но текущее руководство действительно и для 2008 студии.

1. Подключить нужные библиотеки
2. Открыть шаблон Word
3. Найти в нем нужное место
4. Вставить в него строку с информацией

1. Проект в студии у нас уже должен быть. В разделе Ссылки/References кликаем правой кнопкой, идем в «Добавить ссылку» и ищем Microsoft.Office.Interop.Word. В параметрах добавленной библиотеки ставим true в Копировать локально/Copy local, так как библиотеку надо копировать вместе с исполняемыми файлами проекта.

В код добавляем соответствующие using

2. Теперь вам предстоит провести много времени с замечательным интерфейсом Word, который представляет сам текстовый редактор и его потроха в виде разнообразных обьектов. Сейчас важны два — Application и Document. Переменные для них по ряду не очевидных причин лучше объявлять через интерфейсы.

Так же почти все функции Word требуют объектных параметров, даже если внутри них сидят простые строки и логические значения, так что лучше заранее сделать несколько оберток

Чтобы запустить Word и открыть в нем шаблон с диска (путь известен), потребуется примерно такой код

Принципиально важны два момента

1. Мы создаем неуправляемый ресурс, который не соберет сборщик мусора — отдельный процесс в памяти с приложением Word, если мы его не закроем и не выведем на экран, он так и останется там висеть до выключения компьютера. Более того такие ворды могут накапливаться незаметно для пользователя, программист-то еще прибьет их вручную. Заботиться о высвобождения неуправляемого ресурса должен программист.

2. По умолчанию Word запускается невидимым, на экран его выводим мы.

Для начала рассмотрим самый простой и примитивный вариант — поиск и замена строки в документе Word. Некоторые программисты так и работают — ставят в шаблон текстовую метку вроде @@nowDate и заменяют ее на нужное значение.

Пришло время познакомится с фундаментом работы с Word — великим и ужасным объектом Range. Его суть сложно описать словами -это некоторый произвольный кусок документа, диапазон (range), который может включать в себя все что угодно — от пары символов, до таблиц, закладок и прочих интересных вещей. Не стоит путать его с Selection — куском документа, выделенным мышкой, который само собой можно конвертировать в Range. Соотвественно нам надо получить Range для всего документа, найти нужную строку внутри него, получить Range для этой строки и уже внутри этого последнего диапазона заменить текст на требуемый. И не стоит забывать, что документ может иметь сложную структуру с колонтитулами и прочей ересью, возможный универсальный метод для замены всех вхождений данной строки:

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

Даже если нам надо найти (и например отформатировать) именно строку с текстом внутри документа, лучше всего выдать наружу найденный Range и уже с ним производить разные злодеяния. Получим примерно такой метод:

Простейшее решение проблемы уникальности текста (нужно нам найти Range слова Word, но внутри всего документа оно встречается десятки раз) — искать строку внутри строки, сначала найти уникальную строку, потом не уникальную внутри нее, неэстетично, но дешево, надежно и практично.

Если строку надо просто заменить, то сойдет простейшее

Но так как Range является универсальный контейнером для любого куска документа Word, то его возможности неизмеримо шире, часть их будет рассмотрена в дальнейших заметках.

Если нам надо просто встать в начало документа (и что-то вставить уже туда):

Сохранить документ на диск можно следующим образом

Работа с документами Microsoft Word, Часть 1. Программное создание документа: Справочник по C#

Большинству операций, выполняемых программным способом, есть эквиваленты в пользовательском интерфейсе (UI), доступные как команды в меню и на панелях инструментов. Также существует нижележащая архитектура, обеспечивающая поддержку команд, выбираемых из UI. Всякий раз, когда вы создаете новый документ Word, он базируется на каком-либо шаблоне; расширение файлов шаблонов «.dot», а файлы документов – «.doc». Шаблон Word может содержать текст, код, стили, панели инструментов, элементы автотекста, комбинации клавиш для быстрого доступа к командам. Новый документ связывается с шаблоном и получает полный доступ к его элементам. Если вы не указываете конкретный шаблон, новый документ создается на основе стандартного шаблона «Normal.dot», который устанавливается при установке Word).

Для работы с приложением Microsoft Word в .NET, используется объект Application, который является предком всех остальных объектов. Получив на него ссылку, вы можете работать с его методами и свойствами. Этот объект предоставляет большой набор методов и свойств, позволяющих программным путем управлять Microsoft Word. Код инициализации нового объекта Application, представлен ниже.

Чтобы открыть существующий документ или создать новый, необходимо создать новый объект Document.

Выполняя какую-либо операцию в пользовательском интерфейсе Word (например, добавляя верхний колонтитул), вы выделяете соответствующую секцию, используя объект «Selection», определяющий текущую позицию «невидимого» курсора и применяете к ней новый параметр форматирования с использованием объекта «Range». Данный объект представляет область в документе и может включать в себя все что угодно – от пары символов, до таблиц, закладок и много другого. Вы не ограничены одним объектом «Range» – в одном документе можно определить сразу несколько таких объектов.

Читать еще:  Опишите инструменты окна word

Чтобы добавить текст в документ, необходимо указать позицию для вставки и сам текст.

Так же вы можете применить к тексту определенный стиль.

В классе Microsoft.Office.Interop.Word.Document, присутствует коллекция «Tables», которая позволяет добавить таблицу в документ с использованием метода Add.

Для функционирования описанного выше кода, необходимо добавить к текущему проекту объектную библиотеку MS Word. Перейдите в меню «Проект» и выберете команду «Добавить ссылку» или в обозревателе решений, найдите пункт «Ссылки» и сделайте клик правой клавишей мыши по нему, из появившегося контекстного меню выберете соответствующий пункт.

В открывшемся окне «Добавить ссылку», перейдите на вкладку «COM» и выберете «Microsoft Word 14.0 Object Library» из предложенного списка библиотек.

В обозревателе решений у вас появится ссылка на данную библиотеку.

Перейдите в конструктор главной формы и добавьте из панели элементов, командную кнопку «Button». Данный элемент необходим для запуска процесса создания документа и вызов MS Word для отображения.

Сделайте двойной клик левой клавишей мыши по элементу «Button» и вы перейдете в автоматически созданный метод события «button1_Click». Добавьте в него приведенный ниже код.

Запустите ваш проект, нажав на клавиатуре, клавишу «F5». Нажмите на единственную кнопку, расположенную на главной форме вашего проекта. У вас автоматически откроется документ Microsoft Word с заполненным верхним и нижним колонтитулом, обычным и с применением стиля текстом, а так же заполненной таблицей.

Из опыта автоматизации Word на языке C# на примере создания оглавления Текст научной статьи по специальности «Компьютерные и информационные науки»

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Вильданов А.Н.

Описан алгоритм создания содержания документа в формате MS Word на языке C# в среде Microsoft Visual Studio 2010 Express (на примере сборника трудов конференции). Программно встраиваемое содержание имеет возможность автоматического обновления нумерации страниц. Исследованы возможности C# по форматированию текста вордовского документа, сохранению в формат PDF и т. п. Приведены основные команды по работе с документом Word на языке C#. Разработанное в статье приложение показывает, что с помощью C# можно достаточно эффективно решать широкий круг задач, связанных с автоматизацией рутинных действий с документами Microsoft Word . Рассмотренные в статье приемы и методы могут оказаться полезными при разработке подобных десктопных приложений. Ключевые слова : Microsoft Word , COM , C#, Microsoft Visual Studio 2010 Express .

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Вильданов А.Н.

From experience of Word automation in C# language on the example of creation of contents

Describes the algorithm for creating the contents of a document in MS Word format in C# language in Microsoft Visual Studio 2010 Express environment (using the collection of conference proceedings as an example). Programmatically embeddable content has the ability to automatically update page numbering. The possibilities of C# for formatting the text of the Word document, saving in PDF format, etc. are explored. The main commands for working with the Word document in C# are given. The application developed in the article shows that using C# can solve quite effectively a wide range of tasks related to automation of routine actions with Microsoft Word documents. The techniques and methods discussed in this article can be useful in the development of such desktop applications.

Текст научной работы на тему «Из опыта автоматизации Word на языке C# на примере создания оглавления»

Cloud of Science. 2018. T. 5. № 1 http:/ / cloudofscience.ru

Из опыта автоматизации Word на языке C# на примере создания оглавления

Нефтекамский филиал Башкирский государственный университет 452681, Нефтекамск, ул. Трактовая, 1

Аннотация. Описан алгоритм создания содержания документа в формате MS Word на языке C# в среде Microsoft Visual Studio 2010 Express (на примере сборника трудов конференции). Программно встраиваемое содержание имеет возможность автоматического обновления нумерации страниц. Исследованы возможности C# по форматированию текста вор-довского документа, сохранению в формат PDF и т. п. Приведены основные команды по работе с документом Word на языке C#. Разработанное в статье приложение показывает, что с помощью C# можно достаточно эффективно решать широкий круг задач, связанных с автоматизацией рутинных действий с документами Microsoft Word. Рассмотренные в статье приемы и методы могут оказаться полезными при разработке подобных десктопных приложений.

Ключевые слова: Microsoft Word, COM, C#, Microsoft Visual Studio 2010 Express.

1. Постановка задачи

Как известно, Microsoft Word является COM-объектом [1], т. е. спроектирован таким образом, что позволяет другим программам подключаться к себе и управлять им. Программно можно проделать практически все операции, которые мы делаем вручную в Word: создать новый документ, внести в него правки, сохранить его и т. п. Для такой автоматизации действий можно, например, подключиться к MS Word с помощью таких языков программирования высокого уровня, как Delphi, C++, C# и т. д. Можно, конечно, и просто создать макрос прямо внутри документа на языке Visual Basic for Applications. Как делать — дело вкуса, привычки и квалификации программиста.

В данной работе выбор пал на язык C#, который позволяет достаточно быстро создать прототип приложения для Windows. Имеется в виду, что язык C# сразу (без дополнительных библиотек) содержит готовые классы и методы, отвечающие за решения многих современных актуальных задач для десктопных приложений в ОС семейства Windows.

В качестве среды программирования в работе выбрана среда Microsoft Visual Studio 2010 Express. Несмотря на год выпуска, набор средств для создания приложений в нем весьма внушителен, имеется большой плюс — бесплатность.

Одной из распространенных задач при работе с документами является создание содержания. Понятно, что для достаточно больших документов ручная работа по его созданию становится тяжелой. Word имеет достаточно много средств и настроек для создания автоматического содержания (например, в Microsoft Word 2010 это подменю «Ссылки» ^ «Оглавление»). Но в некоторых случаях этот способ не подходит. Представим себе, например, сборник трудов конференции. Тогда заголовок и авторы могут находиться на разных строках (рис. 1):

ОСОБЕННОСТИ II ПРЕИМУЩЕСТВА ИСПОЛЬЗОВАНИЯ ДИАЛОГОВЫХ ПОЛЬЗОВАТЕЛЬСКИХ ИНТЕРФЕЙСОВ

ФГБ ОУ В О «Ба шкирский го суд арсгв енны й у нивер ситег»

ФГБ ОУ В О «Ба шкирский го суд арств енны й у нив ер сигег» Аннотация: в статье рассматриваются особенности взаимодействия Рисунок 1. Пример заголовка статьи конференции

2. Предлагаемый алгоритм решения

Как можно решить задачу составления содержания в таком случае? Желательно, чтобы нумерация страниц в содержании могла автоматически обновляться при внесении изменений в документ. В данной статье предлагается следующий способ. Нужно разметить в документе те элементы, которые мы собираемся разместить в содержании, определенными стилями. После пройтись по всему документу и сохранить в специальном массиве все встреченные элементы с созданными стилями.

Читать еще:  Шрифт в ms word

Например, создадим и отформатируем стиль для заголовков статьи. Дадим ему, например, название «header_article». Для упрощения программирования стили будем присваивать не отдельным словам и предложениям, а целым абзацам. При нашем подходе он не обязательно должен иметь стиль заголовка, а может быть создан на основе стиля обычного абзаца.

Для авторов придумаем стиль «author». В сборник конференций в содержание могут входить и названия секций. Поэтому предусмотрим стиль «section_name». Таким образом пробежимся по всему документу и обработаем все статьи (рис. 2.).

1Г АаБбВ author А4ББ1 header_art. ААББ sectionji. ДаБбВвГг, ИОбычный ДаБбВвГг, АаБбВ АаБбВ в: И Без инте. Заголово. Заголово. Ааь Название

2 ] 4 5 i 3 L0 11 12 1] 14 15 1£ Д

ОСОБЕННОСТИ И ПРЕ11МУ ШЕСТВДИСПО ЛЬЗ ОВАНИЯ ДИАЛОГОВЫХ ПОЛЬЗОВАТЕЛЬСКИХ ШГГЕЕфЕЙСОВ

д.ф.-м.н.. профессор. ФГБОУ ВО «Башкирский государственный университет»

Петров ПИ. к.ф.-м.н.. доцент.

ФГБОУ ВО «Башкирский государственный университет»

Рисунок 2. Присвоение стилей

Каким теперь будет алгоритм для составления содержания? Сначала нужно организовать цикл по всем абзацам документа, в котором:

— считываются текст и стиль абзаца;

— для абзацев с заголовком статьи, со стилем «header_article», создаются закладки с названием вида «bookMarkParagN», где N — номер абзаца (можно, конечно, называть и по-другому);

— авторы статьи и название (заголовок) статьи сохраняются в массиве SelParagraphs.

Обежав весь документ, мы получим массив с данными о названиях всех статей и об их авторах. По этому массиву уже можно построить содержание, например, в виде таблицы из двух столбцов. В первом столбце размещаются авторы статьи и название статьи. Во втором столбце создаются перекрестные ссылки на номера страниц закладок.

3. Программная реализация

Итак, создадим в среде Microsoft Visual Studio 2010 Express новое приложение Windows Forms. Чтобы в нашем приложении были доступны классы Microsoft Word, нужно добавить ссылку на соответствующую библиотеку. Выбираем в меню «Проект» ^ «Добавить ссылку», открываем вкладку COM, выбираем Microsoft

Word 14.0 Object Library (рис. 3). Цифра зависит от версии установленного MS Word.

[Щ Добавить ссылку

■MET» I СОМ I Проекты | Обзор Последние файлы]

M Mn KownoHËHTa Версия 6_ Путь ‘

Microsoft Windows Common Controls 5.0 (SP2] 1.3 С WindowsSysWOW64comctl32.ooi

Microsoft Windows Common Controls 6.0 (SP6J za С. Window5SysWOW64MSCOMCTL.OCX

Microsoft Windows Common Controls-26.0 (S. га с Wi п d owsVSysWOW64Vm scom ct2. oa

Microsoft Windows Image Acquisition Library v. 1.0 с WindowsSystem32wiaaut.dll

Microsoft Windows Installer Object Library 1.0 с Windowssystem32m si. dll

Microsoft Windows Media Player Network Shar. 1.0 с ‘.Program Files (x86>Windows Media Playerwmpnssci.dll

Microsoft WinHTTP Services, version 5.1 51 с Windowssystem32winhttp.dll

Microsoft WMI Scripting VI.2 Library 1.2 с Windowssystem32wbemwbemdisp.7LB

1 Microsoft Word 14.0 Object Library aj с VProgram Files (x86JMicrosoft OfficeOfficel4M SWORD,OLB

Microsoft WSMAN Automation VI.0 Library 1.0 с WindowsSysWOW64WsmAuto.dll

Microsoft XML, v3.0 3J> с. WindowsSystem32mc(mB.dll

Microsoft XML, v6.0 6Л с Windows3ystem32msmil6.dll

Microsoft,TeamFoundation.Officelnteg ration. C. 17 a с ‘.Program FilesCommon FilesMicrosoft £haredTeam Foundatioi

Рисунок 3. Подключение библиотеки для работы с MS Word

Теперь нам доступны методы пространства имен Microsoft.Office.Interop.Word. Для упрощения обращений к нему создадим псевдоним для него: using Word = Microsoft.Office.Interop.Word;

Нам понадобятся две глобальные переменные для работы с Word [2]: Word._Application app; Word._Document doc;

Первая переменная представляет, собственно, само приложение MS Word, а вторая — наш вордовский документ.

Создадим класс contents для хранения информации об элементах будущего содержания:

public string authors=»»; public string article_name=»»;

public string bookMark=»»; >

Пункты authors и article_name хранят информацию об авторах статьи и название статьи. Поле bookMark будет хранить название закладки на заголовок статьи. Чтобы в полученном содержании иметь возможность автоматического обновления нумерации страниц, нужно будет создать перекрестные ссылки на созданные закладки.

Итак, сначала пробежимся по всем абзацам текста. Многие основные текстовые единицы в Word представляют собой коллекции [3] (объекты, напоминающие массивы, со встроенными методами и свойствами). Например, абзацы представляют собой коллекцию Paragraphs, закладки — коллекцию Bookmarks и т. д. [4]. Нужно иметь в виду, что нумерация в коллекциях начинается с единицы (в отличие, например, от массивов в Java, где первый элемент имеет номер ноль). Запускаем цикл:

Работа с Word — Создание, открытие, форматирование, закрытие и сохранение

Использование Word в приложениях на Visual Basic 6 открывает широчайшие возможности для создания профессионально оформленных документов (например отчетов). Это часто необходимо при работе в фирме или на предприятии для обеспечения документооборота. Основным преимуществом использования Wordа в этом случае является то, что практически на всех компьютерах, используемых в фирмах и на предприятиях установлены Windows и пакет Microsoft Office. Поэтому подготовленные документы Word не требуют каких-либо дополнительных усилий для их просмотра, печати и редактирования. Единственное что нужно помнить, это то что работа через автоматизацию OLE (связывание и внедрение объектов) на деле оказывается довольно медленной технологией, хотя и очень полезной.

Чтобы использовать объекты Word в Visual Basic , необходимо инсталлировать сам Word. После этого вы получаете в своё распоряжение библиотеку Microsoft Word Object Library, которую нужно подключить к текущему проекту через диалоговое окно «Разработать»>>»Ссылки» (References) и указать Microsoft Word 9.0 Object Library (для Word 2000).

Два самых важных объекта Word это Word.Application и Word.Document. Они обеспечивают доступ к экземпляру приложения и документам Word.

Поэтому в раздел Generals «Общее» формы введите следующий код для объявления объектных переменных приложения Word и документа Word.

Чтобы создать новый экземпляр Word, введите такой код кнопки;

Для форматирования печатной области документа используйте данный код:

(вообще-то Word использует для всех размеров своих элементов пункты, поэтому для использования других единиц измерения, необходимо использовать встроенные функции форматирования.)

  • CentimetersToPoints(Х.ХХ) — переводит сантиметры в пункты.
  • MillimetersToPoints(X.XX) — переводит миллиметры в пункты

Для того чтобы в своём приложении не писать постоянно одно и тоже имя объекта, можно использовать оператор With.

Например код находящейся выше можно переписать так:

Если вам необходимо создать документ Word с нестандартным размером листа, то используйте данный код:

Данный код меняет ориентацию страницы (практически меняет местами значения ширины и высоты листа):

  • wdOrientLandscape — альбомная ориентация ( число 1)
  • wdOrientPortrait — книжная ориентация ( число 0)

Для сохранения документа под новым именем и в определенное место используйте данный код код:

После такого сохранения вы можете про ходу работы с документом сохранять его.

Или проверить, были ли сохранены внесенные изменения свойством Saved и если изменения не были сохранены — сохранить их;

Завершив работу с документом, вы можете закрыть сам документ методом Close и сам Word методом Quit.

Если в методах Close и Quit не использовать необязательный параметр True то Word запросит согласие пользователя (если документ не был перед этим сохранён) на закрытие документа.

Если вам необходимо оставить Word открытым, просто не используйте методы Close и Quit.

Если вам необходимо поставить пароль на документ, то используйте код:

Megano Blog

среда, 9 февраля 2011 г.

Использование WORD шаблонов C# 4.0

Инструментарий:
• Microsoft Visual Studio 2010
• Microsoft Office 2010

Читать еще:  Как убрать повторения в столбце excel

исходники к статье

Данная статья является адаптацией более ранней статьи «Использование WORD шаблонов» с учетом новых возможностей вошедших в C# 4.0 таких как: именованные параметры, пропуск ключевого слова ref при работе с COM, индексируемые свойства и необязательные параметры. Вы можете сравнить количество кода с предыдущей статьей и увидеть, что кода сало много меньше, так же он стал более читабельным.

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

Для решения этой задачи могут пригодиться шаблоны WORD, ведь в большинстве своем для каждого случая существует свой, заранее разработанный бланк, в который просто подставляются текущие данные.

Предположим, существует некая компания «Ключи и Отвертки», которая занимается продажами обозначенных инструментов, и менеджеры компании хотят видеть ежедневный отчет о продажах в своих офисах.

Начнем с простого шаблона, который будет представлять из себя фирменный бланк компании и единственное поле для вставки данных. Создадим новый WORD документ и уменьшим отступы (Page Layout -> Margins -> Narrow).

После этого развернем документ в альбомную ориентацию (Page Layout -> Orientation -> Landscape).

Далее создадим шапку (Insert -> Header –> Alpabet).

Напишем название. Далее впишем дополнительную информацию о компании и пометим ее курсивом с выравниванием по правому краю.

После создания шапки в документ автоматически был добавлен пустой подвал, перейти в редактирование которого можно просто перенеся туда курсор. Визуально отделим его от тела документа при помощи разделительной линии. (Insert –> Shapes -> Lines)

Далее, в подвале сделаем выравнивание по правому краю и создадим закладку (Bookmark), которую будем отыскивать в коде и на ее место вставлять данные (Insert -> Bookmark).

И назовем ее AuthorName.

На этом завершим создание фирменного бланка, сохраним шаблон с именем screwdriver.dotx (Word Template)

Следующим шагом создадим из кода новый документ Word, на основе нашего шаблона, впишем автора документа и сохраним его на диск.

Создадим в Visual Studio WPF приложение с названием UsingWordTemplate ( File -> New -> Project -> Windows -> WPF Application).

Добавим на форму Label (Content=»Автор:»), TextBox (Name=”autorTxtb”), в который будем вписывать имя автора документа и кнопку (Content=»Сохранить» Name=”saveBtn”), с помощью которой будем сохранять созданный документ.

Добавим ссылку на .Net библиотеку Microsoft.Office.Interop.Word Version 14. В шапке кода главного окна добавим

После чего определим переменную

Переменная oWord будет представлять процесс WINWORD.EXE в памяти.

Так же определим событие формы Closing, в котором мы будем закрывать процесс WINWORD.EXE

В предыдущем фрагменте кода мы незаметно использовали новую возможность C# 4.0 — необязательные параметры. Если сравнить с предыдущим вариантом статьи, то тогда нам потребовалось определить переменную oMissing представляющую из себя аргумент представляющий значение по умолчанию, который требуют методы из пространства Microsoft.Office.Interop. И вызов выглядел следующим образом:

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

Вызовем контекстное меню текущего проекта и добавим в него заранее созданный шаблон screwdriver.dotx (Add -> Existing Item -> screwdriver.dotx), в его свойствах определим Copy To Output Directory как Copy always.

Определим обработчик кнопки:

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

Здесь мы вновь используем пропуск ключевого слова ref,необязательные параметры и так же новую возможность – именованные параметры. Для сравнения посмотрим на код которым мы пользовались ранее:

Остерегайтесь использования Environment.CurrentDirectory так как значение может измениться в процессе работы.

Как показано выше мы можем сами изменить ее значение, в данном случае Environment.CurrentDirectory больше указывает не на каталог приложения, а на корень диска C.

Ниже приведен код вызванных методов:

Сигнатуры вызываемых методов из пространства имен Microsoft.Office.Interop можно посмотреть по адресу:

Введем в текст бокс данные автора документа “Александр Кобелев” и сохраним документ на диск нажав кнопку “Сохранить”. В папке Debug нашего приложения появится файл New.docx, содержащий введенные данные на месте bookmark AuthorName.

Теперь добавим еще одну кнопку (Content=»Print» Name=»prntBtn») на форму, которая будет распечатывать документ на принтер и определим ее обработчик.

Здесь все то же самое, что и в предыдущем случае, только вместо метода SaveToDisk вызывается PrintOut() и перед закрытием документа явно определяется, что документ не стоит сохранять. В предыдущем случае, при сохранении документа на диск, он помечался как сохраненный и не требовалось явно указывать этот параметр.

Теперь добавим на шаблон таблицу 3 на 4, которая будет отображать продажи по городам. Верхняя строчка обозначит ключи и отвертки, а первый столбик города: Москва, Санкт-Петербург, Челябинск. Разукрасим таблицу по своему вкусу.

Далее мы могли бы поставить шесть закладок (boomark), задать им уникальные имена и искать их как в предыдущем случае, но это слишком накладно. Можно поступить проще – выделить всю таблицу и добавить закладку на все выделение сразу.

Назовем новую закладку “SaleTable”.

Добавим на форму DataGrid, со свойством AutoGenerateColumns=»True», а в код новую переменную

В конструкторе вызовем метод, который заполнит DataTable и свяжет его с DataGrid

Добавим в метод SetTemplate() вызов метода SetTable() который будет заполнять данными таблицу.

Как видно из листинга, мы перебираем по очереди все ячейки в шаблоне и сопоставляем их с данными из DataTable.

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

Для реализации немного изменим метод SetTable() , заменив явное присваивание на вызов метода SetCell().

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

Перейдем к графикам.

Для использования графиков потребуется ссылка на .Net библиотеку Microsoft.Office.Interop.Excel Version 14. Так же в шапке кода главного окна добавим using

Сделаем несколько отступов вниз, для создания пространства между таблицей и графиком, добавим в шаблон график (Insert -> Chart -> Column -> 3d Column)

и выставим все значения по нулям.

После чего выделим график на шаблоне (кликнув по краю графика) и создадим новую закладку “ChartBookmark”, далее сохраним изменения в шаблоне.

Добавим в метод SetTemplate() вызов метода SetChart(), который будет заполнять данными график.

Теперь приложение полностью готово к работе, введем некоторые данные, чтобы провести функциональный тест. В строке автор я введу “Александр Кобелев” а значения продаж по городам у меня будут такие: Ключи/Отвертки Москва – 700/400, Санкт-Петербург – 50/300, Челябинск – 100/200. После нажатия кнопки “Сохранить” в папке Debug приложения появился файл New.docx, такого вида:

Как видно из статьи, изменения вышедшие в C# 4.0 — намного сокращают код необходимый для работы с СОМ, в частности при работе с Office.

Ссылка на основную публикацию
Adblock
detector