Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2006, 12:50   #1
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 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;
zetrix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выгрузка картинок в проект 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