首页  ·  知识 ·  编程语言
结合具体数据生成Word文档
佚名  http://www.cnblogs.com/freeliver54/a  VB  编辑:dezai  图片来源:网络
1.建立word模板文件 person.dot2.建立web应用程序 加入Microsoft.Office.Interop.Word引用3.相关示例代码============

1.建立word模板文件 person.dot
2.建立web应用程序 加入Microsoft.Office.Interop.Word引用
3.相关示例代码
========================

1.建立word模板文件 person.dot
  用书签 标示相关字段的填充位置

2.建立web应用程序 加入Microsoft.Office.Interop.Word引用
  具体添加引用请参看
  http://www.microsoft.com/china/msdn/library/office/office/OfficePrIntopAssFAQ.mspx?mfr=true

3.相关示例代码
---------------
  以下代码改编自
  http://blog.ccidnet.com/blog-htm-do-showone-uid-9416-type-blog-itemid-145551.html

protected void Button1_Click(object sender, EventArgs e)
{
    Microsoft.Office.Interop.Word.ApplicationClass appWord = null;//应用程序
    Microsoft.Office.Interop.Word.DocumentClass doc = null;//文档
    try
    {
        appWord = new ApplicationClass();
        appWord.Visible = false;
        object objTrue = true;
        object objFalse = false;
        object objTemplate = Server.MapPath("person.dot");//模板路径
        object objDocType = WdDocumentType.wdTypeDocument;
        doc = (DocumentClass)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType,

ref objTrue);
        //第一步生成word文档
        //定义书签变量
        object obDD_Name = "bm_Name";//姓 名
        object obDD_Sex = "bm_Sex";//性 别
        object obDD_Birthday = "bm_Birthday"; //出生年月

        //第二步 读取数据,填充数据集
        System.Data.DataTable dt = new DataTable();
        dt.Columns.Add("p_Name");
        dt.Columns.Add("p_Sex");
        dt.Columns.Add("p_Birthday");
        DataRow dr = dt.NewRow();
        dr["p_Name"] = "张三";
        dr["p_Sex"] = "男";
        dr["p_Birthday"] = "1980-01-01";
        dt.Rows.Add(dr);

        //第三步 给书签赋值
        //给书签赋值
        doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = dt.Rows[0]["p_Name"].ToString(); //姓 名
        doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = dt.Rows[0]["p_Sex"].ToString();//性 别
        doc.Bookmarks.get_Item(ref obDD_Birthday).Range.Text = dt.Rows[0]["p_Birthday"].ToString

();//年龄

        //第四步 生成word
        object filename = Server.MapPath("~") + "\\" + dt.Rows[0]["p_Name"].ToString() + ".doc";
        object miss = System.Reflection.Missing.Value;
        doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref

miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
        object missingValue = Type.Missing;
        object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
        doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
        appWord.Application.Quit(ref miss, ref miss, ref miss);
        doc = null;
        appWord = null;
               
    }
    catch (System.Exception ex)
    {
        //捕捉异常,如果出现异常则清空实例,退出word,同时释放资源
        string aa = ex.ToString();
        object miss = System.Reflection.Missing.Value;
        object missingValue = Type.Missing;
        object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
        doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
        appWord.Application.Quit(ref miss, ref miss, ref miss);
        doc = null;
        appWord = null;
    }
}

-----
以上代码在运行时 如遭遇80070005错误
 
解决方法一:
控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Word文档
之后
单击属性打开此应用程序的属性对话框。 
2. 单击标识选项卡,然后选择交互式用户。
3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后
自定义->编辑->添加ASP.NET账户和IUSER_计算机名
4. 确保允许每个用户访问,然后单击确定。
5. 单击确定关闭 DCOMCNFG。

解决方法二:
如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:
在web.config中使用身份模拟,在节中加入  " password="密码"/>
 

详细解决办法请参看
http://blog.csdn.net/lizhizhe2000/archive/2007/03/16/1531417.aspx

本文作者:佚名 来源:http://www.cnblogs.com/freeliver54/a
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读