C#在Word文檔指定位置處理表格
系統(tǒng)
2114 0
?
??? 正在做的項(xiàng)目里,需要開發(fā)一個(gè)小工具,將需要的數(shù)據(jù)插入到Word文檔中。這當(dāng)中有一項(xiàng)需求,要求能夠在Word文檔中某處插入表格,或者刪除該處表格。
????這個(gè)小工具是在VS.Net2005、Office2007下開發(fā)的。
????1、在Word文檔中插入一個(gè)書簽,書簽名稱為“tl”;
??? 2、在VS2005新建一個(gè)C#項(xiàng)目,然后在引用中添加Word類庫(kù);由于我使用的是Office2007,因此選擇的是"Microsoft Word 12.0?Object Library",如果你使用的是Office2003,就應(yīng)該選擇11.0;
??? 3、在代碼頂部添加對(duì)Word類庫(kù)的引用;
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();
??? 如果書簽所在的位置并沒有插入表格,程序并不會(huì)刪除該位置下面的表格,而是會(huì)拋出異常,報(bào)錯(cuò)。
??? 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;
????????????????
//
刪除指定書簽位置后的第一個(gè)表格
????????????????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
;
??? 代碼很簡(jiǎn)單,在寫這實(shí)例的過程中我參考了如下資料:
????
Word對(duì)象模型概述
???
Word任務(wù)
C#在Word文檔指定位置處理表格
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元