如何利用书签向word文档读取或写入数据[C#](

系统 2105 0
 物资部提出需求,希望能在整个系统出台之前先帮他们做一个能提取和写入数据的小东西,方便网上招标以及合同的自动生成。
      俺老师老甄同志把这一艰巨任务交给我了[原因是他手头的工作太多了]。经过一番讨论,我们决定用word自带的书签来作为盛放临时数据的容器。上网查资料,觉得这方面的文章还真是不多。查看office的对象模型,发现书签bookmarks有个自带的属性range,可以通过它来实现数据的提取和写入,可是问题又随之而来,怎么样取得这个range呢?试了很多种方法,甚至我都想到了是否可以用书签域来实现,老甄同志想到了用两个书签,通过确定两个书签的位置来取出中间的数据来,可这些都不是些好办法,我们把注意力放在了怎么样在word文档编辑的时候就把range写入。一个偶然的发现解决了这个问题,吼吼,难以想象,解决问题也得靠灵感,灵感来了,挡都挡不住,不过这个发现还得归功于范兄。下边把这一开发过程及原码贴上,希望能对和我有同样需求的IT民工们有所帮助。
      先在已有的word文档中输入一串空格[长度自定,如图1所示],然后再选中这窜空格,在此基础上插入一个书签,如图2所示。

如何利用书签向word文档读取或写入数据[C#](

图1

如何利用书签向word文档读取或写入数据[C#](

图2 

      大家可以看到,书签被分割成了一对中括号,中括号里面的内容就是range的内容,那么,大家可以随心所欲写代码了,吼吼~~~

如何利用书签向word文档读取或写入数据[C#](

原码如下:

  private void button1_Click(object sender, EventArgs e)
              {

                      object missingValue = System.Reflection.Missing.Value;
                      object myTrue = false;
                      object fileName = this.txt_file.Text.Trim().ToString();
                     

                      Word._Application oWord = new Word.ApplicationClass();
                      Word._Document oDoc;

                      oDoc = oWord.Documents.Open(ref fileName, ref missingValue,
                              ref myTrue, ref missingValue, ref missingValue, ref missingValue,
                              ref missingValue, ref missingValue, ref missingValue,
                              ref missingValue, ref missingValue, ref missingValue,
                              ref missingValue, ref missingValue, ref missingValue,
                              ref missingValue);

                      MessageBox.Show(oDoc.Bookmarks.Count.ToString());                        
                      //写入word文档
                      object tmp = "msr_01";
                      Word.Range tmpRng = oWord.ActiveDocument.Bookmarks.get_Item(ref tmp).Range;
                      tmpRng.Text = "鲁能工程有限公司221";

                      //由于附值以后书签自动消除,为了以后便于修改,需要把书签再自动生成一个

                      object oRng = tmpRng;
                      oDoc.Bookmarks.Add(tmp.ToString(), ref oRng);
                     
object bSaveChange = true;
                      oDoc.Close(ref bSaveChange, ref missingValue, ref missingValue);
              }

more:1、[这是往word文档里面写入数据,如果要取得数据可以用range.text来取得]     

          2、需要的using指令集是:using Word = Microsoft.Office.Interop.Word;

如何利用书签向word文档读取或写入数据[C#](


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论