我在word中增加了表格,但我并不知道我增加的表格是第几个,怎么向新增的表格中写东西?(100分)

  • 主题发起人 主题发起人 wweijie
  • 开始时间 开始时间
W

wweijie

Unregistered / Unconfirmed
GUEST, unregistred user!
通常我们用
wordapplication.ActiveDocument.Tables.Item(1).Cell(i,j).Range.InsertAfter('**');来向单元格写东西,但我是通过查找关键字的方式在word中定位,然后插入的新的表格,我不知道我新插入的表格是word中的第几个表格怎么向其中的单元格中写入东西?
另外一个问题
用delphi打开了word,delphi能否知道用户是否更改了word的内容?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2236679
 
wordapplication.ActiveDocument.Tables.Item(1).是第一个表格,
wordapplication.ActiveDocument.Tables.Item(2).是第二个表格,
......
wordapplication.ActiveDocument.Tables.Item(n).是第n个表格。
 
但我并不知道我要操作的表是第几个表
 
表格是你建的,按顺序生成的,可用一个变量表示如K,
n:=WordApplication1.ActiveDocument.Tables.Get_Count;
是文档中表格总数。
 
完全是你自己建立的就自己管理好!
 
是这样的,用户提前准备一份word作为模版,程序替换其中的某一部分,并在其中添入表格,可我并不知道我插入的表格是第几个,可能是第一个,也可能是第八个,也不知道是不是最后一个。怎么办?
 
//查找
TextRange.Find.Execute(SearchText, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, Wrap,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
TextRange.SetRange(TextRange.End_,TextRange.End_);//关标定位到找到的文本的之后
wordapplication1.ActiveDocument.Tables.Add(TextRange,2,2, EmptyParam, EmptyParam);
n:=WordApplication1.ActiveDocument.Tables.Get_Count;
for i:=1 to 2 do
for k:=1 to 2 do
begin
wordapplication1.ActiveDocument.Tables.Item(n).Cell(i, k).Width:=200;
wordapplication1.ActiveDocument.Tables.Item(n).Cell(i, k).Height:=24;
wordapplication1.ActiveDocument.Tables.Item(n).Cell(i, k).Range.InsertAfter('Cell,'+intToStr(i)+','+intToStr(k));
end;
 
谢谢各位,我忽略了Tables.Add的返回值了,他返回一个table类型的值就是当前我添加的表格。
var
TextRange:range;
SearchText,Wrap:Olevariant;
i:byte;
ADate: array of string;
pos: integer;
InsertTable: Table;
begin
TextRange := wordapplication.ActiveDocument.Content;
SearchText :='/s quoteprice';
Wrap:=wdFindStop;
//查找
TextRange.Find.Execute(SearchText, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, Wrap,
EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam);
pos := TextRange.End_;
TextRange.SetRange(pos,pos);
setlength(ADate,10);
for i:=0 to 9 do
setlength(ADate, 4);

InsertTable := wordapplication.ActiveDocument.Tables.Add(TextRange,high(ADate),5, EmptyParam,
EmptyParam);
InsertTable.Cell(1,1).Range.InsertAfter('产品名称');
InsertTable.Cell(1,2).Range.InsertAfter('产品类型');
InsertTable.Cell(1,3).Range.InsertAfter('单价');
InsertTable.Cell(1,4).Range.InsertAfter('数量');
InsertTable.Cell(1,5).Range.InsertAfter('总价');

for i:=2 to 9 do
begin
InsertTable.Cell(i,1).Range.InsertAfter(inttostr(i));
InsertTable.Cell(i,2).Range.InsertAfter(inttostr(i));
InsertTable.Cell(i,3).Range.InsertAfter(inttostr(i));
InsertTable.Cell(i,4).Range.InsertAfter(inttostr(i));
InsertTable.Cell(i,5).Range.InsertAfter(inttostr(i));
end;
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
597
import
I
后退
顶部