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

  • Post author:
  • Post category:其他


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

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

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

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

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

None.gif

using


Word


=


Microsoft.Office.Interop.Word;

4、打开Word文档

None.gif

object


missingValue


=


System.Reflection.Missing.Value;

None.gif


object


myTrue


=




false


;


//


不显示Word窗口



None.gif




object


fileName


=




@”


F:\Doc1.doc





;

None.gif
Word._Application oWord


=




new


Word.ApplicationClass();

None.gif
Word._Document oDoc;

None.gif
oDoc


=


oWord.Documents.Open(


ref


fileName,


ref


missingValue,

None.gif


ref


myTrue,


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue);

5、找到刚才添加的书签

None.gif

object


tmp


=







t1





;

None.gif
Word.Range startRange


=


oWord.ActiveDocument.Bookmarks.get_Item(


ref


tmp).Range;

6、删除在该位置的表格

None.gif

Word.Table tbl


=


startRange.Tables[


1


];

None.gif
tbl.Delete();

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

7、插入表格,并划线

None.gif

//


添加表格



None.gif


oDoc.Tables.Add(startRange,


5


,


4


,


ref


missingValue,


ref


missingValue);

None.gif

None.gif


//


为表格划线



None.gif


startRange.Tables[


1


].Borders[WdBorderType.wdBorderTop].LineStyle


=


WdLineStyle.wdLineStyleSingle;

None.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderLeft].LineStyle


=


WdLineStyle.wdLineStyleSingle;

None.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderRight].LineStyle


=


WdLineStyle.wdLineStyleSingle;

None.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderBottom].LineStyle


=


WdLineStyle.wdLineStyleSingle;

None.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderHorizontal].LineStyle


=


WdLineStyle.wdLineStyleSingle;

None.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderVertical].LineStyle


=


WdLineStyle.wdLineStyleSingle;

全部的代码如下:

None.gif

object


missingValue


=


System.Reflection.Missing.Value;

None.gif


object


myTrue


=




false


;


//


不显示Word窗口



None.gif




object


fileName


=




@”


F:\Doc1.doc





;

None.gif
Word._Application oWord


=




new


Word.ApplicationClass();

None.gif
Word._Document oDoc;

None.gif
oDoc


=


oWord.Documents.Open(


ref


fileName,


ref


missingValue,

None.gif


ref


myTrue,


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue,


ref


missingValue,


ref


missingValue,

None.gif


ref


missingValue);

None.gif


try



ExpandedBlockStart.gif
ContractedBlock.gif


dot.gif



{


InBlock.gif


object


tmp


=







t1





;

InBlock.gif
Word.Range startRange


=


oWord.ActiveDocument.Bookmarks.get_Item(


ref


tmp).Range;

InBlock.gif

InBlock.gif


//


删除指定书签位置后的第一个表格



InBlock.gif


Word.Table tbl


=


startRange.Tables[


1


];

InBlock.gif
tbl.Delete();

InBlock.gif

InBlock.gif


//


添加表格



InBlock.gif


oDoc.Tables.Add(startRange,


5


,


4


,


ref


missingValue,


ref


missingValue);

InBlock.gif

InBlock.gif


//


为表格划线



InBlock.gif


startRange.Tables[


1


].Borders[WdBorderType.wdBorderTop].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderLeft].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderRight].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderBottom].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderHorizontal].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif
startRange.Tables[


1


].Borders[WdBorderType.wdBorderVertical].LineStyle


=


WdLineStyle.wdLineStyleSingle;

InBlock.gif

ExpandedBlockEnd.gif
}




None.gif


catch



ExpandedBlockStart.gif
ContractedBlock.gif


dot.gif



{


InBlock.gif


//


异常处理



ExpandedBlockEnd.gif


}




None.gif

None.gif


object


bSaveChange


=




true


;

None.gif
oDoc.Close(


ref


bSaveChange,


ref


missingValue,


ref


missingValue);

None.gif
oDoc


=




null


;

None.gif
oWord


=




null


;

代码很简单,在写这实例的过程中我参考了如下资料:


Word对象模型概述


Word任务

转载于:https://www.cnblogs.com/Ericzhen/archive/2007/08/15/857139.html