Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.07;
Скачать: CL | DM;

Вниз

dbf Excel требуется грамотный ответ   Найти похожие ветки 

 
de_ICER-T44   (2006-03-17 11:26) [0]

суть приколюхи такая - требуется сделать экспорт *.dbf прямо из TTable в Excel. Пробовал сделать это все на уровне ExcelApplication->ExcelWorkbook.
открыть excel получается, данные о количестве полей и столбцов в дбф имеются, заполнение экселевских строк сделать могу, не получается перевести таблицу в эксель единым массивом, построчно тоже. Посоветуйте что с этим сделать....

Далее...
Печать из dbgrid настроил, все нормально, печатает... не хватает одной вещи... если лист poLandscape, просчет уменьшения полей в печать есть, автоматическое изменение шрифта есть, но в таблице 20 столбцов, каждый по 120 символов, которые наверняка заполнены. требуется сделать печать так, чтобы все 20 столбцов входили в лист, а также ВСЕ ВВЕДЕННЫЕ СИМВОЛЫ ОСТАЛИСЬ!!!! что-то типа экселевской процедуры - уместить на 1 лист в ширину.

ответы на мыл zakat-aria@mail.ru

//внимание! дАЮ ИСХОДНИК ПРОЦЕДУРЫ, КОТОРАЯ ДОЛЖНА У МЕНЯ ВЫПОЛНЯТЬСЯ (ЭКСПОРТ В ЭКСЕЛЬ)
//ВСЕ ЧТО Я ХОЧУ - УКАЗАНО В ТЕКСТЕ ИСХОДНИКА

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, OleServer, Excel2000, DBTables, DB;

type
 TForm1 = class(TForm)
   Table1: TTable; //активная таблица с сессией
   Session1: TSession;
   ExcelApp: TExcelApplication; // это думаю и так всем понятно, server
   Timer1: TTimer; // таймер поставил для выполнения события, хотя можно было и по form1.onshow
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
// table настроен на c:\1\1.dbf
// процедурой winexec("excel "c:\1\1.dbf"",SW_SHOWNORMAL);
// пользоваться никакого желания не имею
// обращаю внимание на то, что в таблице - 20 столбцов, в каждом столбце ширина - 120 символов, т.е.
// сюда можно приделать еще изменение столбцов экселя(автоматически под количество введенных символов).
// кстати, в таблице, которой я пользуюсь значение table1.recordcount=16401 и будет увеличиваться
// каждый месяц на 500-1000 записей. хотелось бы не ждать 2 часа вывода записей.

procedure TForm1.Timer1Timer(Sender: TObject);
var
Workbook, Range, Cell1, Cell2, ArrayData, a : Variant;
Stolbec, Stroka, i, j : integer;
ColStrok, ColStolb : integer;
begin
//координаты левого верхнего угла экселя
Stolbec := 1;
Stroka := 5;
//размеры массива данных
ColStrok := table1.RecordCount;
ColStolb := table1.FieldCount;
ExcelApp.Application.EnableEvents := false;
Workbook := ExcelApp.WorkBooks.Add("c:\1\1.xls",0);
//массив, в который мы кидаем данные
ArrayData := VarArrayCreate([1, ColStrok, 1, ColStolb], varVariant);
//нужно заполнить массив.... КАКИМ ОБРАЗОМ СЮДА ЗАПИХАТЬ ДАННЫЕ ТАБЛИЦЫ???
for i:=1 to ColStrok do
for J := 1 to ColStolb do

//ЧТО ДОЛЖНО БЫТЬ ТУТ?????
ARRAYDATA - явно не она...

//определяем первичную ячейку области, в которую будем выводить данные
Cell1 := WorkBook.WorkSheets[1].Cells[Stroka, Stolbec];
//определяем вторичную ячейку области, в которую будем выводить данные
Cell2 := WorkBook.WorkSheets[1].Cells[Stroka + ColStrok - 1, Stolbec +
ColStolb - 1];
Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];
Range.Value := ArrayData;
ExcelApp.Visible[0] := true;
Application.Terminate;
end;

end.


 
sniknik ©   (2006-03-17 11:29) [1]

спам



Страницы: 1 вся ветка

Текущий архив: 2006.05.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
2-1145290585
cava
2006-04-17 20:16
2006.05.07
С математикой не лады


15-1144757012
Vitaliy85
2006-04-11 16:03
2006.05.07
Народ! Спасите бедного студента!


3-1142320350
sanich
2006-03-14 10:12
2006.05.07
Как получить все комбинации в запросе?


3-1141962120
кораблик
2006-03-10 06:42
2006.05.07
Помогите разобраться с DBLookupComboBox


9-1128282128
3d[Power]__
2005-10-02 23:42
2006.05.07
OGG via directsound