Реферат по предмету "Программирование"


Экспорт в Excel

Экспорт в Excel

Кулюкин Олег

Рано
или поздно практически каждый программист сталкивается с необходимостью
организовать экспорт данных в MS Office. При этом каждое "поколение"
программистов натыкается на одни и те же вилы.

Вот
три часто встречающихся вопроса.

1.
Как определить установлен ли Excel

2.
Как определить запущен ли Excel

3.
Как вывести данные в Excel

Большую
помощь в понимании этих и других вопросов приносит чтение исходных текстов
функций модуля ComObj. :)  

Во
всех случаях следует подключить модули ComObj и ActiveX  

1.
Как определить установлен ли Excel

Функция
возвращает True если найден OLE-объект

Пример
использования

if
not IsOLEObjectInstalled('Excel.Application') then ShowMessage('Класс не зарегистрирован')
else ShowMessage('Класс найден'); function IsOLEObjectInstalled(Name: String):
boolean; var ClassID: TCLSID; Rez : HRESULT; begin // Ищем CLSID OLE-объекта
Rez := CLSIDFromProgID(PWideChar(WideString(Name)), ClassID); if Rez = S_OK
then // Объект найден Result := true else Result := false; end;

Если
нужна более подробная информация об объекте, можно почитать хелп по функции API
CLSIDFromProgID.  

2.
Как определить запущен ли Excel

Данный
пример ищет активный экземпляр Excel и делает его видимым

var
ExcelApp : Variant; begin try // Ищем запущеный экземплят Excel, если он не
найден, вызывается исключение ExcelApp :=
GetActiveOleObject('Excel.Application'); // Делаем его видимым ExcelApp.Visible
:= true; except end;

3.
Как вывести данные в Excel

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

var 


 
ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant; 


 
TemplateFile : String; 

 
BeginCol, BeginRow, i, j : integer; 


 
RowCount, ColCount : integer;

begin 

//
Координаты левого верхнего угла области, в которую будем выводить данные 

BeginCol
:= 1; 

BeginRow
:= 5;

//
Размеры выводимого массива данных 

RowCount := 100; 

ColCount := 50;

// Создание Excel 

ExcelApp :=
CreateOleObject('Excel.Application');  

//
Отключаем реакцию Excel на события, чтобы ускорить вывод информации 

ExcelApp.Application.EnableEvents :=
false;  

// 
Создаем Книгу (Workbook) 

// 
Если заполняем шаблон, то Workbook := ExcelApp.WorkBooks.Add('C:MyTemplate.xls'); 

Workbook
:= ExcelApp.WorkBooks.Add; 

//
Создаем Вариантный Массив, который заполним выходными данными 

ArrayData := VarArrayCreate([1,
RowCount, 1, ColCount], varVariant);  

// Заполняем массив 

for I := 1 to RowCount do   

 for J := 1 to ColCount do   

  
ArrayData[I, J] := J * 10 + I;  

//
Левая верхняя ячейка области, в которую будем выводить данные 

Cell1 :=
WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol]; 

//
Правая нижняя ячейка области, в которую будем выводить данные 

Cell2 :=
WorkBook.WorkSheets[1].Cells[BeginRow  +
RowCount - 1, BeginCol +

ColCount
- 1]; 

//
Область, в которую будем выводить данные 


Range :=
WorkBook.WorkSheets[1].Range[Cell1, Cell2];  

//
А вот и сам вывод данных 

//
Намного быстрее поячеечного присвоения 

Range.Value
:= ArrayData; 

// Делаем Excel видимым 

ExcelApp.Visible := true;
Список литературы

Для
подготовки данной работы были использованы материалы с сайта http://vlad2000.h1.ru/


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.