|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.10.2006, 12:50 | #1 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
выгрузка в файл
spiker
как можно программно выгрузить данные из базы interbase? l0kk1 Можно сделать экспорт в Excel это выглядит примерно так. var MyExcel : Variant; i : integer; begin i:=5; MyExcel:=CreateOleObject('Excel.App lication'); MyExcel.visible:=true; MyExcel.WorkBooks.Add; while not TblSedek.Eof do begin MyExcel.Cells(i,1) := TblSedekCode.AsString; MyExcel.Cells(i,2) := TblSedekF1.AsString + ''+ TblSedekNames.AsString; MyExcel.Cells(i,3) := TblSedekKolvo_Semyan.AsString; MyExcel.Cells(i,4) := TblSedekCost.Value; MyExcel.Cells(i,5) := TblSedekPakets.AsString; TblSedek.Next; i:=i+1; end; TblSedek.First; end; Полная документация о том, как работать с word & excel из под Delphi описана в книге "Программирование документов и приложение Ms Office в Delphi" isbn 5-94157-458-4 lian Так быстрее поячеечного присвоения! 1. Как определить установлен ли Excel Функция возвращает True если найден OLE-объект Пример использования if not IsOLEObjectInstalled('Excel.Applica tion') then ShowMessage( 'Класс не зарегистрирован' ) else ShowMessage( 'Класс найден' ); function IsOLEObjectInstalled(Name: String): boolean; var ClassID: TCLSID; Rez : HRESULT; begin // Ищем CLSID OLE-объекта Rez := CLSIDFromProgID(PWideChar(WideStrin g(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.Applicati on'); // Делаем его видимым 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:\MyTempla te.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; |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Выгрузка картинок в проект | Rusl92 | Общие вопросы Delphi | 2 | 20.08.2008 23:00 |
загрузка и выгрузка памяти на языке СИ | Anil | Общие вопросы C/C++ | 5 | 19.12.2007 18:25 |
Delphi c SQL и выгрузка в Excel или word | girl23 | БД в Delphi | 7 | 24.10.2007 17:56 |
Выгрузка в файл с динамическим названием. | Квэнди | БД в Delphi | 0 | 24.06.2007 15:39 |