首页 > 编程语言 >Aspose.Words使用word模板中的书签/域插入信息并导出

Aspose.Words使用word模板中的书签/域插入信息并导出

时间:2023-11-22 16:33:09浏览次数:40  
标签:word BookMarkReplace doc builder 书签 文档 Value Words Aspose

首先我大概叙述一下我对这个东西的理解毕竟我也只是记录一下,确保下次自己在看的时候可以看懂,

所以写的比较详细且傻瓜首先这个word文档不是凭空生成的,是你事先就把文档创建好的,里边的内容,

格式都是实现创建好的只留下一些需要插入数据的地方,当然这些需要插入数据的地方也不是空着的,

是用的书签,接下来看图

tip:图片点击可以放大看原图

Aspose.Words使用word模板中的书签/域插入信息并导出_数据

这就是我预先做好的一个简单的文档,这段教程中只需要看前两行,第三行是我用来添加多行数据的,暂且不看

你以为第二行是空的,那就错了,我们点击插入,点书签,可以看到这个框

Aspose.Words使用word模板中的书签/域插入信息并导出_封装_02

可以看到里面已经有了好几个书签,分别对应我上边写的的id,姓名那些,你可以选中一个书签点击定位,光标就可以跳到该书签的位置,注意,一个位置只放一个书签。

这时候我的六个空白格里是有了六个书签的,这时候把该模板放到你的项目文件夹里,接下来就开始操作项目

右键你的项目-管理NuGet程序包,搜索Aspose.Words点击下载安装,提示不用管,下载就行了

接着引入命名空间,我用的C#:

using Aspose.Words;

然后看代码:

看不懂的话可以私信问我

//前台下载按钮对应的方法名
        protected void SaveDoc(object sender,EventArgs e)
        {
            //这里是预先定义好的模板的路径
            string docpath = HttpContext.Current.Server.MapPath("/信息表模板.doc");
            //操作该路径下的文件即模板
            Document doc = new Document(docpath);
            DocumentBuilder builder = new DocumentBuilder(doc);
            BookMarkReplace(doc, builder, "userid", userid.Value.Trim()) ;
            BookMarkReplace(doc, builder, "username", username.Value.Trim());
            BookMarkReplace(doc, builder, "usersex", usersex.Value.Trim());
            BookMarkReplace(doc, builder, "userage", userage.Value.Trim());
            BookMarkReplace(doc, builder, "userheight", userheight.Value.Trim());
            BookMarkReplace(doc, builder, "userkg", userkg.Value.Trim());//创建保存路径文件建名字
            string mydir = Server.MapPath("/DocFile/");
            //创建保存文件的默认名字
            string name = username.Value;
            doc.Save(mydir + name + "信息表.doc");
            //跳转到文档,即用户可下载文档
            Response.Redirect("/DocFile/" + name + "信息表.doc");
        }

        /// <summary>
        /// 封装BookMArkReplace
        /// </summary>
        /// <param name="doc"></param>
        /// <param name="builder"></param>
        /// <param name="bookmark">书签名称</param>
        /// <param name="value">替换内容</param>
        public static void BookMarkReplace(Document doc,DocumentBuilder builder,string bookmark,string value)
        {
            //bm是文档中书签的内容
            var bm = doc.Range.Bookmarks[bookmark];
            //不为空说明有内容,则不做操作,一般为空,除非出错
            if (bm == null)
            {
                return;
            }
            //将书签中的内容清空
            bm.Text = "";
            //将数据插入到书签中
            builder.MoveToBookmark(bookmark);
            bm.Text =value;
        }

BookMarkReplace是封装好替换书签的方法,因为有很多书签需要替换,所以封装一个方法可以省去很多事,

这也是面向对象的三大特性之一

然后我们简单设计一下前端页面,为了更直观看到输出的文档,我们把前端也写成表格的样子,文字自己输入

关键代码如下:

<style type="text/css">
        .texts{
            border:0px;
        }
        td{
            border:1px solid blue;
            text-align:center;
        }
        tr{
            height:50px;
            
        }
        table{
            width:500px;
            border:3px solid red;
        }
        
    </style>
    
    <div style="height:100px;width:1055px;border:3px solid green;padding-left:40%;padding-top:30px">
        <asp:LinkButton runat="server" class="btn btn-success" OnClick="SaveDoc">下载word</asp:LinkButton>
    </div>


    <div>
        <table>
            <tbody>
                <tr>
                    <td>编号:</td>
                    <td>姓名:</td>
                    <td>性别:</td> 
                    <td>年龄:</td>
                    <td>身高:</td>
                    <td>体重:</td>
                </tr>
                <tr>
                    <td><input type="text" class="texts" placeholder="输入编号" id="userid" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="输入姓名" id="username" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="输入性别" id="usersex" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="输入年龄" id="userage" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="输入身高" id="userheight" runat="server"/></td>
                    <td><input type="text" class="texts" placeholder="输入体重" id="userkg" runat="server"/></td>
                </tr>
            </tbody>
        </table>
    </div>

效果如下:

Aspose.Words使用word模板中的书签/域插入信息并导出_数据_03

输入内容后点击下载word,就会执行你写的方法,将你输入的每一个数据都替换你模板里的书签

接下来自己尝试一些输入内容下载文档看看能不能成功替换

演示一下效果吧

第一步:

Aspose.Words使用word模板中的书签/域插入信息并导出_项目文件_04

 第二步:

Aspose.Words使用word模板中的书签/域插入信息并导出_数据_05

 第三步打开下载好的文件:

Aspose.Words使用word模板中的书签/域插入信息并导出_数据_06

上边的红色字还有下边的aspose水印都是aspose包自带的,可以从网上找一些纯净的包自己导入

对了,每一次点击下载都会在你的项目文件夹里生成一个word表,顺序是
word文档先生成在你的项目文件夹里,用户再下载你文件夹里的内容
成功点个赞评论下啊

标签:word,BookMarkReplace,doc,builder,书签,文档,Value,Words,Aspose
From: https://blog.51cto.com/u_16371710/8518367

相关文章

  • python wordcloud生成词云
    #!/usr/bin/envpython#coding:utf-8#pipinstallwordcloud#pipinstallmatplotlibimportwordcloudimportmatplotlib.pyplotaspltimportnumpyasnpfromPILimportImagetext="""给你一瓶魔法药水喝下去就不需要氧气给你一瓶魔法药水喝下去就不怕身体......
  • word转pdf怎么显示批注
    如何将word文档带批注的转化为pdf并且显示批注:1、用word打开需要转换成pdf而且还带批注痕迹的word文件。2、打开word文件之后,点击word左上角的文件处。3、然后点击左边这一排上的“另存为”。注意:千万不要选另存为下面的另存为AdobePDF,这样保存下来的文件是没有批......
  • 在word输入化学元素符号
    1、先输入化学元素,首字母大写,后字母小写,后边是数字。2、用鼠标选定数字后,同时按下“Ctrl 和 =”即可。  例:先输入Al2O3,用鼠标选定数字2后,同时按下“Ctrl 和 =”;再用鼠标选定数字3后,同时按下“Ctrl 和 =”即可。   3、单位符号,如立方米,先输入m3,用鼠......
  • 如何在word方框内打v_如何在word方框内打v
     001、如何在word方框中打√符号?百度知道1、首先在电脑中打开word,需要在方框内打√符号,先选中方框,按delete键删除方框。2、然后在打开的操作主页面中,点击菜单栏“插入”,如下图所示。3、接着在打开的下拉菜单中,点击右侧“符号—其他符号”。4、然后在打开的窗口中,字体选择“Wang......
  • Java Word 转 pdf
    最近项目需要做在线预览文档功能,要求对word文档后台转为pdf,遇到了很多问题,因此记录一下。网上有很多将Word转换成PDF的方式,这里我试了几种比较简单的方式:POI、aspose、spire和documents4j。1、POIPOI是Apache下的一个Java类库,可以帮助我们实现Java与各种Office格式文件的互相转......
  • word 取消 字母 大写
    方法步骤如下:1、打开需要操作的WORD文档,点击左上角的“文件”,并在左侧导航栏点击“选项”。2、在WORD选项相关设置选项中,带你及左侧“校对”,然后点击右侧的“自动更正选项”。3、根据需要取消相关“首字母大写”,然后点击确定返回上一层设置界面,再点确定即可。4、返回WORD文......
  • 零代码编程:用ChatGPT将SRT字幕文件批量转为Word文本文档
    一个文件夹中有多个srt视频字幕文件,srt文件里面有很多时间轴:现在想将其批量转为word文档,去掉里面与字符无关的时间轴,在ChatGPT中输入提示词:你是一个Python编程专家,要完成一个批量将SRT字幕文件转为Word文本文档的任务,具体步骤如下:打开文件夹:F:\儿童学习教育\Abadas.适合2岁以上.BBC......
  • wps-word打印某几页
    打印第二节第一页如果文章只有1节,要打印1,3页,以及5-18页,那么在页码范围处输入1,3,5-18页即可。如果你的文档大于2节,word中用s代表节(section),用p代表页(page)。若需要打印第2节的第3页和第3节第2页到4页,页码范围:p3s2,p2s3-p4s3。......
  • Dynamic CRM 组织服务对Word模版生成PDF文件
    目的:解决用户手动下载word模版再上传问题解决方案:组织服务直接对指定的word模版文件生成PDF文件流1.word模版必须上传到系统文档模版后:设置->模版->文档模版 2.组织调用“ExportpdfDocument”,返回PDF文件字节信息。另外实体信息需要把“注释”勾选上,否则执行代码会报错,如下:......
  • mysql数据库ERROR 1193 (HY000): Unknown system variable 'validate_password_policy
    一、概况  平时我们安装完数据库,需要进行对应的密码或者密码策略修改,此时需要mysql的密码验证插件。MySQL可能没有这个插件,就需要进行相应的处理。二、问题描述mysql>setglobalvalidate_password_policy=0;ERROR1193(HY000):Unknownsystemvariable'validate_passw......