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

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

时间:2024-01-14 10:04:28浏览次数:34  
标签:word BookMarkReplace doc builder 书签 文档 Value Words Aspose

首先我大概叙述一下我对这个东西的理解毕竟我也只是记录一下,确保下次自己在看的时候可以看懂,
所以写的比较详细且傻瓜首先这个word文档不是凭空生成的,是你事先就把文档创建好的,里边的内容,
格式都是实现创建好的只留下一些需要插入数据的地方,当然这些需要插入数据的地方也不是空着的,
是用的书签,接下来看图
tip:图片点击可以放大看原图

 

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

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

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

 

 

 可以看到里面已经有了好几个书签,分别对应我上边写的的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>

效果如下:

 

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

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

演示一下效果吧

第一步:

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

 

 

 第二步:

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

 

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

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

 

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

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


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

相关文章

  • liunx命令word文档和excel表格转换成pdf
    1、 AnolisOS-8.x和centos7.x系统安装libreoffice#直接使用yum安装yuminstall-ylibreoffice#验证libreoffice--versionLibreOffice7.1.8.110(Build:1)#后台启动libreoffice服务nohuplibreoffice--headless--accept="socket,host=127.0.0.1,port=8100;urp;"--n......
  • SiteGround如何设置WordPress网站自动更新
    SiteGroundAutoupdate功能会自动帮我们更新在他们这里托管的所有WordPress网站,这样做是为了保证网站安全,并且让它们一直保持最新状态。他们会根据我们选择的设置自动更新不同版本的WordPress,包括主要版本和次要版本。在每次自动更新之前,他们都会为我们的网站做一个完整的备份,这样......
  • 无涯教程-Redis - AUTH password 命令函数
    RedisAUTH命令用于使用给定的密码对服务器进行身份验证,如果密码与配置文件中的密码匹配,则服务器将以OK状态代码进行答复并开始接受命令。否则,将返回错误,并且客户端需要尝试新密码。AUTHpassword-返回值返回字符串。AUTHpassword-语法以下是RedisAUTH命令的基本语......
  • 招投标系统是Electron的纯内网编辑Office Word,可以设置部分区域可编辑,其他的地方不能
    问题:我们是招投标系统的开发公司,框架是用的Electron,需要在纯内网的环境下编辑OfficeWord,可以设置部分区域可编辑,其他的地方不能编辑吗(如下红框位置)?并且在用户忘记填写一些区域的时候做提醒。回答:可以实现,猿大师办公助手支持Electron框架,并且支持纯内网部署。猿大师办公助手......
  • mysql_native_password 身份验证插件在未来版本中移除
    自MySQL8.0.34起,mysql_native_password身份验证插件已被弃用,并可能在MySQL的未来版本中移除。移除意味着:Javajdbc配置文件以及后端大数据的账号密码,必须更改为caching_sha2_password认证模式,否则无法连接MySQL数据库。如果业务系统今后升级MySQL8.0,这块需要加以适配。如果......
  • 使用 WordPress搭建个人博客
    安装LNMP下载LNMP:wgethttp://soft.vpser.net/lnmp/lnmp2.0.tar.gz-cOlnmp2.0.tar.gz解压并执行:tarzxflnmp2.0.tar.gz&&cdlnmp1.5&&./install.shlnmp选择想要安装的版本然后回车开始安装时间比较长,耐心等待一下,看到以下显示表示安装成功配置nigix查看nginx配置文......
  • Office Word批注人名称修改
    OfficeWord批注人名称修改没有登录MicrosoftOffice账号时,可以通过以下方式实现1打开WORD文档,点击菜单栏上“审阅-修订”右侧的对话框打开图标2弹出窗口,点击“更改用户名”3弹出WORD选项窗口,修改用户名4点击确认即可登录MicrosoftOffice账号时,可以推出之后......
  • 【愚公系列】2024年01月 WPF控件专题 Label、TextBox、PasswordBox控件介绍
    ......
  • 【AI 实战】Text Processing and Word Embedding 文本处理以及词嵌入原理和代码实例讲
    文章目录【AI实战】TextProcessingandWordEmbedding文本处理以及词嵌入原理和代码实例讲解TexttoSequenceStep1:TokenizationStep2:BuildDictionaryStep3:One-HotEncodingStep4:AlignSequencesTextProcessinginKerasWordEmbedding:WordtoVectorHowtom......
  • WordPress主题警告:侧边栏字符串偏移非法
    "侧边栏字符串偏移非法"警告通常是由于在WordPress主题的侧边栏中使用了不正确的代码或字符引起的。这可能是一个语法错误、字符编码问题或标签的闭合问题。要解决这个问题,可以尝试以下几个步骤:1.检查语法错误:打开你的WordPress主题文件,找到侧边栏的相关代码,并确保没有任何语......