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

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

Как DBF-файл открыть в EXCEL? [D6, dBase, FoxPro]


Страницы:   1 2

Diman ©   (2004-08-12 11:54:00) 

Есть таблица DBF с неизвестным кол-вом полей.Как ее занести в EXCEL?


Diman   (2004-08-12 15:07:00) [1]

Проблема вот в чем, открываю одну таблицу, она открывается - сколько хочу раз, закрываю ее в Excel, открываю другую - не хочет.:(


Danilka   (2004-08-12 14:48:00) [2]

[20] Diman   (12.08.04 14:32)
Запусти эксель (не дельфями, не через оле, а по-обычному). Открой любой файл. Затем попытайся его еще раз открыть, что видишь? Вот это и есть твои "глюки".

Ты первый раз открыл в экселе свою ДБФ-ку, после того как поработал с ней надо ее закрывать.


> может и забыл, а какой файл?

свою ДБФ-ку.
Как закрывать? close, очевидно. :))


Diman   (2004-08-12 14:32:00) [3]

может ты просто забыл закрыть файл после первого раза? :))
- может и забыл, а какой файл?
 Когда убрал  ExcelApp := GetActiveOleObject('Excel.Application');
 все заработало! А что делать, если Excel уже открыт?


Danilka   (2004-08-12 14:28:00) [4]


> а потом стал запускать - одни глюки...

Что значит "одни глюки"? Точно одни, можен еще с кем-то? :))


> получилось 1 раз

может ты просто забыл закрыть файл после первого раза? :))


Diman   (2004-08-12 14:19:00) [5]

Неа, не получилось, точнее, получилось 1 раз, а потом стал запускать - одни глюки...
edit1.Text := FN.FileName;
 if copy(edit1.text,length(edit1.text)-3,4) = '.dbf' then
   begin
    // showmessage('DBF');

     try
       ExcelApp := GetActiveOleObject('Excel.Application');
     except
       ExcelApp := CreateOleObject('Excel.Application');
     end;
     WorkBook := ExcelApp.WorkBooks.Open(edit1.text);
     ExcelApp.Visible := True;
   end;


Skyle   (2004-08-12 13:56:00) [6]


> [10] Diman   (12.08.04 12:42)

Страсти какие...:(


Danilka   (2004-08-12 13:52:00) [7]

[15] 46_55_41_44 ©   (12.08.04 13:46)
> помоему все-таки лучще через АДОконнекшн! )))

Кому именно лучше?
Если пользователям, то нет, зачем им ждать 10 секунд там, где может отработать за доли секунды.
Если программисту, то тоже нет, написать 1 строчку Workbooks.Open вместо целой кучи строчек и используемых компонентов..


46_55_41_44   (2004-08-12 13:46:00) [8]

Ну как получилось?
помоему все-таки лучще через АДОконнекшн! )))


Diman   (2004-08-12 13:06:00) [9]

>Danilca@
Действительно, сейчас попробую сразу открыть через Open, Спасибо.


Danilka   (2004-08-12 12:52:00) [10]

[11] 46_55_41_44 ©   (12.08.04 12:46)
Открыть ДБФ-ку в экселе будет на порядок быстрее, чем через оле.
А чтобы открыть ее опять-же создаешь оле объект Эксель.Аппликацион, и делаешь ему Workbooks.Open


Diman   (2004-08-12 12:50:00) [11]

Остальная часть пусть будет для всех !
А как читать из DBF, не через READLN же?


46_55_41_44   (2004-08-12 12:46:00) [12]

понятно... но зачем ту часть, которая мне известна выложил? )))
Эти функции у меня есть )))
Кстати тем же макаром делаешь из DBF.
просто соединяешь ее с DBGrid (вместо mem будет например ADOQuery, соединенный с *.DBF)  и все...
остается только RTF! )))


Diman   (2004-08-12 12:42:00) [13]

unit txt_to_DBGrid;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, DBGrids, StdCtrls, Buttons, DB, RxMemDS, OleServer,ComObj;

type
 TForm1 = class(TForm)
   DBGrid1: TDBGrid;
   SpeedButton1: TSpeedButton;
   Edit1: TEdit;
   FN: TOpenDialog;
   Button1: TButton;
   MEM: TRxMemoryData;
   DataSource1: TDataSource;
   MEMF0: TIntegerField;
   MEMF1: TIntegerField;
   MEMF2: TIntegerField;
   MEMF3: TIntegerField;
   MEMF4: TIntegerField;
   MEMF5: TIntegerField;
   MEMF6: TIntegerField;
   MEMF7: TIntegerField;
   MEMF8: TIntegerField;
   MEMF9: TIntegerField;
   BitBtn1: TBitBtn;
   procedure Button1Click(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure SpeedButton1Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);

 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

const a: array[0..9] of string[1] = ('0','1','2','3','4','5','6','7','8','9');

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 f: textfile;
 s,s1,S2: string;
 k: integer;

function ReplaceStr(const S, Srch, Replace: string): string;
var
q: Integer;
Source: string;
begin
Source := S;
Result := '';
repeat
  q := Pos(Srch, Source);
  if q > 0 then begin
    Result := Result + Copy(Source, 1, q - 1) + Replace;
    Source := Copy(Source, q + Length(Srch), MaxInt);
  end
  else Result := Result + Source;
until q


46_55_41_44   (2004-08-12 12:34:00) [14]

давай сюда кодик )))
у меня есть свой юнит Fuad_Excel.pas собрал там всякие функции для работы с Excel... Может твоя тоже понадобится ))


46_55_41_44   (2004-08-12 12:32:00) [15]

так секундочку... как ты из текстового сделал?


Diman   (2004-08-12 12:30:00) [16]

Да Fuad! Из текст-файла получилось! теперь надо из DBF и RTF!


jack128   (2004-08-12 12:28:00) [17]

ShellExecute(0, nil, 'excel.exe', DBFFileName, nil, SW_SHOW);


46_55_41_44   (2004-08-12 12:24:00) [18]


> Diman   (12.08.04 12:18) [4]

Ну что Диман.. Ты наконец-то перевел свои данные в Excel?


Diman   (2004-08-12 12:18:00) [19]

Надо через Делфи, напр. кнопка "Открыть в Excel", а перед этим показать DBF-таблицу в DBGrid.


Соловьев   (2004-08-12 12:03:00) [20]

хотя если включить телепат моде то
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=502


Страницы:   1 2

Наверх

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