您的位置:首页 > 编程语言 > ASP

asp.net Aspose.Word 利用邮件合并功能 操作word模板 生成word。asp.net NPOI 对excel进行操作,生成excel

2012-03-28 18:03 981 查看
实现的方法,貌似有很多 如果是 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 里面的标签。

/article/5956185.html

2:第三方控件之 weboffice (免费的)

/article/5274109.html

官方网址:http://www.dianju.cn/p/weboffice/index.php 据说能上传,并且能在线编辑。

3: 第三方控件之 OfficeOCXSetup /article/4940261.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文档的方法 )

/article/5401548.html (通过在指定的地方,插入->书签,选择 BookMark,然后在用asp.net代码来替换掉书签的txt文本,注意,书签可以把文字选中之后,再设置为书签,实际感觉和域 差不多,域有特殊的<<>>符号,但是如果我们把书签是 选择中文字,然后再插入的书签,也一样可以看得出来的。书签必须是英文,域好像也是英文。带破解版下载地址 附:Aspose.Words for NET 6.5 破解版下载地址 (版本比较低 ))

http://hi.baidu.com/leilongbing/blog/item/439c5a18201bed69dab4bd83.html 特别讲到如何用 Aspose.Words 对 doc 文档的节点进行编辑

参考页面:/article/4940269.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

// /*960*90,创建于2012-9-25*/
var cpro_id = "u1072390";

// ]]>

详细教程: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐