程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用VSTO自動生成word文檔

使用VSTO自動生成word文檔

編輯:關於ASP.NET

最近第一次用VSTO(Visual Studio Tools For Office),寫了一個自動生成word報告的小程序,感覺VSTO非常難用。主要是對office對象模型不熟悉,不理解很多類、方法、屬性的含義,word裡面很簡單的操作卻不知道如何找到相應的類和方法去實現。在VS裡面沒辦法直接看到VSTO的注釋,查MSDN又很不方便。後來總算是找到了一個相對快捷的方法,其實VBA和VSTO使用的是一套對象模型,只要把需要實現的操作錄制成宏,對照著VBA的代碼就很容易寫出相應的C#程序了。

下面舉幾個小例子。

輸入標題:在當前光標處插入一段文字並設置成Heading 1樣式,居中

在VBA中錄制的宏如下:

Selection.TypeText Text:="Test Title"
Selection.Style = ActiveDocument.Styles("Heading 1")
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.TypeParagraph

相應的C#代碼:

//因為set_Style()要求傳ref object參數,所以不能直接傳string
object style_Heading1 = "Heading 1";
WordApp = new ApplicationClass();
WordApp.Selection.TypeText("Test Title");
//設置樣式
WordApp.Selection.ParagraphFormat.set_Style(ref style_Heading1);
//居中
WordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
//換行
WordApp.Selection.TypeParagraph();

插入一個三行兩列的表格,在第一行第一列填入今天的日期,設置樣式,根據內容自動調整,去掉標題行

VBA:

ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Tables(1)
If .Style <> "Table Grid" Then
.Style = "Table Grid"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End With
Selection.Tables(1).Style = "Medium Shading 1 - Accent 5"
Selection.Tables(1).ApplyStyleHeadingRows = Not Selection.Tables(1). _
ApplyStyleHeadingRows
Selection.InsertDateTime DateTimeFormat:="M/d/yyyy", InsertAsField:=False, _
DateLanguage:=wdEnglishUS, CalendarType:=wdCalendarWestern, _
InsertAsFullWidth:=False
Selection.Tables(1).AutoFitBehavior (wdAutoFitContent)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved