Форум: "Базы";
Текущий архив: 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]>Саня
Я привел рабочий код, без искажений - смотри у себя.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c