DELPHI对WORD的操作

zdt2405 2005-10-06 12:27:08
我想用delphi对word进行操作,就是想查找一个DOC文档如下:
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A2 sssssssssssss
ddddddddddddd
A1 jjjjjjjjjjjjj
对其中A1开头的进行过滤,过滤结果是:
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj
...全文
237 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdt2405 2005-10-07
  • 打赏
  • 举报
回复
图片好像也不支持啊???
zdt2405 2005-10-07
  • 打赏
  • 举报
回复
给点资料啊,不会COPY和PASTE啊
alexanda2000 2005-10-07
  • 打赏
  • 举报
回复
要支持图片和格式的话将代码改一下。将

if WdRange.Text = 'A1' then
WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);

改成:

if WdRange.Text = 'A1' then
begin
WordDoc1.Paragraphs.item(i).Range.Copy;
WordDoc2.ActiveWindow.Selection.Paste;
end;
alexanda2000 2005-10-07
  • 打赏
  • 举报
回复
vvvvvvvvvvvvv这一行不是A1开头。
我注释里也写了,只是对文字的操作。如果要保留格式和图片,要用Copy和Paste方法。这些你参照VBA改一下就可以了。
guokan8686 2005-10-07
  • 打赏
  • 举报
回复
这么简单,自己多动脑子
zdt2405 2005-10-07
  • 打赏
  • 举报
回复
十分感谢,功能可以执行了,不过文件大点的话会提示“数值超出范围”
zdt2405 2005-10-07
  • 打赏
  • 举报
回复
if fuhe then
begin
//WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);
WordDoc1.Paragraphs.item(i).Range.copy;
WordDoc1.range.Paste;
end;
我的语句是这么写的,但是不行
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
十分感谢,不过好像我的写的要求不大一样
A1 aaaaaaaaaaaaa
A1 jjjjjjjjjjjjj
我要的是
A1 aaaaaaaaaaaaa
vvvvvvvvvvvvv
A1 jjjjjjjjjjjjj
少了一行,望指教

alexanda2000 2005-10-06
  • 打赏
  • 举报
回复
uses ComObj;

var
WordApp,WordDoc1,WordDoc2,WdRange:OleVariant;

//WordDoc1是源文档,将过滤后的段落复制到WordDoc2中。

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
WordApp:=CreateOleObject('Word.Application');
WordDoc1:=WordApp.Documents.Open('F:\Test1.doc');
WordDoc2:=WordApp.Documents.Add;
try
// WordApp.visible:=True;
for i:=1 to WordDoc1.Paragraphs.Count do
begin
WdRange:=WordDoc1.Range(WordDoc1.Paragraphs.item(i).Range.Start,
WordDoc1.Paragraphs.item(i).Range.Start+2);
if WdRange.Text = 'A1' then
WordDoc2.Content.InsertAfter(WordDoc1.Paragraphs.item(i).Range.Text);
//上一句只对文字进行操作,会丢失格式。如果要保留格式,用Copy和Paste方法。
end;
WordDoc2.SaveAs('F:\Test2.doc');
finally
WordApp.Quit;
WordApp:=Unassigned;
WordDoc1:=Unassigned;
WordDoc2:=Unassigned;
WdRange:=Unassigned;
end;
end;
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
再顶一下,帮帮忙啊
jinzhili 2005-10-06
  • 打赏
  • 举报
回复
再顶一下。
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
大哥们,指导一下啊
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
是段落,过滤的意思是找开头是字母+数字的段落,如开头是A1的话就把这一段拉出来,不是A1的就不要了。
alexanda2000 2005-10-06
  • 打赏
  • 举报
回复
你的问题都没讲清楚,你举出的例子也分不出是段落还是表格。
vvvvvvvvvvvvv那行也不是A1开头,怎么过滤后还有它?
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
顶啊,就没人知道??
jinzhili 2005-10-06
  • 打赏
  • 举报
回复
没有做过。帮你顶一下。
zdt2405 2005-10-06
  • 打赏
  • 举报
回复
顶一下

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧