Хелпикс

Главная

Контакты

Случайная статья





Листинг приложения



 

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

Воронежский государственный технический университет

Факультет информационных технологий и компьютерной безопасности

Кафедра компьютерных интеллектуальных технологий проектирования

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №4

 

По дисциплине: Информатика

 

на тему: «Экспорт данных в приложения пакета Microsoft Office»

 

Сделал студент группы бИСТ-184______________________   Юнусов Ы.И.

Направление подготовки: Информационные системы и технологии в строительстве

 

Проверил преподаватель_____________________ СТ.ПР. Филимонова А.А.

 

 

Воронеж

Цель работы: изучение объектной модели Office и получение практических навыков передачи данных из приложений в пакет Microsoft Office.

 

Выполнение работы

Visual Studio предлагает новые функции C# и Visual Basic, позволяющие улучшить программирование для Microsoft Office. В число полезных функций C# входят именованные и необязательные аргументы и возвращаемые значения типа dynamic. В программировании COM можно опустить ключевое слово ref и получить доступ к индексированным свойствам. Список функций Visual Basic включает автоматически реализуемые свойства, инструкции в лямбда-выражениях и инициализаторы коллекций.

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

Настройка надстройки Excel

Запустите Visual Studio.

В меню Файл выберите пункт Создать, а затем команду Проект.

В области Установленные шаблоны разверните узел Visual Basic или Visual C# , а затем узел Office и выберите версию Office.

В области Шаблоны выберите Надстройка Excel <версия> .

Убедитесь, что в верхней части области Шаблоны в поле Требуемая версия .NET Framework отображается .NET Framework 4 или более поздняя версия.

Если нужно, в поле Имя введите имя проекта.

Нажмите кнопку ОК.

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

Добавление ссылок

В обозревателе решений щелкните имя проекта правой кнопкой мыши и выберите пункт Добавить ссылку. Откроется диалоговое окно Добавление ссылки.

На вкладке Сборки в списке Имя компонента выберите Microsoft.Office.Interop.Excel, версия <version>.0.0.0 (расшифровку номеров версий продуктов Office см. в разделе Версии Майкрософт), а затем, удерживая нажатой клавишу CTRL, выберите Microsoft.Office.Interop.Word, version <version>.0.0.0. Если сборки отсутствуют, убедитесь, что они установлены и отображаются (см. практическое руководство по установке основных сборок взаимодействия Microsoft Office).

Нажмите кнопку ОК.

Добавление необходимых операторов Imports или директив using

В обозревателе решений щелкните правой кнопкой мыши файл ThisAddIn.vb или ThisAddIn.cs и выберите в контекстном меню команду Просмотреть код.

В верхнюю часть файла с кодом добавьте следующие операторы Imports (Visual Basic) или директивы using, если это еще не сделано.

using System.Collections.Generic;

using Excel = Microsoft.Office.Interop.Excel;

using Word = Microsoft.Office.Interop.Word;

Экспорт данных в ExcelTo export data to Excel

В том же самом файле добавьте в класс ThisAddIn следующий метод.In the same file, add the following method to the ThisAddIn class. Этот метод служит для настройки книги Excel и экспорта данных в нее.The method sets up an Excel workbook and exports data to it.

void DisplayInExcel(IEnumerable<Account> accounts,

      Action<Account, Excel.Range> DisplayFunc)

{

var excelApp = this.Application;

 

В этом методе используются две новые возможности C#.Two new C# features are used in this method. Оба эти возможности уже существуют в Visual Basic.Both of these features already exist in Visual Basic.

У метода Add есть необязательный параметр для указания конкретного шаблона.Method Add has an optional parameter for specifying a particular template. Для необязательных параметров, впервые появившихся в C# 4, можно опускать аргумент, если нужно использовать значение параметра по умолчанию.Optional parameters, new in C# 4, enable you to omit the argument for that parameter if you want to use the parameter's default value. Поскольку в предыдущем примере никакой аргумент не передается, в методе Add используется шаблон по умолчанию и создается новая книга.Because no argument is sent in the previous example, Add uses the default template and creates a new workbook. В эквивалентном операторе в более ранних версиях C# необходимо было использовать аргумент-местозаполнитель excelApp.Workbooks.Add(Type.Missing).The equivalent statement in earlier versions of C# requires a placeholder argument: excelApp.Workbooks.Add(Type.Missing).

Дополнительные сведения см. в разделе Именованные и необязательные аргументы.For more information, see Named and Optional Arguments.

Свойства Range и Offset объекта Range используют возможность индексированных свойств.The Range and Offset properties of the Range object use the indexed properties feature. Она позволяет использовать свойства типов COM с помощью стандартного синтаксиса C#.This feature enables you to consume these properties from COM types by using the following typical C# syntax. Кроме того, индексированные свойства позволяют использовать свойство Value объекта Range, устраняя необходимость в использовании свойства Value2.Indexed properties also enable you to use the Value property of the Range object, eliminating the need to use the Value2 property. Свойство Value является индексированным, но индекс — необязательным.The Value property is indexed, but the index is optional. Совместная работа необязательных аргументов и индексированных свойств показана в следующем примере.Optional arguments and indexed properties work together in the following example.

// Visual C# 2010 provides indexed properties for COM programming.

excelApp.Range["A1"].Value = "ID";

excelApp.ActiveCell.Offset[1, 0].Select();

В более ранних версиях этого языка приходилось использовать особый синтаксис.In earlier versions of the language, the following special syntax is required.

// In Visual C# 2008, you cannot access the Range, Offset, and Value

// properties directly.

excelApp.get_Range("A1").Value2 = "ID";

excelApp.ActiveCell.get_Offset(1, 0).Select();

Разработчики не могут создавать собственные индексированные свойства.You cannot create indexed properties of your own. Эта возможность поддерживает только использование имеющихся индексированных свойств.The feature only supports consumption of existing indexed properties.

Дополнительные сведения см. в разделе Практическое руководство. Использование индексированных свойств в программировании COM-взаимодействия.For more information, see How to: Use Indexed Properties in COM Interop Programming.

Добавьте в конец метода DisplayInExcel следующий код, чтобы ширина столбца изменялась в соответствии с содержимым.Add the following code at the end of DisplayInExcel to adjust the column widths to fit the content.

excelApp.Columns[1].AutoFit();

excelApp.Columns[2].AutoFit();

' Add the following two lines at the end of the With statement.

.Columns(1).AutoFit()

.Columns(2).AutoFit()

Эти дополнения демонстрируют еще одну возможность C#: значения Object, возвращаемые главными приложениями COM, например приложениями Office, и обрабатываются так, как если бы они имели тип dynamic.These additions demonstrate another feature in C#: treating Object values returned from COM hosts such as Office as if they have type dynamic. Это происходит автоматически, если параметр Внедрить типы взаимодействия имеет значение по умолчанию (True), или, что эквивалентно, если ссылка на сборку задается с помощью параметра компилятора -link.This happens automatically when Embed Interop Types is set to its default value, True, or, equivalently, when the assembly is referenced by the -link compiler option. Тип dynamic делает возможным позднее связывание, уже доступное в Visual Basic, и не допускает явного приведения, которое требовалось бы в C# 3.0 и более ранних версиях языка.Type dynamic allows late binding, already available in Visual Basic, and avoids the explicit casting required in C# 3.0 and earlier versions of the language.

Например, excelApp.Columns[1] возвращает Object, а AutoFit является методом Excel Range.For example, excelApp.Columns[1] returns an Object, and AutoFit is an Excel Range method. Без типа dynamic необходимо выполнять приведение объекта, возвращаемого excelApp.Columns[1], к экземпляру Range перед вызовом метода AutoFit.Without dynamic, you must cast the object returned by excelApp.Columns[1] as an instance of Range before calling method AutoFit.

 

Добавление в Word

После прохождения теста, пользователю предлагается выбор куда экспортировать данные (рисунок 1).

Рисунок 1- Результат теста

При нажатии на создать шаблон word, создастся шаблон файла (рисунок 2).

Рисунок 2 – Созданный шаблон документа Word

Сначала создаётся новый документ Word и задаём параметры листа.

wordDoc = wordApp.Documents.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);

Затем создаём первый параграф, он выглядит следующем образом:

wordParag = wordDoc.Paragraphs.Add(Type.Missing);

       wordParag.Range.Font.Name = "Times New Roman";

       wordParag.Range.Font.Size = 16;

       wordParag.Range.Font.Bold = 1;

       wordParag.Range.Text = "Результаты";

       wordParag.Range.Paragraphs.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;

Здесь создаётся надпись и ставятся соответствующие условия.

Второй параграф состоит из таблицы на 10 строк и 2 колонок:

wordDoc.Paragraphs.Add(Type.Missing);

       wordParag.Range.Tables.Add(wordParag.Range, 10, 2, Type.Missing, Type.Missing);

       wordTable = wordDoc.Tables[1];

       wordTable.Range.Font.Bold = 0;

       wordTable.Range.Font.Size = 12;

Здесь так же создаётся таблица и ставятся соответствующие условия методом Range.

В конце сохраняем и закрываем файл.

wordDoc.SaveAs("D:\\word.docx");

       wordApp.ActiveDocument.Close();

При нажатии на кнопку “Экспорт в документ Word”, откроется документ, который был создан по шаблону, и в него экспортируется данные прохождения теста (рисунок 3).

Далее идёт заполнение ячеек таблицы:

Word.Application app = new Word.Application();

       _Document oDoc = app.Documents.Add("Путь");

       app.Visible = true;

       oDoc.Paragraphs[2].Range.Text = Result.Text;

Сначала программа открывает документ, и во второй параграф записывает данные в таблицу, через данные, находящиеся в элементе Label Result.Text.

 

Рисунок 3 – Экспорт данных в word

 

Добавление в Excel

При нажатии на кнопку Excel, пользователю выведет построчной в файл результаты его прохождения теста (рисунок 3).

Рисунок 3 – Результат экспорта

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

Excel.Application application = new Excel.Application();

       Excel.Workbook workbook = application.Workbooks.Add();

       Excel.Worksheet worksheet = workbook.Worksheets[1];

       String[] s = System.Text.RegularExpressions.Regex.Split(Result.Text, "\r\n");

       int i = 1;

       foreach (var str in s)

       {

           worksheet.Cells[i, 1] = str;

           i++;

       }

       application.Visible = true; 

 

Вывод: изучил объектную модель Office и получил практические навыки передачи данных из приложений в пакет Microsoft Office.

Листинг приложения



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.