C#读取word2003的书签内容 在网上搜寻了一些代码,向指定书签中写入内容可以,但是把它读取出来就不行了,能够找到书签的名字(bk.Name),但是书签制定的能容找不到,总是显示null( bk.Range.Text为null),试了好久还是不行啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该可以读到的,检查下word文件的版本和类库是否一致,书签内是否有内容 读取word 有点难度吧 它不像excl 有固定的表格格式关注…… while (enu.MoveNext()) { Microsoft.Office.Interop.Word.Book bk = (Microsoft.Office.Interop.Word.Book)enu.Current; bk.Range.Text = "text"; string str1 = bk.Range.Text; str += "{" + bk.Name.ToString() + ":" + bk.Range.Text + "}"; }bk.Range.Text = "text";是正确的!str1 还是null!没效果 这是因为Range包含了book本身,对它的Text进行赋值会删除掉这个book,所以改变了Text以后要重新再新建一个book:string bookName = book.Name;object range = book.Range;book.Range.Text = "text";book.Application.ActiveDocument.Books.Add(bookName, ref range); // 新建一个书签注意不要在while循环里操作,因为给book.Range.Text赋值相当于删除book 我还是把代码贴出来吧!public string GetDocumentBookData(string FileName) { this.OpenWordDoc(FileName, ref wordDoc, ref wordApp); object missing = System.Reflection.Missing.Value; string str = ""; System.Collections.IEnumerator enu = wordApp.ActiveDocument.Books.GetEnumerator(); while (enu.MoveNext()) { Microsoft.Office.Interop.Word.Book bk = (Microsoft.Office.Interop.Word.Book)enu.Current; string str1 = bk.Range.Text; str += "{" + bk.Name.ToString() + ":" + bk.Range.Text + "}"; } return str; }while()循环是为了获得word模板中所有的我设置好的书签(),所以用到了while() 至于你说的在新建书签的问题还是很感谢你的想法,只不过我在模板中已经手动定义好书签了,并且对应书签有相关的内容,比如书签A 内容是*** 书签B内容是*** 希望通过上面的代码 首先获得书签再获得此书签对应的内容! 每次都是bk.Name是正确的,但bk.Range.Text 是null!还是很感谢你的帮助! if(Doc.Books.Exists("a")){object b="a";Word.Book bk=Doc.Books.Item(ref b);} 这勋章,肯定是"boss"级别了,呵呵 开个玩笑哈,我试过了一样不要好用啊!其实我的方法我试过不下100遍了,就有一次成功了,崩溃的是忘记在word修改过什么了!还以为是格式的问题,其实不然啊!还好老师不急着用,要不然我又要通宵了! 你的方法应该是可以的,word文件是2003还是2007格式?Microsoft.Office.Interop.Word是什么版本? 哥们 谢谢你还一直关注这帖子! word是2003的,Microsoft.Office.Interop.Word是11.0.5530.0版的! office也是2003吗?是否打了sp3?Microsoft.Office.Interop.Word换成10.0试下呢?word文件肯定没问题吧?书签里确定有内容(不是空书签)? bk.Range.Text 是你要赋给word书签的值你初始化时书签怎么会有值 C# 双屏幕显示问题 求助IIS7 asp.net 下自定义错误页的问题 HttpFileCollection获取客户端文件? 有没有人知道如何解决masterPage中treeView状态问题 dataset查询表中内容 请教解决方案 〓★〓 显示图片报错?: 编译器错误信息: CS1002: 应输入 ; 没有学过ASP,但学过C#,能不能直接学ASP.net?如果可以,需要注意些什么?谢谢大家了? 为什么有这么多人不结贴呀??? DataGrid 列合计 求助一个最优算法(C#实现) Handler.ashx文件里面的方法是怎么调用的?
它不像excl 有固定的表格格式
关注……
{
Microsoft.Office.Interop.Word.Book bk = (Microsoft.Office.Interop.Word.Book)enu.Current;
bk.Range.Text = "text";
string str1 = bk.Range.Text;
str += "{" + bk.Name.ToString() + ":" + bk.Range.Text + "}";
}
bk.Range.Text = "text";是正确的!
str1 还是null!没效果
object range = book.Range;
book.Range.Text = "text";
book.Application.ActiveDocument.Books.Add(bookName, ref range); // 新建一个书签注意不要在while循环里操作,因为给book.Range.Text赋值相当于删除book
我还是把代码贴出来吧!public string GetDocumentBookData(string FileName)
{
this.OpenWordDoc(FileName, ref wordDoc, ref wordApp);
object missing = System.Reflection.Missing.Value; string str = ""; System.Collections.IEnumerator enu = wordApp.ActiveDocument.Books.GetEnumerator(); while (enu.MoveNext())
{
Microsoft.Office.Interop.Word.Book bk = (Microsoft.Office.Interop.Word.Book)enu.Current;
string str1 = bk.Range.Text;
str += "{" + bk.Name.ToString() + ":" + bk.Range.Text + "}";
}
return str;
}
while()循环是为了获得word模板中所有的我设置好的书签(),所以用到了while() 至于你说的在新建书签的问题还是很感谢你的想法,只不过我在模板中已经手动定义好书签了,并且对应书签有相关的内容,比如书签A 内容是*** 书签B内容是*** 希望通过上面的代码 首先获得书签再获得此书签对应的内容! 每次都是bk.Name是正确的,但bk.Range.Text 是null!
还是很感谢你的帮助!
{
object b="a";
Word.Book bk=Doc.Books.Item(ref b);
}
Microsoft.Office.Interop.Word是什么版本?
Microsoft.Office.Interop.Word换成10.0试下呢?
word文件肯定没问题吧?书签里确定有内容(不是空书签)?