на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Доклад: Экспорт в 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/



на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.