Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экспорт данных с Дельфи в Excel 
:(
    Опции темы
Asia
Дата 15.9.2006, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 15.9.2006

Репутация: нет
Всего: нет



Здравствуйте, уважаемые программисты Дельфи!

У меня вот такая проблема:
я создала проект в Дельфи, состоящий из табличек (Paradox созданных в Database Desktop), запроса к ним (который высвечивает по заданному конкретному полю необходимые данные с этой таблички), данные запроса отображаются на отдельной форме, но затем результаты запроса надо отобразить в виде отчета, чтобы можно было их распечатать, я умею подсоединять результаты данного запроса к QuickReport, но преподаватель требует, чтобы их (результаты запроса с формы)можно было отобразить (экспортировать) в Microsoft Excel, с чем я ни разу не сталкивалась.

Навыки в Дельфи у меня на уровне начинающего программиста - могу установить необходимые компоненты, прописать в них код.

Не могли бы вы более подробно проинструктировть как можно экспортировать результаты запроса с Дельфи в Microsoft Excel.

Могу выслать свой проект и форму отчета в Microsoft Excel.

Заранее благодарна.
Жду ваших ответов (е-мэйл: [email protected]).

PM MAIL   Вверх
Fedia
Дата 15.9.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

Репутация: 3
Всего: 13



Asia, а статья отсюда не помогла ? Я наверное не точно выразился. Для создания отчетов в Excel очень хорошо подойдет использование компонента TExcelApplication или OLE (Excel.Application). Например:
Код

var
   Excel: variant;
//.....................  
   Excel:=CreateOleObject('Excel.Application');
   Excel.visible:=false;
   Excel.DisplayAlerts:=false;
   Excel.WorkBooks.Add();
   Excel.Workbooks[1].WorkSheets[1].Cells.Item[1, 1]:='test';
   try
     Excel.Workbooks.item[1].SaveAs(OutFile);
   finally
     Excel.Quit;
     Excel:=null;
   end;

Посмотри все же статью.


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Vas
Дата 15.9.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Может подойдет
Код

Procedure TForm1.Button2Click(Sender: TObject);
var
    ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData  : Variant;
    BeginCol, BeginRow, i, j : integer;
    RowCount, ColCount : integer;
Begin
   Screen.Cursor:=crHourGlass;
   // Координаты левого верхнего угла области, в которую будем выводить данные
   BeginCol:=1;
   BeginRow:=2;
   // Размеры выводимого массива данных
   RowCount:=Query1.RecordCount+2;
   ColCount:=Query1.Fields.Count;
   // Создание 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 j:=0 to ColCount-1 do
       ArrayData[1,J+1]:=DBGrid1.Columns[j].Title.Caption;
   i:=2;
   Query1.DisableControls;
   Query1.First;
   while not Query1.Eof do
   begin
      for J:=0 to ColCount-1 do
           ArrayData[I,J+1]:=Query1.Fields[j].Value;
      Query1.Next;
      i:=i+1;
      ProgressBar1.Position:=ProgressBar1.Position+ProgressBar1.Step;
   end;
   ArrayData[RowCount,1]:='Всего записей: '+IntToStr(Query1.RecordCount);
   Query1.First;
   Query1.EnableControls;
   // Левая верхняя ячейка области, в которую будем выводить данные
   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;
   ExcelApp:=Unassigned;
   Screen.Cursor:=crDefault;
End;

А вообще в интернете много про экспорт в эксель написано 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.