Форум: "Базы";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];
Внизиз базы данных в EXEL Найти похожие ветки
← →
Alex17 (2005-06-21 18:52) [0]Всем привет, пожалуйста, скажите, как мне из базы данных в которой я не знаю скока строк и столбцов перенести всё в EXEL.
есть две разные базы dbf и paradox дайте, пожалуйста, пример для обеих.
← →
YurikGL © (2005-06-21 18:54) [1]Сначала программно узнаешь сколько таблиц, полей и записей... потом по очереди переносишь в excel. А можно и запросом.
А еще можно через буфер попробовать перенести...
Так что пиши с каким их шагов у тебя проблема...
← →
YurikGL © (2005-06-21 18:55) [2]>их шагов
из шагов
← →
Alex17 (2005-06-21 18:59) [3]Извените но я с базами толко начил позновать и толком не врубаюсь как это точно делать если вам не дайтепримеры для dbf и paradox пожалуйста.
← →
Alex17 (2005-06-21 19:06) [4]Удалено модератором
← →
Alex17 (2005-06-21 19:34) [5]У меня проблема с определением скоко солбцов и строк в базе а затем перенос в EXEL
← →
ANB © (2005-06-21 19:53) [6]Нужен общий подход (DBF и Paradox), или можно по отдельности ?
← →
ANB © (2005-06-21 19:58) [7]Вот это - для DBF. Читаешь в TRDBFHeader начало файла DBF - имеешь инфу о таблице, т.е. количество полей и строк. Затем читаешь описание полей в TRDBFField - и имеешь имена полей.
type
TRDBFHeader = record
Descriptor : Byte;
{0x03(3)простая таблица
0x04(4)простая таблица
0x05(5)простая таблица
0x43(67)с мемо-полем .dbv
0xB3(179)с мемо-полями .dbv .dbt
0x83(131)с мемо-полем .dbt
0x8B(139)с мемо-полем .dbt формат D4
0x8E(142)SQL-таблица
0xF5(245)с мемо полем .fmp}
updYear : Byte;
updMonth : Byte;
updDay : Byte;
RecordsCount : LongWord;
HeaderSize : Word;
RecordSize : Word;
Reserv1 : Word;
InTransaction : Byte;
InCrypt : Byte;
MultiUser : array [1..12] of Char;
UseIndex : Byte;
{0x01 Используется индекс
0x00 Индекс не используется}
LangDriver : Byte;
{ n Номер драйвера языка
0x01(1) кодовая страница 437 DOS USA
0x02(2) кодовая страница 850 DOS Multilang
0x26(38) кодовая страница 866 DOS Russian
0x57(87) кодовая страница 1251 Windows ANSI
0xC8(200)кодовая страница 1250 Windows EE
0x00(0) игнорируется}
Reserv2 : Word;
end;
TRDBFField = record
FldName : array [1..11] of Char;
FldType : Char;
FldOffset : LongWord;
FldSize : Byte;
FldPrec : Byte;
Reserv1 : Word;
WorkArea : Byte;
MultiUser : Word;
SetFields : Byte;
Reserv2 : Word;
InIndex : Byte;
end;
TRMemoHeader = record
NextFreeBlock : LongWord;
BlockSize : LongWord;
Description : array [0..503] of Char;
end;
TRMemoBlock = record
Signature : LongWord;
BlockSize : LongWord;
end;
К парадоксу лучше через BDE подключаться.
← →
rosl (2005-06-22 02:40) [8]Не знаю поможет или нет, но вот кусок кода которым я пользовался для передачи данных из DBGrid в Excel:
procedure TForm1.Button_exportClick(Sender: TObject);
var
i: Integer;
memo: TMemo;
bm: TBookmark;
mem: TMemo;
ExcelApp: Variant;
begin
if dm.Table1.RecordCount = 0 then
begin
messagedlg("Нет данных для импорта...", mtWarning , [mbOk], 0);
exit;
end;
dm.Table1.First;
progress_f.ProgressBar.BarColor:=$0077BC10;
progress_f.Show;
progress_f.Caption:="Активация MS Excel";
progress_f.ProgressBar.Position:=10;
dm.Table1.DisableControls;
SelfDir := ExtractFilePath(Application.ExeName);
ExcelApp:=CreateOleObject("Excel.Application");
ExcelApp.WorkBooks.Open (SelfDir + "report.xlt");
progress_f.Caption:="Подготовка данных...";
progress_f.ProgressBar.Position:=20;
// Сперва отправляем данные в memo
mem := TMemo.Create(Self);
mem.Visible := false;
mem.Parent := Form1;
mem.Clear;
sline := "";
progress_f.Caption:="Получение данных...";
progress_f.ProgressBar.Position:=40;
// получаем данные из memo
for row := 0 to Grid_main.DataSource.DataSet.RecordCount-1 do
begin
sline := "";
for col := 0 to Grid_main.FieldCount-1 do
sline := sline + Grid_main.Fields[col].AsString + #9;
mem.Lines.Add(sline);
Grid_main.DataSource.DataSet.Next;
end;
progress_f.Caption:="Копирование данных в буфер обмена...";
progress_f.ProgressBar.Position:=60;
// копируем данные в clipboard
mem.SelectAll;
mem.CopyToClipboard;
// отправляем их в Excel
begin
progress_f.Caption:="Перенос данных в MS Excel...";
progress_f.ProgressBar.Position:=80;
// вставка
ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Cells[28,2].Select; // установка левой верхней ячейки для потока из DBGrid
ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Paste; // вставка потока
ExcelApp.Cells[dm.Table1.RecordCount + 31 , 2]:="Справочно:";
ExcelApp.Cells[dm.Table1.RecordCount + 32 , 2]:="1. Общее количество счетов физических лиц (шт.) _________________, в т.ч. размер которых превышает 100 тыс. руб. (шт.) ______________";
ExcelApp.Cells[dm.Table1.RecordCount + 33 , 2]:="2. Общая сумма обязательств по вкладам, размер которых не превышает 100 тыс. руб. (тыс. руб.) ____________";
ExcelApp.Cells[dm.Table1.RecordCount + 36 , 2]:="Руководитель ___________________________________";
ExcelApp.Cells[dm.Table1.RecordCount + 37 , 2]:="Главный бухгалтер _______________________________";
ExcelApp.Cells[dm.Table1.RecordCount + 38 , 2]:="М.П.";
ExcelApp.Cells[dm.Table1.RecordCount + 39 , 2]:="Исполнитель ___________________________________";
ExcelApp.Cells[dm.Table1.RecordCount + 40 , 2]:="Телефон:";
ExcelApp.Cells[dm.Table1.RecordCount + 41 , 2]:=""__" ________ ____ г.";
ExcelApp.Workbooks[1].WorkSheets["Приложение 7"].Range[ExcelApp.Cells[28, 2],ExcelApp.Cells[dm.Table1.RecordCount + 27, 18]].Borders.Weight := 2;
progress_f.Caption:="Данные перенесены...";
progress_f.ProgressBar.Position:=100;
progress_f.Close;
progress_f.ProgressBar.Position:=0;
ExcelApp.Visible := true; // сделать excel видимым
end;
Grid_main.DataSource.DataSet.GotoBookmark(bm);
Grid_main.DataSource.DataSet.FreeBookmark(bm);
Grid_main.DataSource.DataSet.EnableControls;
Screen.Cursor := crDefault;
dm.Table1.EnableControls;
end;
← →
msguns © (2005-06-22 09:15) [9]>Alex17
Посмотри почту
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.07.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.03 c