Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как экспортировать содержимое DBGrid в Excel [D7]


Страницы:   1 2

evgen ©   (2004-05-17 14:03:00) 

Помогите советом или толковой ссылкой для начинающих!


Vlad   (2004-05-22 14:54:00) [21]


> iVovs   (22.05.04 14:10) [17]

простите, ошибочка закралась,
...
with TMyDBGrid(DBGrid1).DataLink do
begin
 for a:=0 to (RecordCount-1) do
 begin
    ActiveRecord:=a;// я забыл дописать эту строчку
   for b:=0 to (FieldCount-1) do
   begin
...



> jack128 ©   (22.05.04 14:28) [18]
> with DbGrid1.DataSource.DataSet do

Ты почитай вопрос автора. Нужен экспорт из DBGrid, а не из DataSet, согласно постановке вопроса твой ответ впринципе неверен


iVovs   (2004-05-22 14:37:00) [22]

Так как всё таки без траблов загрузить из Grid в Excel?


jack128   (2004-05-22 14:28:00) [23]

with DbGrid1.DataSource.DataSet do
begin
 Last;
 First;
end;

> for a:=0 to (RecordCount-1) do
>   begin
>     for b:=0 to (FieldCount-1) do
>     begin
>       WS.Cells[a+1, b+1].Value:=Fields[b].AsString;
>     end;
     DbGrid1.DataSource.DataSet.Next;  
>   end;
>  
подчеркнутая строка - верный путь к тормозам, как надо см линк выше..

> Попробовал предложеный код, но он выводит только одну запись(на
> которой находится курсор) из Grid столько раз, сколько видимых
> рядов в Grid
см мои добавления к коду..


iVovs   (2004-05-22 14:10:00) [24]

Такая же проблема как и у evgen нужно экспортировать данные из Grida Excel.
Попробовал предложеный код, но он выводит только одну запись(на которой находится курсор) из Grid столько раз, сколько видимых рядов в Grid.
Может кому не лень - помогите разобраться.


evgen   (2004-05-17 15:49:00) [25]

> Vlad
Пока чето не получилось. Позже продолжим! Спасибо!


Vlad   (2004-05-17 15:37:00) [26]


> evgen   (17.05.04 15:36) [14]
> Да вроде так и делаю!


> implementation
>
> {$R *.dfm}
>
> procedure ToExcel;

procedure TForm1.ToExcel


evgen   (2004-05-17 15:36:00) [27]

Да вроде так и делаю!
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, DBGrids, DB, DBTables, ComObj;

type
 TMyDBGrid = class(TDBGrid);
 TForm1 = class(TForm)
 Table1: TTable;
 DataSource1: TDataSource;
 DBGrid1: TDBGrid;
 procedure ToExcel;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure ToExcel;
var
a,b: Integer;
ExApp, WB, WS: Variant;
begin
ExApp:=CreateOleObject('Excel.Application');
WB:=ExApp.WorkBooks.Add;
WS := ExApp.Workbooks[1].WorkSheets[1];
with TMyDBGrid(DBGrid1).DataLink do
begin
  for a:=0 to (RecordCount-1) do
  begin
    for b:=0 to (FieldCount-1) do
    begin
      WS.Cells[a+1, b+1].Value:=Fields[b].AsString;
    end;
  end;
  ExApp.Visible:=true;
end;
end;

end.


Vlad   (2004-05-17 15:28:00) [28]

type
  TMyDBGrid = class(TDBGrid);
  TForm1 = class(TForm)
  Table1: TTable;
  DataSource1: TDataSource;
  DBGrid1: TDBGrid;
  procedure ToExcel;
private
  { Private declarations }
public
  { Public declarations }
end;

.............
implementation

procedure TForm1.ToExcel;
{Сюда пишем процедуру из 5 поста}


evgen   (2004-05-17 15:23:00) [29]

type

   TMyDBGrid = class(TDBGrid);

   TForm1 = class(TForm)
   Table1: TTable;
   DataSource1: TDataSource;
   DBGrid1: TDBGrid;
 private
   { Private declarations }
 public
   { Public declarations }
 end;


Vlad   (2004-05-17 15:14:00) [30]


> evgen   (17.05.04 15:10) [10]
> А это что?

А это значит ты в разделе type не объявил тип
TMyDBGrid = class(TDBGrid);
Читай внимательнее [5] пост


evgen   (2004-05-17 15:10:00) [31]

А это что?
В строке:
with TMyDBGrid(DBGrid1).DataLink do
ошибка:
[Error] Unit1.pas(36): Undeclared identifier: 'TMyDBGrid'


Vlad   (2004-05-17 14:55:00) [32]


> evgen   (17.05.04 14:53) [8]

Извини, брат, совсем забыл (горе мне)
uses ComObj
:-)


evgen   (2004-05-17 14:53:00) [33]

Дает ошибку, похоже чегото не хватает на форме:
[Error] Unit1.pas(32): Undeclared identifier: 'CreateOleObject'
в строке:
ExApp:=CreateOleObject('Excel.Application');


evgen   (2004-05-17 14:42:00) [34]

Спасибо. Сейчас посмотрю!


Соловьев   (2004-05-17 14:32:00) [35]

сколько у.е.?


Vlad   (2004-05-17 14:32:00) [36]


> evgen   (17.05.04 14:03)  

Вот, не поленился специально для тебя написал примерный код:

type
TMyDBGrid = class(TDBGrid);
.....
procedure ToExcel;
var
 a,b: Integer;
 ExApp, WB, WS: Variant;
begin
 ExApp:=CreateOleObject('Excel.Application');
 WB:=ExApp.WorkBooks.Add;
 WS := ExApp.Workbooks[1].WorkSheets[1];
 with TMyDBGrid(DBGrid1).DataLink do
 begin
   for a:=0 to (RecordCount-1) do
   begin
     for b:=0 to (FieldCount-1) do
     begin
       WS.Cells[a+1, b+1].Value:=Fields[b].AsString;
     end;
   end;
   ExApp.Visible:=true;
 end;
end;


Здесь содержимое DBGridвыгружается на лист Excel
Но это ли тебе надо ?


evgen   (2004-05-17 14:29:00) [37]

Нужен исходник который выполняет экспорт содержимое из DBgrid в Excel


Соловьев   (2004-05-17 14:24:00) [38]

[1]


evgen   (2004-05-17 14:22:00) [39]

Есть исходник по вопросу?


Соловьев   (2004-05-17 14:07:00) [40]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=502
http://www.ehlib.com


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо