如何替换word中书签的内容

问题描述

我现在有一个项目,一部分信息存在数据库中,每次需要从数据库中提取处信息来项一个word文件中填充信息填充的位置由bookmark书签来决定。现在需要的时候怎么清空原来的内容。原来的bookmark中有文本,也由可能是table。我试了很多办法,包括bookmark.delete()方法的调用,都没有删除成功。

解决方案

解决方案二:
我这delphi替换里面的标签包括:文字和图片。unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ComObj,Word2000,OleServer;typeTForm1=class(TForm)Button1:TButton;WordApplication1:TWordApplication;WordDocument1:TWordDocument;Button2:TButton;Button3:TButton;Button4:TButton;Button5:TButton;OpenDialog1:TOpenDialog;SaveDialog1:TSaveDialog;procedureButton1Click(Sender:TObject);procedureButton2Click(Sender:TObject);procedureButton3Click(Sender:TObject);procedureButton4Click(Sender:TObject);procedureButton5Click(Sender:TObject);private{Privatedeclarations}wordApp,wordDoc:Variant;public{Publicdeclarations}end;varForm1:TForm1;implementation{$R*.dfm}//启动procedureTForm1.Button2Click(Sender:TObject);begintryWordApplication1.Connect;exceptMessageDlg('没有安装Word',mtError,[mbok],0);Abort;end;WordApplication1.Visible:=True;WordApplication1.Caption:='安全计算软件';WordApplication1.Options.CheckSpellingAsYouType:=False;WordApplication1.Options.CheckGrammarAsYouType:=False;end;//连接procedureTForm1.Button4Click(Sender:TObject);varFileName:OleVariant;ConfirmConversions:OleVariant;ReadOnly:OleVariant;AddToRecentFiles:OleVariant;PasswordDocument:OleVariant;PasswordTemplate:OleVariant;Revert:OleVariant;WritePasswordDocument:OleVariant;WritePasswordTemplate:OleVariant;Format:OleVariant;Encoding:OleVariant;Visible:OleVariant;ItemIndex,Template,NewTemplate,DocuType:OleVariant;beginOpendialog1.InitialDir:=ExtractFileDir(paramstr(0));Opendialog1.Filter:='赖勇军的文档文件(*.DOC)|*.DOC';//文件打开的初始路径ConfirmConversions:=False;ReadOnly:=False;AddToRecentFiles:=False;PasswordDocument:='';PasswordTemplate:='';Revert:=True;WritePasswordDocument:='';WritePasswordTemplate:='';Format:=wdOpenFormatAllWord;Encoding:=8437;Visible:=True;ItemIndex:=1;Template:=EmptyParam;NewTemplate:=False;DocuType:=wdNewBlankDocument;Visible:=true;tryifOpendialog1.ExecutethenbeginFileName:=Opendialog1.FileName;//'f:a.dot';//打开WordApplication1.Documents.Open(FileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);//WordApplication1.Documents.Open(FileName,ConfirmConversions,ReadOnly,AddToRecentFiles,PasswordDocument,PasswordTemplate,Revert,WritePasswordDocument,WritePasswordTemplate,Format,Encoding,Visible);endelse//新建WordApplication1.Documents.Add(Template,NewTemplate,DocuType,Visible);exceptshowmessage('打开新建文档失败!');exit;end;WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));end;//替换procedureTForm1.Button1Click(Sender:TObject);varBookMark_Name:OLEVariant;LinkToFile,SaveWithDocument,LyjSelection:OLEVariant;FPicture:OLEVariant;beginBookMark_Name:='bzr';ifWordDocument1.BookMarks.Exists(BookMark_Name)thenbeginWordDocument1.BookMarks.Item(BookMark_Name).Select;WordDocument1.Bookmarks.Item(BookMark_Name).Range.Text:='赖勇军';end;BookMark_Name:='shr';ifWordDocument1.BookMarks.Exists(BookMark_Name)thenbeginWordDocument1.BookMarks.Item(BookMark_Name).Select;WordDocument1.Bookmarks.Item(BookMark_Name).Range.Text:='赵文群';end;BookMark_Name:='tp';//插入图片的位置ifWordDocument1.BookMarks.Exists(BookMark_Name)thenbeginWordDocument1.BookMarks.Item(BookMark_Name).Select;LinkToFile:=False;SaveWithDocument:=True;FPicture:=WordApplication1.Selection.InlineShapes.AddPicture(ExtractFileDir(paramstr(0))+'1.bmp',LinkToFile,SaveWithDocument,EmptyParam);WordApplication1.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;{FPicture.ConvertToShape.Select;//转成可移动模式...WordApplication1.Selection.ShapeRange.WrapFormat.type_:=wdWrapNone;//无环绕这样才能衬于文字下方或浮于上方WordApplication1.Selection.ShapeRange.ZOrder(4);//显示在文字上方}{msoBringToFront=$00000000;msoSendToBack=$00000001;msoBringForward=$00000002;msoSendBackward=$00000003;msoBringInFrontOfText=$00000004;msoSendBehindText=$00000005;}end;BookMark_Name:='zjl';ifWordDocument1.BookMarks.Exists(BookMark_Name)thenbeginWordDocument1.BookMarks.Item(BookMark_Name).Select;WordDocument1.Bookmarks.Item(BookMark_Name).Range.Text:='张鹏';end;end;//断开procedureTForm1.Button5Click(Sender:TObject);varFileName:OleVariant;EParam:OleVariant;SaveChanges:OleVariant;//关闭时是否保存beginSaveChanges:=False;Savedialog1.InitialDir:=ExtractFileDir(paramstr(0));Savedialog1.Filter:='赖勇军的电子文件(*.DOC)|*.DOC';//文件打开的初始路径ifnotSavedialog1.ExecutethenbeginWordDocument1.Close(SaveChanges);exit;end;FileName:=Savedialog1.FileName;EParam:=EmptyParam;tryWordDocument1.SaveAs(FileName,EParam);WordDocument1.Close;showmessage('文件保存成功!');exceptshowmessage('文档保存失败!');end;end;//退出procedureTForm1.Button3Click(Sender:TObject);varSaveChanges,OriginalFormat,RouteDocument:OleVariant;beginSaveChanges:=WdDoNotSaveChanges;OriginalFormat:=UnAssigned;RouteDocument:=UnAssigned;tryWordApplication1.Quit(SaveChanges,OriginalFormat,RouteDocument);WordApplication1.Disconnect;exceptonE:ExceptiondobeginShowmessage(E.Message);WordApplication1.Disconnect;end;end;end;end.
解决方案三:
一种方法:Word.BookmarkswdBookmarks=wdDoc.Bookmarks;Word.BookmarkwdBookmark;longlngCount=wdBookmarks.Count;Word.SelectionwdSel;objectoIndex;for(longi=1;i<=lngCount;i++){oIndex=(object)i;wdBookmark=wdBookmarks.get_Item(refoIndex);wdBookmark.Select();wdSel=wdApp.Selection;wdSel.Text="从数据库中读取的值";}

解决方案四:
要有table或chart的话就读取书签,判断书签内容是text、table或chart,作相应处理。
解决方案五:
引用3楼shihaojie1219的回复:

要有table或chart的话就读取书签,判断书签内容是text、table或chart,作相应处理。

你好,怎么判断bookmark的内容是table还是其他的内容呢。用bookmark.tables.count>1吗?我的模板每个页面都是框在一个table的单元格中的,开始的时候书签是在这个单元格中的,里面还没有填充内容。但是我调用的bookmark.tables.count的时候还是大于1.不晓得这是怎么搞的。能加你详谈吗?我的邮箱wb1125@126.com
解决方案六:
学习了,希望能和大家多交流,以后常来往http://hi.csdn.net/space.html
解决方案七:
引用4楼wb1122的回复:

引用3楼shihaojie1219的回复:要有table或chart的话就读取书签,判断书签内容是text、table或chart,作相应处理。你好,怎么判断bookmark的内容是table还是其他的内容呢。用bookmark.tables.count>1吗?我的模板每个页面都是框在一个table的单元格中的,开始的时候书签是在这个单元格中的,里面还没有填充内容……

------------bookmark.tables.count>1?bookmark有tables属性?应该是bookmark.Range.tables.count>1也可以把table所在的bookmark编订特殊的名称,读取bookmark名称,根据名称判断bookmark内容是否是table
解决方案八:
你好,我用你的方法来设置书签的值,他每次能选中值但是后面还是附加到里面去了,不是替换原来的内容。你知道是什么原因嘛!

时间: 2024-10-16 01:45:51

如何替换word中书签的内容的相关文章

求助大神帮忙 在线等-C#获取不到word模板中书签的内容,即bm.Range.Text始终为null

问题描述 C#获取不到word模板中书签的内容,即bm.Range.Text始终为null doc.Activate(); foreach (Microsoft.Office.Interop.Word.Bookmark bm in doc.Bookmarks) { switch (bm.Name) { case "Day": Name = bm.Range.Text; break; //姓名 case "YlId": bm.Select(); ID = bm.Ran

用dsoframer.ocx替换Word中的书签,提示 对象不支持该属性或方法

问题描述 在项目中调用dsoframer.ocx对Word中的书签进行替换,代码document.all.oframe.Open("http://localhost/mydoc.doc",true);document.all.oframe.SetFieldValue("custName","杭州天网","");打开word没有问题,可是第一句替换Word中的书签JS报错提示"对象不支持该属性或方法"谁帮忙解

pb-PB中我想让从word中导入的内容,比如文章,在mle控件中(或者其他的控件中)能分段的显示

问题描述 PB中我想让从word中导入的内容,比如文章,在mle控件中(或者其他的控件中)能分段的显示 PB中我想让从word中导入的内容,比如文章,在mle控件中(或者其他的控件中)能分段的显示,不是整个的都显示在一起,不分段落. 解决方案 直接复制过来就是可以的,如果你在word里用回车分了段落,在PB里也是可以的,但如果没用回车分段,你可以用richtext控件试试

C#替换word中的页眉页脚

问题描述 C#替换word中的页眉页脚 word文档如果没有分节的话,可以替换页眉页脚,如果分节的话,只能替换第一页的页眉页脚,其他的替换不掉,或者删除页眉页脚 解决方案 参考c#操作word设置页眉页脚,页脚同时包括文字和页码 如果分节,可以为不同的节设置不同的页眉页脚,所以如果你想替换所有的页面页眉页脚,用foreach遍历一下所有的Sections替换.

批量查找替换Word中文字为特定图片

在使用word时,我们也许都遇到过一种特殊的查找替换的烦恼,就是想将一些文字批量替换成图片的情况.那么这个是不是就没法完成呢?非也.Word的查找替换功能其实很强大,除了实体替换外,还之处正则表达式输入.下面我们一起来看看如何将文字批量替换成图片 一.打开欲修改的word文档,把图片复制到剪贴板中(按一下Ctrl+C)如下图. 打开Word文档 二.然后打开查找替换对话框(快捷键Ctrl+H),在"查找内容"框中输入将被替换的文字,在 "替换为"框中输入"

asp 使用正则表达式替换word中的标签,转为纯文本

公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交.结果是在内容显示页面上是五花八门的样式,有时也需要部分纯文本内容作为摘录使用,这些都需要清除word格式.改变客户的习惯要客户先复制到记事本里再粘贴到编辑器里编辑是很难的,所以从我们自己改变起.从网上百度了若干清除word格式的正则,使用效果不甚理想,所以自己写了清除word格式的asp函数,能满足我们自己的使用需求.函数如下: 复制代码 代码如下: function cleanWord(html)

asp 使用正则表达式替换word中的标签,转为纯文本_应用技巧

公司客户在使用网站后台编辑添加修改内容时,经常是直接从word文档里复制内容到编辑器里后就提交.结果是在内容显示页面上是五花八门的样式,有时也需要部分纯文本内容作为摘录使用,这些都需要清除word格式.改变客户的习惯要客户先复制到记事本里再粘贴到编辑器里编辑是很难的,所以从我们自己改变起.从网上百度了若干清除word格式的正则,使用效果不甚理想,所以自己写了清除word格式的asp函数,能满足我们自己的使用需求.函数如下: 复制代码 代码如下: function cleanWord(html)

sql replace 替换字段中部份指定内容

创建数据库教程 create database cnnet; 创建数据表 CREATE TABLE `cnnet`.`test` ( `id` INT( 4 ) NOT NULL AUTO_INCREMENT , `url` VARCHAR( 50 ) NULL , PRIMARY KEY ( `id` ) ) ENGINE = MYISAM 插几条数据: INSERT INTO `test` (`id`, `url`) VALUES (1, 'www.1aa.cm'), (2, 'www.1a

sql server replace 批量替换数据库中指定字段内容

function replace(title) { replace(title,'aaa','bbbb') return(title) } bbb=replace(title) update ..... set title='"&bbb&"' asp教程 access <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=Microsoft.