C#在Word文檔指定位置處理表格
系統(tǒng)
2192 0
?
??? 正在做的項目里,需要開發(fā)一個小工具,將需要的數(shù)據(jù)插入到Word文檔中。這當中有一項需求,要求能夠在Word文檔中某處插入表格,或者刪除該處表格。
????這個小工具是在VS.Net2005、Office2007下開發(fā)的。
????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
;??????????????????
//
不顯示W(wǎng)ord窗口
????????????
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
;??????????????????
//
不顯示W(wǎng)ord窗口
????????????
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文檔指定位置處理表格
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元