Експорт в 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;

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Доповідь
5.2кб. | скачати


Схожі роботи:
Microsoft Excel Інтерфейс головне меню Excel
Експорт товарів 2
Експорт товарів
Туристські експорт та імпорт
Експорт через посередника
Експорт фармацевтичної продукції
Туристський імпорт і експорт
Імпорт і експорт зображень і тексту в Adobe
Excel
© Усі права захищені
написати до нас