рефераты
Главная

Рефераты по рекламе

Рефераты по физике

Рефераты по философии

Рефераты по финансам

Рефераты по химии

Рефераты по хозяйственному праву

Рефераты по цифровым устройствам

Рефераты по экологическому праву

Рефераты по экономико-математическому моделированию

Рефераты по экономической географии

Рефераты по экономической теории

Рефераты по этике

Рефераты по юриспруденции

Рефераты по языковедению

Рефераты по юридическим наукам

Рефераты по истории

Рефераты по компьютерным наукам

Рефераты по медицинским наукам

Рефераты по финансовым наукам

Рефераты по управленческим наукам

Психология и педагогика

Промышленность производство

Биология и химия

Языкознание филология

Издательское дело и полиграфия

Рефераты по краеведению и этнографии

Рефераты по религии и мифологии

Рефераты по медицине

Рефераты по сексологии

Рефераты по информатике программированию

Краткое содержание произведений

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


© 2012 Рефераты, курсовые и дипломные работы.