999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C#.net開發中的word文檔處理

2013-04-29 00:00:00徐根法任偉徐雷
大陸橋視野·下 2013年2期

摘 要 開發中往往會因業務需要對word文檔進行操作和處理,本文介紹.net處理word文檔的配置、準備工作以及規范的開發過程,并給出了部分標準化的處理過程代碼段。

關鍵詞 C#. net word 文檔處理

鑒于大量用戶非常熟悉辦公軟件特別是微軟office軟件,應用軟件開發過程中常常需要將一些應用數據以一定的格式轉換成word或者excel軟件,這就需要在軟件開發中實施對word文檔的控制和處理。這種控制的細節是因具體需求而千變萬化的,但其基礎配置、準備和部分開發過程是具有一定“套路”的。本文結合實際開發談談粗淺的認識,包括如何在開發前做好系統配置工作、如何做好開發準備工作以及標準的開發過程并以C#語言形式提供部分標準化的程序代碼。

一、配置準備工作

為了在開發和部署應用后能夠正常實施對word文檔的控制和處理,必須在開發環境和部署服務器上做好一些準備工作。首先,重新安裝office軟件部件以支持開發,并在開發環境中添加引用Microsoft.Office.Interop.Word.12。其次,修改操作系統和iis中的權限以支持.net調用word部件。操作程序如下:

1.控制面板→管理工具→組件服務→計算機→我的電腦→DCom配置→找到Microsoft Word文檔之后,單擊屬性打開此應用程序的屬性對話框。

2.單擊標識選項卡,然后選擇交互式用戶。

3.單擊“安全”選項卡,分別在“啟動和激活權限”和“訪問權限”組中選中“自定義”,然后自定義→編輯→添加ASP.NET賬戶和IUSER_計算機名。

4.確保允許每個用戶訪問,然后單擊確定。

5.單擊確定關閉DCOMCNFG。

6.調整webconfig中的權限配置,請嘗試用下面的方法:在web.config中使用身份模擬,在節中加入

二、開發準備工作

完成配置準備工作后,可以為后續的開發做一些具體的準備,包括:

1.建立一個符合項目開發需要的word模板;

2.在模板中需要實施操作以插入內容的位置定義標簽(bookmark)并完成命名工作,這一步非常重要,標簽是開發中判斷在什么具體位置插入要顯示的內容的關鍵;

3.在需要處理word文檔的代碼文件中引用word類,即using Microsoft.Office.Interop.Word;

三、開發過程

完成配置準備工作后即可根據具體需求實施開發工作了,具體的開發因項目差異而存在極大的差異,但就word文檔控制和處理而言,存在一些共性的過程,這些共性的過程包括定義對象、新建word文檔或獲取word模板并根據模板新建word文檔、指定文檔的插入位置(根據書簽)、對象插入、數據插入、文檔保存、收尾工作等。

1.定義對象。定義對象是所有開發過程的前提,在處理word文檔的開發過程,必須要定義的一些對象如下:

Application對象,用以打開word程序,定義:Application appWord = new Application();

Document 對象,是一個word文檔對象用以打開一個word文檔,定義:Document doc = new Document();或DocumentClass doc = 1;

object對象,在使用word操作相關函數是用于缺省參數,定義:object oMissing = System.Reflection.Missing.Value;

object對象,表示是否保存文檔中已發生改變,定義:的object do Not Save Changes = WdSaveOptions.wdDoNotSaveChanges;

模板類型對象,并指定路徑,定義:object objTemplate = Server.MapPath(\"~\\path\\name.dot\");要注意指定文檔路徑時的格式和轉義;

文檔類型對象,定義:object objDocType = WdDocumentType.wdTypeDocument;

布爾型的對象,object objTrue = true;

布爾型的對象,object objFalse = 1;以上兩個對象主要用于某些函數中的布爾型引用;

定義書簽對象并指向word文檔中已存在的書簽object doc_bookmark = \"bookmark\";

2.利用模板創建新文檔并根據書簽寫入內容。

(1)創建新文檔。

doc = (DocumentClass)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType, ref objTrue);

(2)根據書簽寫入內容。

①寫入普通文本:

doc.Bookmarks.get_Item(ref doc_bookmark).Range.Text = “string”;

②寫入表格并控制表格樣式:

利用書簽定義處理“范圍”,以明確表格插入位置,Range wrdRng = doc.Bookmarks.get_Item(ref doc_bookmark).Range;

根據前面定義的wrdRng定義一個表格對象,并指明行列(rows和column為整數類型),Table newTable = doc.Tables.Add(wrdRng, rows, columns, ref oMissing, ref oMissing);oMissing為前面定義的缺省值參數;

指定表格中字號大小,newTable.Range.Font.Size = 11;

指定表格文本框中文字的對齊方式newTable.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;(示例代碼中指定水平居中對齊)

指定表格外邊框樣式,newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;

指定表格外邊框線條的粗細,newTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth150pt;

指定表格內邊框樣式,newTable.Borders.InsideLineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;

指定表格某列的寬度,newTable.Columns[1].Width = 50f;

定義單元格對象并指定到表格中的某個單元格,Cell cell = doc.Tables[1].Cell(1, 1);(示例代碼中table中的參數指明所操作表格為文檔中的的第一個表格,cell的參數指明所操作的單元格為第一個表格的第一行、第一列單元格);

向單元格中寫入內容,cell.Range.Text = \"string\";

合并單元格,先指定起始單元格cell = doc.Tables[1].Cell(1, 1);再使用Merge函數,cell.Merge(doc.Tables[1].Cell(dt.Rows.Count + 1, 5));merge函數的參數為要合并的最后一個單元格;

③插入圖片:

利用書簽定義處理“范圍”,以明確圖片插入位置,Range wrdRng = doc.Bookmarks.get_Item(ref doc_bookmark).Range;

定義兩個對象類型用以表示圖片插入起止位置,object start;object end;

指定圖片指定的起止位置為書簽的起止位置,start = doc_bookmark.Start;end = doc_bookmark.End;

根據一定的路徑和指定的起止位置插入圖片,InlineShape li = doc.Range(ref start, ref end).InlineShapes.AddPicture(imgPath, ref oMissing, ref oMissing, ref oMissing);

④生成并根據指定路徑保存word文檔:

選取word文檔內容,doc.Content.Select();

更新內容域,doc.Content.Fields.Update();

指定文檔保存路徑,注意路徑格式和轉義字符的處理,object filename = Server.MapPath(\"~\") + \"path\\name.doc\";

將文檔保存到指定的路徑,doc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

object doNotSaveChanges1 = WdSaveOptions.wdDoNotSaveChanges;

關閉保存完畢的word文檔,doc.Close(ref doNotSaveChanges1, ref oMissing, ref oMissing);

⑤退出word應用程序,處理未能退出的進程:

退出word應用程序,appWord.Quit(ref oMissing, ref oMissing, ref oMissing);

將文檔對象引用指定為空,doc = 1;

將引用程序對象引用指定為空,appWord = 1;

以下代碼段是調用c#的垃圾回收函數清理系統內存資源,強行關閉未退出的word進程的操作:

GC.Collect();

GC.WaitForPendingFinalizers();

Process myProcess = new Process();

Process[] wordProcess = Process.GetProcessesByName(\"winword\");

try

{

foreach (Process pro in wordProcess)

{

IntPtr ip = pro.MainWindowHandle;

string str = pro.MainWindowTitle;

if (string.IsNullOrEmpty(str))

{

pro.Kill();

}

}

}

catch (Exception ex)

{

ex.ToString();

}

四、體會

C#.net下對word文檔的處理和控制技術是微軟VBA技術適用C#語言的一種變化,開發人員只要基于VBA宏語言結合c#語言特點和包即可展開開發。該技術本身并不新建,但其在程序中根據用戶需求自動生成符合格式規范和要求的word文檔確是一項非常實用、能夠很好提高用戶體驗、降低用戶操作強度、提高用戶滿意度的技術,能夠為軟件項目的順利實施和應用提供意想不到的便利和良好的用戶反饋。

主站蜘蛛池模板: 国产美女主播一级成人毛片| 国产欧美日韩专区发布| 精品国产电影久久九九| 色综合天天综合中文网| 99一级毛片| 亚洲成A人V欧美综合天堂| 91黄视频在线观看| 不卡无码h在线观看| 久久永久精品免费视频| 国产日本欧美在线观看| 精品三级网站| 狠狠ⅴ日韩v欧美v天堂| 亚洲国产欧美自拍| 国产黄网永久免费| 久久久久国产一区二区| a级毛片免费网站| 欧美一级99在线观看国产| 亚洲综合第一页| 免费一极毛片| 精品久久国产综合精麻豆| 99久久精彩视频| 成人欧美日韩| 97国产精品视频人人做人人爱| 免费国产黄线在线观看| 人人91人人澡人人妻人人爽| 国产成人综合日韩精品无码首页| 国产成人福利在线视老湿机| 国产黑人在线| 欧洲精品视频在线观看| 久久国产拍爱| 亚洲国产亚洲综合在线尤物| 亚洲日韩第九十九页| 久久综合丝袜长腿丝袜| 亚洲自偷自拍另类小说| 国产熟女一级毛片| 国产一二视频| 国产精品亚洲精品爽爽| 自拍欧美亚洲| 精品视频一区在线观看| yy6080理论大片一级久久| 日本91视频| 国产人妖视频一区在线观看| 欧美天天干| 浮力影院国产第一页| 日本欧美在线观看| 天天视频在线91频| 国产精品微拍| 五月综合色婷婷| AV片亚洲国产男人的天堂| 欧美区国产区| 波多野结衣亚洲一区| 一级一级一片免费| 高潮爽到爆的喷水女主播视频| 日本爱爱精品一区二区| 免费国产小视频在线观看| 精品视频第一页| 2019国产在线| 久久久久亚洲av成人网人人软件| 四虎在线高清无码| 国产精品亚洲日韩AⅤ在线观看| 免费一级成人毛片| 欧美亚洲另类在线观看| 国产成人午夜福利免费无码r| 国产午夜一级淫片| 国产在线视频自拍| 国产精品手机视频一区二区| av手机版在线播放| 亚洲国产精品成人久久综合影院| 91区国产福利在线观看午夜| 日韩毛片视频| 黄色网站在线观看无码| 国产中文在线亚洲精品官网| 日韩精品一区二区三区免费在线观看| 999精品视频在线| 高清无码手机在线观看| 日本黄色不卡视频| 午夜免费视频网站| 精品人妻系列无码专区久久| 天天综合网色中文字幕| 欧美精品aⅴ在线视频| 免费日韩在线视频| 国产成人高清精品免费软件 |