【发布时间】:2014-07-16 07:51:29
【问题描述】:
我很难理解 Word Automation 中的选择。 简而言之,我想在生成的 Word 文档中的某处有一个表格,并且我需要对特定单元格内的文本进行对齐。我如何做到这一点?
我使用 ComObj 方法:
var
MsWord: Variant;
...
try
MsWord := GetActiveOleObject('Word.Application');
except
try
MsWord := CreateOleObject('Word.Application');
MsWord.Visible := True;
except
Exception.Create('Error');
end;
end;
我如何告诉 Word 文本(单元格)在哪里以便以后能够对齐它? 我使用此代码向单元格添加文本:
Function AddTextToTableCell(Table:integer;Row, Column:integer;text:string):boolean;
begin
AddTextToTableCell:=true;
try
MsWord.ActiveDocument.Tables.Item(Table).Columns.Item(Column).Cells.Item(Row).Range.Text:=text;
except
AddTextToTableCell:=false;
end;
End;
我可以修改它以设置单元格内文本的对齐方式吗?假设我想将位于行:1 和列:3 的单元格居中对齐。我的单元格有多行(可变)文本。我想水平和垂直居中。
我在 Google 上搜索了其他自动化代码,这一行应该可以解决问题,除了它在 delphi 中没有...(似乎 VB 等价物可以使用它):
MSWORD.ActiveDocument.Tables.Item(Table).Cell(Row,Column).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
如果我使用
MSWORD.ActiveDocument.Tables.Item(Table).Range.ParagraphFormat.Alignment := wdAlignParagraphCenter
然后表格中的所有单元格都对齐到水平中心。我只想要一个特定的单元格,我也希望它垂直居中
请帮忙。
谢谢
【问题讨论】:
-
您可以录制一个宏并为delphi获取适应的代码。
-
好吧,我试过了,但仍然无法知道我的单元格中有多少行才能全部选中。另外,我需要确切知道自从进入表格后我需要传递多少个字符,直到我到达我想要的 CELL。那不适用
-
另外,如果我在开始录制时位于单元格内,我可以选择选择单元格,然后对单元格进行格式化。然后宏将如下所示:
Selection.SelectCell Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter Selection.Cells.VerticalAlignment = wdCellAlignVerticalCenter现在我如何将它应用到我的表格单元格?如何指定要选择的单元格?
标签: delphi ms-word text-alignment