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

Вниз

Работа через Delphi с Word   Найти похожие ветки 

 
Salvator   (2002-10-28 22:41) [0]

Мастера, как через Delphi, добавить в уже имеющийся документ Word таблицу и работать с ней?


 
Snake ©   (2002-10-29 05:20) [1]

Попробуй примерно следующее:

procedure TForm1.Button1Click(Sender: TObject);
var R:Range;
Pkol,s:string;
begin
WA.AutoConnect:=false;
WA.AutoConnect:=true;
WA.Visible := True;
WA.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);

WD.ConnectTo(WA.ActiveDocument);

WD.Paragraphs.Add(EmptyParam);
R := WD.Paragraphs.Last.Range;
r.InsertAfter("Таблица");
WD.Paragraphs.Add(EmptyParam);
r.Paragraphs.Add(EmptyParam);
R := WD.Paragraphs.Last.Range;

r.Paragraphs.Format.Alignment:=0;
R := WD.Paragraphs.Last.Range;
S := "№" + #9 +
"Название" + #9 +
"Характер работы" + #9 +
"Выходные данные" + #9 +
"Число страниц" + #9 +
"Соавторы" + #9;
R.InsertAfter(S);
S := "а) печатные научные работы" + #9 +
"" + #9 +
"" + #9 +
"" + #9 +
"" + #9 +
"" + #9;
R.InsertAfter(S);
s:="1"+#9+"Строка 1"+#9+
"Строка 1-1"+#9+"Строка 1-2"+#9+
"Строка 1-3"+" с."+PKol+#9;
"Автор"+#9;
R.InsertAfter(S);

wd.Tables.Item(1).Rows.Item(RN).Cells.Merge;
wd.Tables.Item(1).Rows.Item(RN).Select;
WA.Selection.Font.Bold:=1;

wd.Tables.Item(1).Rows.Item(1).Select;
WA.Selection.Font.Bold:=1;
WA.Selection.Paragraphs.Format.Alignment:=1;
WD.Paragraphs.Add(EmptyParam);
r:=WD.Paragraphs.Last.Range;

WA.Selection.TypeParagraph;
end;


где WD - TWordDocument
WA - TWordApplication

Правда вот не поню, есть ли в D5 эти компоненты


 
Salvator   (2002-10-29 22:17) [2]

Спасибо за ответ, но может быть я что-либо сделал не так, однако результат получился следующим:

Таблица

№ Название Характер работы Выходные данные Число страниц Соавторы а) печатные научные работы 1 Строка 1 Строка 1-1 Строка 1-2 Строка 1-3 с. Автор

это просто текст, разбитый на колонки, с помощью табов, а нужна таблица. Примерно так

Министерство образования РФ

Таблица 5 на 5


Если знаете как это сделать, то пожалуйста подскажите.
С уважением, Salvator


 
[NIKEL] ©   (2002-10-30 00:50) [3]

На Builder`e писал как-то - может поможет
сначала создай конечно все объекты и подкл. к ворду

long num_rows = 5;
long num_col = 3;

Variant doc = word.OlePropertyGet("ActiveDocument");
Variant range = doc.OleFunction("Range");

range.OleProcedure("Collapse", (Variant)0);

//Вставляем
Variant tables = range.OlePropertyGet("Tables");
Variant table = tables.OleFunction("Add",
range, (Variant)num_rows, (Variant)num_col);


 
skiph ©   (2002-10-30 06:06) [4]

vvWord.ActiveDocument.Tables.Add(vvWord.Application.Selection.Range,CountRows,CountColumns,1,0);


 
Salvator   (2002-10-30 19:51) [5]

Спасибо за ответ, но в Delphi процедуры OlePropertyGet нет, есть ли идентичная ей процедура?


 
[NIKEL] ©   (2002-10-31 00:17) [6]

просто пиши word.ActiveDocument; и т.д (подкл. ComObj и Excel200(?))


 
Salvator   (2002-11-01 19:18) [7]

Заменил OlePropertyGet на ActiveDocument в результате получил следующий текст:

var R:Range;
Pkol,s:string;
num_rows,num_col:longint;
doc,range,table,tables:variant;
begin
WordApplication1.AutoConnect:=false;
WordApplication1.AutoConnect:=true;
WordApplication1.Visible := True;
WordApplication1.Documents.Add(EmptyParam,EmptyParam);
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
num_rows := 5;
num_col := 3;

doc := WordApplication1.ActiveDocument.Get_Tables;
range := doc.ActiveDocument;
range.ActiveDocument.Collapse;
tables := range.ActiveDocument.Tables;
table := tables.OleFunction.Add(
range,num_rows,num_col);
end;

Однако при запуске программы она выдает ошибку: Method “ActiveDocument” not supported by automation object. В чем глюк?



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
8-34134
Sour
2002-07-20 23:09
2002.11.11
Оттенки цвета


1-34081
ИгорьК
2002-10-31 11:43
2002.11.11
Доступ к компоненту на форме, из которой создана текущая


1-34030
sterran
2002-11-01 19:08
2002.11.11
Помогите найти компонент TextReport...


3-33872
NeyroSpace
2002-10-21 14:38
2002.11.11
Если 2а IBQuery вешаются на одну IBTransaction1, какой из них


7-34280
Master Noname
2002-09-04 12:24
2002.11.11
Driver for USB