c#寫word文檔基礎(chǔ)操作
新建一個(gè)項(xiàng)目,在項(xiàng)目的引用當(dāng)中添加Com組件:Microsoft Word 11.0 Object Library
之后使用名稱空間Word即:using Word;
下面一個(gè)函數(shù),建立一個(gè)Word 文檔,添加頁眉、頁腳,在內(nèi)容中兩個(gè)不同字體的Hello!!!
public void myFunction()
{
Word.ApplicationClass oWordApp = new Word.ApplicationClass();//建立Word 對象,啟動(dòng)word程序
object missing = System.Reflection.Missing.Value;
object oTemplate = System.Windows.Forms.Application.StartupPath+"\\mytemplate.dot";
Word.Document oWordDoc = oWordApp.Documents.Add( ref oTemplate,ref missing,ref missing, ref missing);//新建word文檔
oWordApp.Visible = true;//設(shè)置Word程序可見,如果為false 那么word 不可見
//頁面設(shè)置
oWordDoc.PageSetup.TopMargin = oWordApp.CentimetersToPoints(2.5f); //上
oWordDoc.PageSetup.BottomMargin = oWordApp.CentimetersToPoints(2f);//下
oWordDoc.PageSetup.LeftMargin=oWordApp.CentimetersToPoints(2.2f);//左
oWordDoc.PageSetup.RightMargin=oWordApp.CentimetersToPoints(2.2f);//右
//添加頁眉
oWordDoc.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader; //激活頁眉的編輯
oWordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter; //設(shè)置對齊方式
string headtext1 ="Head Text";
oWordApp.Selection.Font.Name ="華文新魏"; //設(shè)置字體
oWordApp.Selection.Font.Size =10.5f;
oWordApp.Selection.Font.UnderlineColor = Word.WdColor.wdColorAutomatic;
oWordApp.Selection.Font.Underline = Word.WdUnderline.wdUnderlineSingle; //添加下劃線
oWordApp.Selection.TypeText(headtext1);
oWordApp.Selection.Font.Underline = Word.WdUnderline.wdUnderlineNone;
//添加頁腳
string foottext1 ="Foot Text";
oWordDoc.ActiveWindow.ActivePane.View.SeekView =Word.WdSeekView.wdSeekCurrentPageFooter; //激活頁腳的編輯
oWordApp.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
oWordApp.Selection.Font.Name ="仿宋_GB2312";
oWordApp.Selection.Font.Size =8;
oWordApp.Selection.TypeText(foottext1);
//添加正文
oWordDoc.ActiveWindow.ActivePane.View.SeekView =Word.WdSeekView.wdSeekMainDocument;//激活頁面內(nèi)容的編輯
oWordApp.Selection.Font.Name ="宋體";
oWordApp.Selection.Font.Size =10.5f;
oWordApp.Selection.Font.Scaling = 200;
oWordApp.Selection.TypeText("Hello!!!");
oWordApp.Selection.TypeParagraph();//另起一段
oWordApp.Selection.Font.Name ="黑體";
oWordApp.Selection.Font.Size =10.5f;
oWordApp.Selection.Font.Scaling = 100;
oWordApp.Selection.TypeText("Hello!!!");
oWordApp.Selection.TypeParagraph();//另起一段
string strfilename = System.Windows.Forms.Application.StartupPath+"\\myfirst.doc";
object filename = strfilename ;
//保存文檔為word2000格式
oWordDoc.SaveAs2000(ref filename,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing);
//保存文檔為word2003格式
//oWordDoc.SaveAs(ref filename, ref missing, ref missing, ref missing, ref missing,
// ref missing, ref missing, ref missing, ref missing, ref missing,
// ref missing, ref missing, ref missing, ref missing, ref missing,
// ref missing) ;
//以下關(guān)閉Word程序
object nochanges = Word.WdSaveOptions.wdDoNotSaveChanges;
if(oWordApp.Documents!= null)
{
IEnumerator ie = oWordApp.Documents.GetEnumerator();
while( ie.MoveNext())
{
Word.Document closedoc = (Word.Document)ie.Current;
closedoc.Close(ref nochanges,ref missing,ref missing);
}
}
oWordApp.Quit(ref nochanges, ref missing, ref missing);
}
使用C#進(jìn)行Office套件編程基礎(chǔ)教程(概念篇)
公司員工根據(jù)實(shí)際項(xiàng)目操作寫了一篇“C#寫word文檔基礎(chǔ)操作”的交流文檔,講述了一下使用C#進(jìn)行Word文檔操作的基本方法。在實(shí)際應(yīng)用過程中,我們不僅可以使用Word程序,而且可以使用所有基于COM組件技術(shù)的OFFICE套件,往往可使問題解決獲得最佳途徑。下面闡述一下在C#中使用這些Office套件的一些基本概念。
一、托管代碼與非托管代碼
眾所周知C#使用的.Net FrameWork SDK中的所有類庫都是托管代碼(Managed Code),而COM組件使用的是非托管代碼(Unmanaged Code)的文件,這些非托管代碼的COM組件要想被C#文件使用必須經(jīng)過轉(zhuǎn)換或者"如果可用,應(yīng)始終使用要集成到托管代碼中的 COM 組件的作者所發(fā)布的主 Interop 程序集。主 Interop 程序集中的類型已為您導(dǎo)入,可以從托管代碼中激活和調(diào)用。"(詳見微軟相關(guān)文檔http://msdn2.microsoft.com/zh-cn/library/tt0cf3sx.aspx)在上述“C#寫word文檔基礎(chǔ)操作”一文中已經(jīng)說明了通過Interop程序集使用Office套件的方法,不過需要說明的是在程序里面引用了COM組件:Microsoft Word 11.0 Object Library之后,在引用中的Word的名稱是"Microsoft.Office.Interop.Word",他的類型是"ActiveX",在程序中要使用Word時(shí)需要添加的命名空間應(yīng)為"Microsoft.Office.Interop.Word",而不能只引用Word。
二、目標(biāo)庫
每一個(gè)Microsoft Office應(yīng)用程序都在一個(gè)dll文件中提供了多種類型庫資源,這種dll文件叫做目標(biāo)庫(*.olb).
一個(gè)類型庫是一個(gè)提供COM對象功能信息的文件或文件的一部分,而且類型庫包含了有關(guān)類的信息。此類型庫并不存儲(chǔ)實(shí)際的對象,而只是存儲(chǔ)有關(guān)這些對象的信息。類型庫詳細(xì)說明了一個(gè)自動(dòng)化客戶機(jī)為對象需要調(diào)用的方法和屬性的信息,比如說它詳細(xì)的描述了接受或返回的值。
三、非托管代碼文件到托管代碼文件的轉(zhuǎn)換
非托管代碼文件 COM類型庫中的類型定義轉(zhuǎn)換為托管代碼公共語言運(yùn)行庫程序集中的等效定義可以通過微軟.Net FrameWork SDK中提供的工具"Tlbimp.exe"進(jìn)行轉(zhuǎn)換。Tlbimp.exe 的輸出為二進(jìn)制文件(程序集),該文件中包含在原始類型庫中定義的類型的運(yùn)行庫元數(shù)據(jù)??梢允褂弥T如 Ildasm.exe 這樣的工具檢查此文件。具體的使用命令為:tlbimp.exe XXXXX.olb。在轉(zhuǎn)換后就可以得到我們編程所需的類庫文件。例如使用tlbimp.exe Excel9.olb 可以得到excel.dll,此excel.dll可以在C#中直接使用。
在引用了轉(zhuǎn)換過的類庫文件后在引用中的Word的名稱是"Word",他的類型是"程序集",這樣命名空間就可以直接使用Word了。
四、命名空間的指定
在多數(shù)程序中我們運(yùn)行程序的語句為Application.Run(new Form1());
但在我們引用了Office相關(guān)套件以后(不論引用的COM還是托管類庫)在相關(guān)命名空間中都會(huì)多出一個(gè)Application的對象,這樣必須指定運(yùn)行程序的語句為System.Windows.Forms.Application.Run(new Form1());才能使程序如常運(yùn)行。
這兩篇文章是在公司時(shí)候別人寫的,關(guān)于那個(gè)文中提到的引用的問題,應(yīng)該和Office的版本有關(guān),最近沒什么時(shí)間看office編程了,都再吃老底子,出錯(cuò)難免.不要見笑哦.
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/jy_0219/archive/2010/01/23/5223622.aspx
聯(lián)系客服