在网上搜寻了一些代码,向指定书签中写入内容可以,但是把它读取出来就不行了,能够找到书签的名字(bk.Name),但是书签制定的能容找不到,总是显示null( bk.Range.Text为null),试了好久还是不行啊!

解决方案 »

  1.   

    应该可以读到的,检查下word文件的版本和类库是否一致,书签内是否有内容
      

  2.   

    读取word 有点难度吧 
    它不像excl 有固定的表格格式
    关注……
      

  3.   

     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!没效果
      

  4.   

    这是因为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
      

  5.   


    我还是把代码贴出来吧!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!
    还是很感谢你的帮助!
      

  6.   

    if(Doc.Books.Exists("a"))
    {
    object b="a";
    Word.Book bk=Doc.Books.Item(ref b);
    }
      

  7.   

    这勋章,肯定是"boss"级别了,呵呵  开个玩笑哈,我试过了一样不要好用啊!其实我的方法我试过不下100遍了,就有一次成功了,崩溃的是忘记在word修改过什么了!还以为是格式的问题,其实不然啊!还好老师不急着用,要不然我又要通宵了! 
      

  8.   

    你的方法应该是可以的,word文件是2003还是2007格式?
    Microsoft.Office.Interop.Word是什么版本?
      

  9.   

    哥们 谢谢你还一直关注这帖子! word是2003的,Microsoft.Office.Interop.Word是11.0.5530.0版的!
      

  10.   

    office也是2003吗?是否打了sp3?
    Microsoft.Office.Interop.Word换成10.0试下呢?
    word文件肯定没问题吧?书签里确定有内容(不是空书签)?
      

  11.   

    bk.Range.Text 是你要赋给word书签的值你初始化时书签怎么会有值