Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Вниз

Уважаемые мастера, а можно ли.... 


Саня   (2001-12-06 13:54) [0]

Очень охота из таблицы (paradox) какие-то столбцы перекачать
в Word (Excel) и чтоб там тоже был вид таблицы. Очень нуна :(



Cheburek   (2001-12-06 14:25) [1]

хм... сохрани парадоксовскую табличку в формате DBASE и открывай в Excel"е на здоровье



Саня   (2001-12-10 16:16) [2]

Сам доехал... Если кому поможет - буду рад!
Возможно коряво, но у меня работает. Надоть только чтоб по указанному пути находился заранее созданый файл екселя, с отформатированными столбиками и т.д.
Код из работающей проги... Если не понятно то ? на ctd_2000@hotmail.ru


procedure TfmGlav.Button4Click(Sender: TObject);
var vExcel: OLEVariant;
i, n: integer;
begin
i:=5; (записи будут всавляться с пятой строки в екселе)
n:=1;
DataSourse1.DataSet.DisableControls; (и для TTable и для TQuery)
DataSourse1.DataSet.First;
vExcel:=CreateOleObject("Excel.Application");

(здесь надо чтобы книга екселя находилась по указанному пути)
vExcel.Workbooks.Open("\\Sasha\c\Rabota\Table\Для отбора.xls", False);
while not DataSourse1.DataSet.eof do
begin
vExcel.Cells[1,1].Value:="Заголовок отчета"; (в первую строку пишем заголовок для переданных данных)
vExcel.Cells[i,1].Value:=""+inttostr(n)+""; (нумерация по первой колонке)

vExcel.Cells[i,2].Value:=DataSourse1.DataSet.fieldbyname("Name").asstring;
vExcel.Cells[i,3].Value:=DataSourse1.DataSet.fieldbyname("RegN").asstring;
vExcel.Cells[i,4].Value:=DataSourse1.DataSet.fieldbyname("City").asstring;
(и т.д. для всех нужных полей БД)
dsZak.DataSet.next;
inc(i);
inc(n);
end;
DataSourse1.DataSet.EnableControls;

vExcel.Visible := True;

end;



Delirium   (2001-12-10 16:34) [3]

А теперь попробуй вот так :)

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
M,S:String;
AppExcel: Variant;
begin
Table1.First;
M:="";
while not Table1.Eof do
begin
S:="";
for i:=0 to Table1.FieldCount-1 do
S:=S+Table1.Fields[i].AsString+#9;
Delete(S,Length(S),1);
M:=M+S+#13;
Table1.Next;
end;
RichEdit1.Lines.Text:=M;
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;
AppExcel := CreateOleObject("Excel.Application");
AppExcel.WorkBooks.Add;
AppExcel.ActiveSheet.Paste;
AppExcel.Visible := true;
AppExcel:=UnAssigned;
end;

Оцени производительность



well   (2001-12-10 16:38) [5]

Посмотри статью на этом сайте, там в принципе все есть, с примерами но для CBuilder
http://src.fitkursk.ru/articles/art0000028.asp



Саня   (2001-12-10 16:45) [6]

То Delirium ...
Быстро..., однако :)
Но вставка прошла какая то корявая.. :(
Не по столбцамм и не все строки... Вообщето сам докумекаю...
Сэнкс!!



Саня   (2001-12-10 16:49) [7]

> Well
Ок!



Delirium   (2001-12-10 19:06) [8]

> Саня
После Paste вставь этот кусочек, и с шириной колонок будет всё в порядке.

for i:=0 to Table1.FieldCount-1 do
AppExcel.ActiveSheet.Columns[i+1].ColumnWidth:=
Table1.Fields[i].DisplayWidth;



Саня   (2001-12-11 12:52) [9]

for Delirium
Это опять я :)
Подскажи пжалуста...
Почемуйто с твоим кодом вставляет только одну строку (1-ю)
Поворочал мозгами.... безрезультатно :(
Наверное крыша совсем задымилась - надо в отпуск...



Delirium   (2001-12-11 13:01) [10]

>Саня
Я привел рабочий код, без искажений - смотри у себя.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.015 c
1-42484           GARIK_PR              2001-12-25 10:43  2002.01.14  
Помогите чем сможете в области ActiveX программирования.


1-42427           Катерина              2001-12-24 08:15  2002.01.14  
помогите с отчетом


3-42366           comwad                2001-12-11 13:50  2002.01.14  
LIKE в хранимой процедуре


1-42488           Анатолий              2001-12-24 05:39  2002.01.14  
Метка


14-42572          Donal                 2001-11-16 17:19  2002.01.14  
а вот такой вопрос :-)