国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

c# 實(shí)現(xiàn)Word聯(lián)接Excel的MailMerge功能

2019-11-18 16:35:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

目標(biāo):使用Word的MailMerge功能,數(shù)據(jù)源是Excel中的數(shù)據(jù)。這些資料在網(wǎng)上很少,只能自己慢慢測(cè)試了。

關(guān)于Word的MailMerge功能:

word提供郵件的模板,可以選擇各種數(shù)據(jù)源,比如數(shù)據(jù)庫(kù),excel等,然后群發(fā)(或打印、另存文件)郵件。

為了實(shí)現(xiàn)這個(gè)功能,我的程序要能做的是

1:打開(kāi)word文件對(duì)象

2:設(shè)置MailMerge數(shù)據(jù)源:指定Excel,指定查詢語(yǔ)句,指定聯(lián)接的列s

3:關(guān)閉保存

 

關(guān)于引用:

using Word = Microsoft.Office.Interop.Word;

using System.Reflection;

using System.Diagnostics;

using System.IO;

關(guān)于變量:word的com對(duì)象需要傳入的參數(shù)定義

        Word.application WordApp = new Microsoft.Office.Interop.Word.Application();

        object missing = System.Reflection.Missing.Value;

        object falseValue = false;

        object trueValue = true;

關(guān)于處理

  需要注意的是

  1:打開(kāi)word的方式

  2:query的寫法。類似于sql一般,比較好玩。

  3:設(shè)置列,。設(shè)置之后,在word中可以看見(jiàn)這些列。

  4:關(guān)閉word之后,還得再copy一次excel。直接生成之后的excel文件size暴漲,文件還打不開(kāi),所以覆蓋一遍了之。原因不詳。

   PRivate void button1_Click(object sender, EventArgs e)

        {

            object fileName = CopyTemplateDoc();//copy doc in

            Word.Document doc = WordApp.Documents.Open(ref fileName, ref missing, ref falseValue, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref trueValue, ref missing, ref missing, ref missing);

            object linkTo = CopyExcelData();//copy excel data

            object query = "SELECT * FROM `Sheet1$`";//data from sheet1

            object header = "Name,Category,Address,Content";//filed list

            try

            {

                doc.MailMerge.CreateDataSource(ref linkTo, ref missing, ref missing, ref header, ref falseValue, ref query, ref missing, ref missing, ref trueValue);

                doc.MailMerge.Fields.Add(WordApp.Selection.Range, "Name");//add one filed to test

                MessageBox.Show("success");

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

            finally

            {

                doc.Save();//save word

                CloseApp();//close word app

                CopyExcelData();//copy data again,*******************

            }

        }

關(guān)于關(guān)閉word對(duì)象

         public void CloseApp()
        {
            WordApp.Documents.Close(ref trueValue, ref missing, ref missing);
            WordApp.Quit(ref trueValue, ref missing, ref missing);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(WordApp);
            GC.Collect();

            //this.KillExcelProcess();
        }

還有兩個(gè)工具函數(shù)不再贅述,用來(lái)copy文件并且返回文件名private string CopyExcelData();和private string CopyTemplateDoc()。

測(cè)試,搞定


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日土县| 辽阳市| 凤凰县| 徐水县| 乌拉特后旗| 宜章县| 晋宁县| 焦作市| 仪陇县| 政和县| 连城县| 安溪县| 景泰县| 紫金县| 闵行区| 凤山市| 剑河县| 吉首市| 腾冲县| 城固县| 金川县| 林西县| 巫溪县| 武平县| 内乡县| 义乌市| 南宫市| 阳泉市| 罗山县| 贞丰县| 沐川县| 吴旗县| 杂多县| 铅山县| 塘沽区| 阜阳市| 丹江口市| 平遥县| 金川县| 交口县| 德化县|