收 藏 投 稿 繁 体 RSS 
站长吧-中国站长学习与交流的网站
首 页 运 营 学 院 建 站 论 坛
Web master8.net  
 网站运营  
  欢迎在本站发布信息,在线投递稿件请点这里。编辑QQ:4908220,欢迎联系交流。
业界动态 创业故事 推广研究 策划盈利 电子商务 企业平台
  站长工具
SEO查询 Whois查询 Pr查询 域名查询 IP查询 网页编辑器
 建站服务  
  如有建站意向,请尽快联系我们,以便安排时间... 建站服务 QQ4908220 QQ:4908220
作品展示 服务范围 服务流程 服务报价 联系方式 付款方式
文章正文  » 您的当前位置: 首页 >> 学院 >> 程序开发 >> ASP.Net
c# 实现Word联接Excel的MailMerge功能
  来源:互联网 | 时间:2007-04-15 | 浏览:   相关评论 | 报告错误 | 发布文章
【字号: | | 】 【背景色 杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色)

目标:使用word的MailMerge功能,数据源是Excel中的数据。这些资料在网上很少,只能自己慢慢测试了。

关于Word的MailMerge功能:

word提供邮件的模板,可以选择各种数据源,比如数据库,excel等,然后群发(或打印、另存文件)邮件。

为了实现这个功能,我的程序要能做的是

1:打开word文件对象

2:设置MailMerge数据源:指定Excel,指定查询语句,指定联接的列s

3:关闭保存

关于引用:

using Word = Microsoft.Office.Interop.Word;

using System.Reflection;

using System.Diagnostics;

using System.IO;

关于变量:word的com对象需要传入的参数定义

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

object missing = System.Reflection.Missing.Value;

object falseValue = false;

object trueValue = true;

关于处理

需要注意的是

1:打开word的方式

2:query的写法。类似于sql一般,比较好玩。

3:设置列,。设置之后,在word中可以看见这些列。

4:关闭word之后,还得再copy一次excel。直接生成之后的excel文件size暴涨,文件还打不开,所以覆盖一遍了之。原因不详。

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,*******************

}

}

关于关闭word对象

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();
}

还有两个工具函数不再赘述,用来copy文件并且返回文件名private string CopyExcelData();和private string CopyTemplateDoc()。

master8
  • 上一篇:AjaxPro让.NET的AjaxPro变得简单
  • 下一篇:Skype出台海外赔偿方案

  • 我要投稿  打印本文  推荐本文  加入收藏  返回顶部  关闭窗口
    搜模板(www.somoban.com) 原创网站模板交易平台
    阿里妈妈再掀疯狂采购风,网站广告位严重告急,急召天下站长
    基于PHP+MySQL的整站、模块、插件开发等或者按需求实现相应功能;
基于各PHP主流建站系统CMS,BBS,BLOG等的模板定制,完全手写代码;
整站数据迁移或备份恢复;网页代码优化、重构;整站常规SEO优化;网站技术支持;
点击了解详情...
    站长论坛
    • 验证码: