Aspose.word使用word模板导出数据

4 篇文章 0 订阅
2 篇文章 0 订阅

Aspose.word 使用word模板导出数据

找了网上很多教程发现都不太符合我的需要,所以自己写了一个希望对大家有所帮助
winform程序好像不太支持Aspose.word 具体还需要大家去做验证
在此提供一个非常好用的dll反编译工具,无需安装解压即用
dll反编译工具下载

第一步 设置word模板

Word中添加书签的步骤:
1、打开Word,选择要为其指定书签的对象,或单击要插入书签的位置。
2、执行“插入”→“书签”。
3、在随后打开的对话框中,输入“书签名”,也可以在下面的列表中选择一个已有的书签名。
但请注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格。
4、单击对话框下方的“添加”按钮,新的书签名将出现在下面的列表中。
另外,请注意:
1、如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。
2、为一项内容指定书签,该书签会以灰色括号 ([…]) 的形式出现(括号仅显示在屏幕上,不会打印出来);如果是为一个位置指定的书签,则该书签会显示为灰色I形标记。

第二步

引用Aspose.word dll 文件
在此提供我使用的Aspose.word.dll
Aspose.dll下载

第三步

写代码

    public void  word()
     {
        string templatePath = HttpContext.Current.Server.MapPath(@"~/PrintTemplate人员基础息表模板.doc");
        //获取到模板文件
        Aspose.Words.Document doc = new Aspose.Words.Document(templatePath);
        #region 基础信息
        //因为我使用的是oracle数据库
        OracleConnection conn1 = new OracleConnection(is_constr);
        try
        {
            DataTable ldt_sql = new DataTable();
                OracleDataAdapter loda_sql = new OracleDataAdapter();
                string ls_sql = "";
               //在这里获得数据
                 ls_sql = "sele *  from data_table ";
                loda_sql = new OracleDataAdapter(ls_sql, conn1);
                conn1.Open();
                loda_sql.Fill(ldt_sql);
                loda_sql.Dispose();
                conn1.Close();
            //循环模板文件书签名
            foreach (Aspose.Words.Bookmark mark in doc.Range.Bookmarks)
            {
                if (mark != null)
                {
                    switch (mark.Name)
                    {
                        case "tb_xm":
                            mark.Text = ldt_sql.Rows[0]["xm"].ToString().Trim();
                            break;
                        case "tb_xb":
                            ls_value =ldt_sql.Rows[0]["xb"].ToString().Trim();
                            mark.Text = f_get_zdwh_mc(idt_sysdic, "2", ls_value, ref ls_error);
                             ldt_sql.Rows[0]["xb"].ToString().Trim();
                            break;
                        case "tb_nl":
                            mark.Text = ldt_sql.Rows[0]["nl"].ToString().Trim();
                            break;
                     //导出照片
                        case "Image_photo":
                            Aspose.Words.DocumentBuilder builder = new Aspose.Words.DocumentBuilder(doc);
                              byte[] img = new byte[0];
                               DataRow dr;
                               dr = ldt_sql.Rows[0];
                             //由于我的数据库里存储的照片就是字节流,所以我在这里直接转换就行了,
                               if (!ldt_sql.Rows[0]["imgdata"].ToString().Equals(""))
                               {
                                   img = (byte[])dr["imgdata"];
                               }
                               builder.MoveToBookmark("Image_photo");
                               builder.InsertImage(img, Aspose.Words.Drawing.RelativeHorizontalPosition.Margin, 1, Aspose.Words.Drawing.RelativeVerticalPosition.Margin, 1, 70, 100, Aspose.Words.Drawing.WrapType.Square);
                            break;
                        default:
                            break;
                    }
                }
            }
        }
        catch (Exception)
        {
        throw;
        }
        #endregion
        string ls_xm = tb_xm.Text.Trim();
        string ls_dwmc = tb_dwmc.Text.Trim();
        string ls_xrzw = tb_sfqk.Text.Trim();
        //filename是设置导出是文件的名称
        string filename = ls_dwmc + "-" + ls_xrzw + "-" + ls_xm;
        //导出文件
        doc.Save(filename + ".doc", Aspose.Words.SaveFormat.Doc, Aspose.Words.SaveType.OpenInWord, this.Response);
    }

希望以上能解决各位的问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值