asp.net Aspose.Word 利用邮件合并功能 操作word模板 生成word。asp.net NPOI 对excel进行操作,生成excel
实现的方法,貌似有很多 如果是 c/s 架构的c# 可以用, vsto .如果是 vs2008 那么是支持 office 2003 和 office 2007 ,如果是 vs2010,它自带的 vsto 4.0 支持 office 2007 和 office 2010.比较强大。
但是如果是 b/s 项目呢?有以下3种第三方控件可以使用。本次采用 Aspose.Word 来使用。
1:把word 转换成 xml ,然后在 xml 里面 把需要修改的文字改成一个标签,然后通过 asp.net 获取数据库的值来替换 xml 里面的标签。
http://www.cnblogs.com/kevin-top/archive/2010/06/23/1763327.html
2:第三方控件之 weboffice (免费的)
http://www.cnblogs.com/dooom/archive/2010/07/03/1770450.html
官方网址:http://www.dianju.cn/p/weboffice/index.php 据说能上传,并且能在线编辑。
3: 第三方控件之 OfficeOCXSetup http://www.cnblogs.com/xiyang1011/archive/2010/12/05/1897255.html
4:Aspose.Word,可以预先用word 自己定义模板,插入各种域mergefield/书签MarkBook,利用Aspose.Word生成最终word。
由于我所在的公司,之前用的就是 word插入域+access来进行邮件合并制作word文档的,所以这个对我来说比较合适。最后的代码如下
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Aspose.Words; //把Aspose.Words.dll 放在bin 目录下 ,记得在项目上引用一下 using System.Data; using System.Data.OleDb; //因为我用的是 access namespace asp.net_生成word_Aspose.Words { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string temDocPath = Server.MapPath("~/word模板/2-政府文件NC1.doc"); Aspose.Words.Document doc = new Document(temDocPath); //获取doc里面的 域名字 var all = doc.MailMerge.GetFieldNames() ; //显示出来 foreach (var item in all) { Response.Write(item.ToString()+"<br>"); } //建立一个和 access 的链接 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("~/数据库/NC2-2.mdb")); conn.Open(); OleDbCommand cmd = new OleDbCommand("select * from list", conn); OleDbDataReader dr = cmd.ExecuteReader(); string fileName = ""; while (dr.Read()) { fileName = dr["coen"].ToString(); } dr.Close(); dr = cmd.ExecuteReader(); Bookmark mark = doc.Range.Bookmarks["companyEn"]; //这里我是测试了一下 用书签来 替换 mark.Text = "张三公司"; doc.Range.Bookmarks.Clear(); //清除掉多的,没有用到的书签 string date = DateTime.Now.ToString("yyyyMMdd"); doc.MailMerge.Execute(dr); string fileTitle = "/生成的word/" + fileName + date + ".doc"; fileName = Server.MapPath("~/生成的word/" + fileName + date + ".doc"); //fileName = "c:/joey.doc"; //居然可以保存到C盘 doc.Save(fileName); //保存到文件夹指定的地方 存为doc litResult.Text = "<a href='" + fileTitle + "' target='_blank'>点击下载</a>"; //doc.Save(Response, "out.doc".ToString(), ContentDisposition.Attachment, null); //保存为doc,浏览器直接提示下载 conn.Close(); } } }
参考页面:http://www.cnblogs.com/linwinfan/archive/2010/01/07/1641340.html (通过在指定的地方,插入->域,选择MergeField,然后再用邮件合并的方式,来合成word文档,word直接下载,并且有将图片转换到word文档的方法 )
http://www.cnblogs.com/sendrylee/archive/2010/04/01/1702463.html (通过在指定的地方,插入->书签,选择 BookMark,然后在用asp.net代码来替换掉书签的txt文本,注意,书签可以把文字选中之后,再设置为书签,实际感觉和域 差不多,域有特殊的<<>>符号,但是如果我们把书签是 选择中文字,然后再插入的书签,也一样可以看得出来的。书签必须是英文,域好像也是英文。带破解版下载地址 附:Aspose.Words for NET 6.5 破解版下载地址 (版本比较低 ))
http://hi.baidu.com/leilongbing/blog/item/439c5a18201bed69dab4bd83.html 特别讲到如何用 Aspose.Words 对 doc 文档的节点进行编辑
参考页面:http://www.cnblogs.com/xiyang1011/archive/2011/04/30/2033324.html (有讲到 增加页脚,和 在word中增加图片,以及循环生成表格的行)
Aspose.Words for .NET Samples
相关参考页面:
1:使用Aspose.Words把word转成图片,但如何设置图片的大小。求解!!! http://q.cnblogs.com/q/32082/
2:Aspose.Words 导出图片到Word指定位置 http://q.cnblogs.com/q/28185/
asp.net NPOI 对excel进行操作,生成excel
详细教程:http://tonyqus.sinaapp.com/
教程1:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html
教程2:http://www.dotblogs.com.tw/killysss/archive/2010/01/27/13344.aspx