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

首頁(yè) > 開(kāi)發(fā) > 綜合 > 正文

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

2024-07-21 02:30:18
字體:
來(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的寫(xiě)法。類似于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()。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 望奎县| 邵东县| 合江县| 浠水县| 来凤县| 崇信县| 玉林市| 安国市| 巴彦县| 应用必备| 阿克苏市| 皋兰县| 罗山县| 常山县| 鹿泉市| 华亭县| 淮南市| 民和| 桃江县| 和田县| 股票| 古浪县| 宕昌县| 类乌齐县| 阜康市| 青海省| 阿瓦提县| 宝坻区| 龙胜| 叶城县| 林州市| 扶余县| 六盘水市| 汉寿县| 苗栗县| 霞浦县| 蓝山县| 杭州市| 桦川县| 怀仁县| 米林县|