请问各位大侠一个有关Delphi中向word 中加数据的问题(200分)

  • 主题发起人 主题发起人 dcom
  • 开始时间 开始时间
D

dcom

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]
在dephi 中调用word,并在word 中加入标题、表格,现在我已在表格中加入了数据,
想跳出表格进行下一标题和表格的操作,但是不能够跳出上一表格,我如做?在此谢谢
大家!
 
[:(]
请大家帮帮忙
 
为什么没有人帮忙,是不是我描述的不够清楚?
那么我再详细的说一下我的问题吧
程序是这样的:
procedure TfrmPlag.BtnPrintClick(Sender: TObject);
Var
i,j:integer;
begin

WordAplag.Connect ;
WordAplag.Visible :=True;
WordAplag.Documents.AddOld(EmptyParam,EmptyParam);


//******************* Title *************************
WordAplag.Selection.Font.Name :='宋体';
WordAplag.Selection.Font.Bold :=1;
WordAplag.Selection.Font.Size := 14;
WordAplag.Selection.ParagraphFormat.Alignment :=wdAlignParagraphCenter;

WordAplag.Selection.TypeText(inttostr(Y1)+'年'+inttostr(M1)+'月固定资产折旧表');

//******************* content *************************
WordAplag.Selection.TypeParagraph;
WordAplag.Selection.Font.Size :=9;
WordAplag.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
WordAplag.Selection.Tables.AddOld(WordAplag.Selection.Get_Range ,Sgrdshow.Rowcount,10);
WordAplag.Selection.Cells.Width:=100;
for i:=1 to Sgrdshow.Colcount-1 do begin
for j:=0 to Sgrdshow.Rowcount-1 do begin
WordAplag.ActiveDocument.tables.Item(1).Cell(j+1,i).Range.Text :=Sgrdshow.Cells[i,j];
End ;

End;

[red]WordApp.Selection.TypeParagraph;//
WordApp.Selection.TypeParagraph;
//我是想把 '附属设备' 写在上面表格的下面的,可是它总是写在表格内
//在这里我怎样写才能将光标跳出表格呢?

WordApp.Selection.Text :='附属设备';[/red]
WordAplag.Destroy ;

end;

再次谢谢大家!
 
没有人会吗?
 
procedure TForm7.ToolButton1Click(Sender: TObject);
var start,endd:olevariant;
ran2,ran:range;
tab:table;
i,j:integer;
begin

{ran:=wordapplication1.ActiveDocument.Range(start,endd);
ran.InsertAfter(edit2.Text);
ran.InsertParagraphAfter;
ran.Font.Name:='隶书';
ran.Font.Size:=24;
ran.Font.Color:=clred;}

tab:=wordapplication1.ActiveDocument.Tables.Item(1);
tab.cell(1,1).range.text:='插入到表格';

for i:=1 to tab.Rows.Count do
for j:=1 to tab.Columns.count do
begin
tab.cell(i,j).Range.Text:=inttostr(i)+inttostr(j)+'表格';
end;
start:=77;
endd:=77;
ran:=wordapplication1.ActiveDocument.Range(start,endd);
ran.InsertAfter('edit2.Text');
ran.InsertParagraphAfter;
ran.Font.Name:='隶书';
ran.Font.Size:=24;
ran.Font.Color:=clred;
end;
表格也算字符位置,
 
请问陈晨:
程序中 [red]start:=77;
endd:=77;[/red]
指的是什么?还有77是怎么得出来的?
谢谢!

 
谢谢陈晨!
我觉得你程序中的
start:=77;
endd:=77;
应该写为:
start:=wordapplication1.Selection.Tables.Item(1).Range.Get_End_;
endd:=wordapplication1.Selection.Tables.Item(1).Range.Get_End_;
才对
 
如果你用的是Delphi 自带的控件。

先说标题
WordApplication.ActiveDocument.Paragraphs.Last.Range.InsertAfter('your Title');//当前活动文档
//WordAplag.Documents.Item(j).Paragraphs.Last.Range.InsertAfter('your Title');某一个文档j
WordApplication.ActiveDocument.Paragraphs.Last.Alignment:= wdAlignParagraphCenter;//居中对齐
到第i个表格
WordAplag.ActiveDocument.Tables.Item(i).Cell(Row,Col).Range.Text:='Your Text';//当前活动文档
//WordAplag.Documents.Item(j).Tables.Item(i).Cell(Row,Col).Range.Text:='Your Text';//某一个文档j


type
WdParagraphAlignment = TOleEnum;
const
wdAlignParagraphLeft = $00000000;
wdAlignParagraphCenter = $00000001;
wdAlignParagraphRight = $00000002;
wdAlignParagraphJustify = $00000003;
 
.....
var
WdUnit, WdCount, wdExtend: OleVariant;
.....
......
//我是想把 '附属设备' 写在上面表格的下面的,可是它总是写在表格内
//在这里我怎样写才能将光标跳出表格呢?
WdUnit := wdScreen;
wdCount := 5;//向下移动的行数
wdExtend := EmptyParam;
WordAplag.Selection.MoveDown(WdUnit, wdCount, wdExtend);
WordAplag.Selection.TypeParagraph;//
WordAplag.Selection.Text :='附属设备';
WordAplag.Destroy ;
 
to:dcom
真不好意思,我连Get_End_是什么都不知道从哪里来的。

 
[:)]
感谢大家,我已接受答案了。
 
我有一招,你肯定知道插入表之前的Pregraph编号,先记住它,然后先把表外的文字写完,最后
移动到在所记下的Pregraph号后添加表格。
还有一招,如果你记下最后表格添入的文字所在的段落号(Word是以回车作为段落分界的,所以
每个表格框就是一个段落。),然后段落号加一,你就可以移出表格了。
 
后退
顶部