gpt4 book ai didi

delphi - 如何使用delphi在word中查找表格并更新表格中的值

转载 作者:行者123 更新时间:2023-12-02 04:29:07 26 4
gpt4 key购买 nike

我是使用 Delphi 的 Ole Word 自动化新手。我有一个示例文档,里面有很多表格。我可以通过在单词中查找形状并在其中插入值来插入图像。但我无法找到特定的表并使用 delphi 将一些值更新到其中。有办法吗?谢谢 !

enter image description here

最佳答案

我假设您主要询问如何找到该表,而不是之后如何更改表的内容。如何执行此操作取决于您要用于查找感兴趣的表的标准。

从表面上看,您应该能够使用 MS Word 的 Selection 对象的 Goto 方法导航到给定的表格。但是,在检测操作何时因 Goto 未找到正确的表而失败时存在问题(请参阅本答案的末尾)。

如果文档中感兴趣的表格前面有一个识别文本标签,您可以简单地搜索该标签,如果找到,则从该标签向前导航,如本示例所示,该示例在标签“Table3”之后查找表格:

procedure TForm1.Button4Click(Sender: TObject);
var
AFileName : String;
MSWord,
Document : OleVariant;
Found : WordBool;
begin
AFileName := 'd:\aaad7\officeauto\Tables.Docx';

MSWord := CreateOleObject('Word.Application');
MSWord.Visible := True;
Document := MSWord.Documents.Open(AFileName);

MSWord.Selection.Find.Text :='Table3';
Found := MSWord.Selection.Find.Execute;
if Found then begin
MSWord.Selection.MoveDown( Unit:=wdLine, Count:=1);
end;
end;

如所写,“if Found ...” block 仅将光标放在表的第一个单元格的第一个字符上。进入表格后,您可以随意更改其内容。

如果您想了解如何执行诸如在表格单元格中插入图像之类的操作,请转到 Word 功能区上的“开发工具”选项卡,录制一个执行您所需操作的宏,然后使用编辑弹出窗口查看它 - 通常相当容易将其剪切并粘贴到 Delphi 中并将其编辑到等效的 Delphi 代码中。对于查找所需表格的其他方法也是如此 - 录制宏然后翻译它。

要查找文档中的第 N 个表格并将光标置于其左上角单元格中,您可以执行以下操作:

procedure TForm1.Button2Click(Sender: TObject);
var
AFileName : String;
MSWord,
Document,
Tables,
Table : OleVariant;
TableNo : Integer;
begin
AFileName := 'd:\aaad7\officeauto\Tables.Docx';

MSWord := CreateOleObject('Word.Application');
MSWord.Visible := True;
Document := MSWord.Documents.Open(AFileName);

TableNo := 3;

Tables := Document.Tables;

if TableNo <= Tables.Count then begin
Table := Tables.Item(TableNo);
Table.Select;
MSWord.Selection.MoveLeft( Unit:=wdCharacter, Count:=1);
end;

end;

顺便说一句,在 Word 的“查找”对话框中的“转到”选项卡上,“转到内容”列表框中有一个“表格”条目。您可以使用类似的代码在代码中调用它

MSWord.Selection.GoTo(What:= wdGoToTable, Which:=wdGoToFirst, Count:=3);  

它的问题是如何检查代码是否成功。与返回 WordBool 的 Find 不同,Goto 返回 Range 对象。如果您尝试使用它转到仅包含 2 个表的文档中的第 10 个表,则不会引发错误,但返回的范围是文档中的最后一个表。我还没有找到一种方法来从返回的 Range 中检查 Goto 是否成功,而不检查与表关联的一些文本,这些文本可能首先使用 Find 找到。当然,如果保证文档包含您要查找的表,那么 Goto 的这个问题可能不需要您担心。

关于delphi - 如何使用delphi在word中查找表格并更新表格中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com