• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Информатика, программирование
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

Экспорт в 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/

Дата добавления: 18.12.2004

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2025 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации
Telegram Logo

Используя наш cайт, Вы даете согласие на обработку файлов cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, необходимо установить специальные настройки в браузере или покинуть сайт.