Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.027 c
15-1144848011
Толян
2006-04-12 17:20
2006.05.07
MySQL


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


15-1145001267
valdemot
2006-04-14 11:54
2006.05.07
Проблема с Windows


2-1145190780
Мих
2006-04-16 16:33
2006.05.07
Базы данных


15-1144829765
user026
2006-04-12 12:16
2006.05.07
Где найти документацию по формату хранения типов данных в памяти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский