閱讀34 返回首頁    go 微軟 go windows


C# VS2012操作word文檔 (一).創建文檔

該文章主要是講述如何使用VS2012創建word文檔,因為在項目中我們可能需要點擊一個按鈕把數據庫中的項目表單或圖片顯示到word文檔中,因此該文章主要分析如何使用VS2012創建word文檔並填寫相應的內容.主要通過C#引用Miscrosoft Word 14.0 Object Library實現的.

一.創建工程

首先是使用VS2012創建一個windows窗體程序,並添加如下圖所示的界麵.

二.添加引用

然後需要引用COM中的Miscrosoft Word 14.0 Object Library到工程中去.在"解決方案資源管理器"窗口中右擊"引用"對象,在彈出的快捷菜單中選擇"添加引用"命令,彈出"添加引用"對話框中選擇COM選項卡,選擇"Miscrosoft Word 14.0 Object Library".如下圖所示:

添加後,查看工程解決方案中引用,會看到引用到工程中的word對象如下圖所示,這裏會引用Microsoft.office.Interop.Word對象.

三.源代碼

雙擊Form1界麵空白處,進行添加源代碼操作,首先添加的下麵的引用代碼,其中MSWord是引用word對象,System.Reflection命名空間是引用Missing.Value缺省值.

//引用word對象類庫和命名空間
using MSWord = Microsoft.Office.Interop.Word;
using System.IO;
using System.Reflection;

添加源程序代碼如下所示:

namespace PDFTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        object path;                      //聲明文件路徑變量
        string wordstr;                   //聲明word文檔內容
        MSWord.Application wordApp;       //聲明word應用程序變量
        MSWord.Document worddoc;          //聲明word文檔變量    
        //點擊"創建"按鈕實現創建word文件
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "")
            {
                MessageBox.Show("請輸入路徑和文檔名信息");
            }
            else
            { 
                //初始化變量
                object Nothing = Missing.Value;                       //COM調用時用於占位
                object format = MSWord.WdSaveFormat.wdFormatDocument; //Word文檔的保存格式
                wordApp = new MSWord.ApplicationClass();              //聲明一個wordAPP對象
                worddoc = wordApp.Documents.Add(ref Nothing, ref Nothing, 
                    ref Nothing, ref Nothing);
                //向文檔中寫入內容
                wordstr = textBox3.Text;
                worddoc.Paragraphs.Last.Range.Text = wordstr;
                //保存文檔
                path = textBox2.Text + "\\" + textBox1.Text;          //設置文件保存路勁
                worddoc.SaveAs(ref path, ref format, ref Nothing, ref Nothing, 
                    ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, 
                    ref Nothing, ref Nothing, ref Nothing, ref Nothing);                 
                //關閉文檔
                worddoc.Close(ref Nothing, ref Nothing, ref Nothing);  //關閉worddoc文檔對象
                wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);   //關閉wordApp組對象
                MessageBox.Show("文檔創建成功!");
            }
        }         
    }
}

四.運行結果

點擊運行,輸入如上圖界麵中的內容,會在G:\路徑下創建一個test.doc的word 2003的文件,並填寫內容.如下圖所示:

五.錯誤與分析

在運行前可能會出現錯誤提示:無法嵌入互操作類型"Microsoft.Office.Interop.Word.ApplicationClass".解決方法是:在Visual Studio 中點擊菜單項"視圖->解決方案資源管理器"在其中點開"引用"文件夾,在"Microsoft.Office.Interop.Word" 上點擊鼠標右鍵選擇"屬性".將屬性中的"嵌入互操作類型"的值改為"false"即可.如下圖所示:

同時代碼中的object Nothing = Missing.Value表示缺少的值,在使用C#->COM時某個參數不會被使用時用於占位,類似於C++中NULL,但C#中null與它不同,所以當你調用COM使傳空或占位就需要該代碼實現相同的功能.注意Missing.Value的命名空間在System.Reflection中.通常Microsoft Word 11.0 Object Library對應Word 2003,Microsoft Word 12.0 Object Library對應Word 2007,如果想創建docx文檔,設置word格式時為object format =MSWord.WdSaveFormat.wdFormatDocumentDefault.

六.總結

最後推薦大家看看這篇博客,它詳細介紹了C#操作office文檔.https://blog.csdn.net/wudi626/article/details/2337857同時我上麵的知識也參看了一些博客,還有劉麗霞等編寫的《C#範例開發大全》,在此感謝這些人.這篇文章主要是在做數據庫係統中要引用到打印報表,顯示為pdf|word格式,所以才寫了該文章,後麵還想寫一篇關於word中插入表格和圖片的word操作,至於頁麵布局等我不想涉及,但思想都是一致的.希望文章對大家有幫助,同時有不足或錯誤的地方,見諒!

(By:Eastmount 2013-9-6 下午4點https://blog.csdn.net/eastmount/)

 

最後更新:2017-04-03 16:49:04

  上一篇:go java中基於線程池和反射機製實現定時任務
  下一篇:go HDU 3977 求斐波那契循環節