C#在Word文档指定位置处理表格

系统 1958 0
 

    正在做的项目里,需要开发一个小工具,将需要的数据插入到Word文档中。这当中有一项需求,要求能够在Word文档中某处插入表格,或者删除该处表格。

    这个小工具是在VS.Net2005、Office2007下开发的。

    1、在Word文档中插入一个书签,书签名称为“tl”;

    2、在VS2005新建一个C#项目,然后在引用中添加Word类库;由于我使用的是Office2007,因此选择的是"Microsoft Word 12.0 Object Library",如果你使用的是Office2003,就应该选择11.0;

    3、在代码顶部添加对Word类库的引用;

using  Word  =  Microsoft.Office.Interop.Word;

    4、打开Word文档

object  missingValue  =  System.Reflection.Missing.Value;
            
object  myTrue  =   false ;                   // 不显示Word窗口
             object  fileName  =   @" F:\Doc1.doc " ;
            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);

    5、找到刚才添加的书签

object  tmp  =   " t1 " ;
                Word.Range startRange 
=  oWord.ActiveDocument.Bookmarks.get_Item( ref  tmp).Range;

    6、删除在该位置的表格

Word.Table tbl  =  startRange.Tables[ 1 ];
tbl.Delete();

    如果书签所在的位置并没有插入表格,程序并不会删除该位置下面的表格,而是会抛出异常,报错。

    7、插入表格,并划线

// 添加表格
oDoc.Tables.Add(startRange,  5 4 ref  missingValue,  ref  missingValue);

// 为表格划线
startRange.Tables[ 1 ].Borders[WdBorderType.wdBorderTop].LineStyle  =  WdLineStyle.wdLineStyleSingle;
startRange.Tables[
1 ].Borders[WdBorderType.wdBorderLeft].LineStyle  =  WdLineStyle.wdLineStyleSingle;
startRange.Tables[
1 ].Borders[WdBorderType.wdBorderRight].LineStyle  =  WdLineStyle.wdLineStyleSingle;
startRange.Tables[
1 ].Borders[WdBorderType.wdBorderBottom].LineStyle  =  WdLineStyle.wdLineStyleSingle;
startRange.Tables[
1 ].Borders[WdBorderType.wdBorderHorizontal].LineStyle  =  WdLineStyle.wdLineStyleSingle;
startRange.Tables[
1 ].Borders[WdBorderType.wdBorderVertical].LineStyle  =  WdLineStyle.wdLineStyleSingle;

    全部的代码如下:

object  missingValue  =  System.Reflection.Missing.Value;
            
object  myTrue  =   false ;                   // 不显示Word窗口
             object  fileName  =   @" F:\Doc1.doc " ;
            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);
            
try
            
{
                
object  tmp  =   " t1 " ;
                Word.Range startRange 
=  oWord.ActiveDocument.Bookmarks.get_Item( ref  tmp).Range;

                
// 删除指定书签位置后的第一个表格
                Word.Table tbl  =  startRange.Tables[ 1 ];
                tbl.Delete();

                
// 添加表格
                oDoc.Tables.Add(startRange,  5 4 ref  missingValue,  ref  missingValue);

                
// 为表格划线
                startRange.Tables[ 1 ].Borders[WdBorderType.wdBorderTop].LineStyle  =  WdLineStyle.wdLineStyleSingle;
                startRange.Tables[
1 ].Borders[WdBorderType.wdBorderLeft].LineStyle  =  WdLineStyle.wdLineStyleSingle;
                startRange.Tables[
1 ].Borders[WdBorderType.wdBorderRight].LineStyle  =  WdLineStyle.wdLineStyleSingle;
                startRange.Tables[
1 ].Borders[WdBorderType.wdBorderBottom].LineStyle  =  WdLineStyle.wdLineStyleSingle;
                startRange.Tables[
1 ].Borders[WdBorderType.wdBorderHorizontal].LineStyle  =  WdLineStyle.wdLineStyleSingle;
                startRange.Tables[
1 ].Borders[WdBorderType.wdBorderVertical].LineStyle  =  WdLineStyle.wdLineStyleSingle;

            }

            
catch
            
{
                
// 异常处理
            }


            
object  bSaveChange  =   true ;
            oDoc.Close(
ref  bSaveChange,  ref  missingValue,  ref  missingValue);
            oDoc 
=   null ;
            oWord 
=   null ;

    代码很简单,在写这实例的过程中我参考了如下资料:
     Word对象模型概述

    Word任务

C#在Word文档指定位置处理表格


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

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

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

【本文对您有帮助就好】

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

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