aspose 生成word 简单的文档操作

2023-05-16

1.使用Aspose.Words 插件。这个插件的好处是,发布网站的服务不需要安装office,也可以进行数据生成word文档

在生成word问当前需要我们先做好一个word模板,需要在“:”后边添加一个书签 

注意:Aspose插件,有的版本不支持生成后缀为 .docx的模板,否则提示文档损坏

 


                string tmppath = Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + "/DocTemp/createuser.doc");
                Document doc = new Document(tmppath); //载入模板      
                Bookmark name = doc.Range.Bookmarks["name"];
                name.Text = model.Name;
                Bookmark account = doc.Range.Bookmarks["account"];
                account.Text = model.Account;
                Bookmark password = doc.Range.Bookmarks["password"];
                password.Text = model.PassWord;
                Bookmark sex = doc.Range.Bookmarks["sex"];
                sex.Text = model.Sex;
                Bookmark height = doc.Range.Bookmarks["height"];
                height.Text = model.Height;

                Bookmark weight = doc.Range.Bookmarks["weight"];
                weight.Text = model.Weight;
                Bookmark birthday = doc.Range.Bookmarks["birthday"];
                birthday.Text = model.Birthday.ToString("yyyy-MM-dd");
                Bookmark phone = doc.Range.Bookmarks["phone"];
                phone.Text = model.Phone;
                Bookmark email = doc.Range.Bookmarks["email"];
                email.Text = model.Email;
                Bookmark qqnumber = doc.Range.Bookmarks["qqnumber"];
                qqnumber.Text = model.Email;

                Bookmark address = doc.Range.Bookmarks["address"];
                address.Text = model.Address;
                Bookmark presentaddress = doc.Range.Bookmarks["presentaddress"];
                presentaddress.Text = model.PresentAddress;
                Bookmark imgpath = doc.Range.Bookmarks["imgpath"];
                imgpath.Text = model.ImgPath;
                Bookmark hobby = doc.Range.Bookmarks["hobby"];
                hobby.Text = model.Hobby;
                Bookmark goodat = doc.Range.Bookmarks["goodat"];
                goodat.Text = model.GoodAt;

                var path = Path.GetFullPath(AppDomain.CurrentDomain.BaseDirectory + "/UserWord/"+model.Name+".doc");
                //重新生成一个word文档并保存
                doc.Save(path, SaveFormat.Doc);
                //定时删除下载的文档
                NeedHelp.time = new Timer(DeletWord, path, 50000, 300000);
                return path;  

二.使用vs自带的类库  Miscrosoft Word 14.0 Object Library  ,它的缺点是,当你发布网站的服务没有安装office服务是,不可以生成word文档

在生成word问当前需要我们先做好一个word模板,需要在“:”后边添加一个书签 

注意:它支持生成后缀为.docx的文件


 object oMissing = System.Reflection.Missing.Value;
                //创建一个Word应用程序实例  
                _Application oWord = new Application();
                //设置为不可见  
                oWord.Visible = false;
                //模板文件地址,这里假设在X盘根目录  
                object oTemplate = Path.GetFullPath(System.AppDomain.CurrentDomain.BaseDirectory + "/DocTemp/usertemp.docx");
                upload(oTemplate.ToString(), SignHelp.GetUserName());

                //以模板为基础生成文档  
                _Document oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing, ref oMissing, ref oMissing);
                //声明书签数组  
                object[] oBookMark = new object[15];
                //赋值书签名  
                oBookMark[0] = "name";
                oBookMark[1] = "account";
                oBookMark[2] = "password";
                oBookMark[3] = "sex";

                oBookMark[4] = "height";
                oBookMark[5] = "weight";
                oBookMark[6] = "birthday";
                oBookMark[7] = "phone";

                oBookMark[8] = "email";
                oBookMark[9] = "qqnumber";
                oBookMark[10] = "address";
                oBookMark[11] = "presentaddress";

                oBookMark[12] = "imgpath";
                oBookMark[13] = "hobby";
                oBookMark[14] = "goodat";
                //赋值任意数据到书签的位置  
                oDoc.Bookmarks.get_Item(ref oBookMark[0]).Range.Text = model.Name;
                oDoc.Bookmarks.get_Item(ref oBookMark[1]).Range.Text = model.Account;
                oDoc.Bookmarks.get_Item(ref oBookMark[2]).Range.Text = model.PassWord;
                oDoc.Bookmarks.get_Item(ref oBookMark[3]).Range.Text = model.Sex;

                oDoc.Bookmarks.get_Item(ref oBookMark[4]).Range.Text = model.Height.ToString();
                oDoc.Bookmarks.get_Item(ref oBookMark[5]).Range.Text = model.Weight.ToString();
                oDoc.Bookmarks.get_Item(ref oBookMark[6]).Range.Text = model.Birthday.ToString("yyyy-MM-dd");
                oDoc.Bookmarks.get_Item(ref oBookMark[7]).Range.Text = model.Phone;

                oDoc.Bookmarks.get_Item(ref oBookMark[8]).Range.Text = model.Email;
                oDoc.Bookmarks.get_Item(ref oBookMark[9]).Range.Text = model.QqNumber;
                oDoc.Bookmarks.get_Item(ref oBookMark[10]).Range.Text = model.Address;
                oDoc.Bookmarks.get_Item(ref oBookMark[11]).Range.Text = model.PresentAddress;

                oDoc.Bookmarks.get_Item(ref oBookMark[12]).Range.Text = model.ImgPath;
                oDoc.Bookmarks.get_Item(ref oBookMark[13]).Range.Text = model.Hobby;
                oDoc.Bookmarks.get_Item(ref oBookMark[14]).Range.Text = model.GoodAt;


                //string savePath = Server.MapPath("~/UserWord/" + model.Name + ".docx");
                string savePath = Path.GetFullPath(System.AppDomain.CurrentDomain.BaseDirectory + "/UserWord/" + model.Name + ".docx");
                object filename = savePath;

                oDoc.SaveAs(ref filename, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                ref oMissing, ref oMissing);
                oDoc.Close(ref oMissing, ref oMissing, ref oMissing);
                //关闭word  
                oWord.Quit(ref oMissing, ref oMissing, ref oMissing);
                //定时器
                NeedHelp.time = new Timer(DeletWord, model.Name, 50000, 300000);
                return savePath;  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aspose 生成word 简单的文档操作 的相关文章

  • 快速傅里叶变换(FFT)详解

    快速傅里叶变换 xff08 FFT xff09 详解 xff08 这是我第一次写博 xff0c 不喜勿喷 xff09 关于FFT已经听闻已久了 xff0c 这次终于有机会在Function2的介绍下来了解一下FFT了 快速傅里叶变换 Fas
  • 图像处理:如何理解傅里叶变换在图像处理中的应用

    声明 xff1a 这篇文章的主要目的是通过建立一维傅里叶变换与图像傅里叶变换中相关概念的对应关系来帮助读者理解图像处理中的离散傅里叶变换 xff0c 因此 xff0c 理解图像中离散傅里叶变换的前提条件是读者需要了解一维傅里叶变换的基本知识
  • 图像处理中的傅里叶变换和频率域滤波概念

    写在前面的话 作者是一名在读的硕士研究僧 xff0c 方向是机器视觉 由于视觉是一门相对复杂的学科 xff0c 作者在课堂上学到的东西只是非常浅显的内容 xff0c 我们老师说是 xff0c 领我们进了个门 现在打算利用图书馆和网络上的资源
  • 图像处理的傅里叶变换理解

    傅立叶变换在图像处理中有非常非常的作用 因为不仅傅立叶分析涉及图像处理的很多方面 xff0c 傅立叶的改进算法 xff0c 比如离散余弦变换 xff0c gabor与小波在图像处理中也有重要的分量 印象中 xff0c 傅立叶变换在图像处理以
  • 傅里叶变换分类

    傅里叶变换 傅里叶变换 xff08 Fourier transform xff09 是一种线性的积分变换 xff0c 从时间转换为频率的变化 1 1 连续傅里叶变换 这是将频率域的函数F 表示为时间域的函数f xff08 t xff09 的
  • C++实现二维离散傅里叶变换

    在上一篇文章 C 43 43 实现一维离散傅里叶变换 中 xff0c 我们介绍了一维信号傅立叶变换的公式和C 43 43 实现 xff0c 并阐述了频域幅值的意义 一维傅立叶变换只适用于一维信号 xff0c 例如音频数据 心脑电图等 在图像
  • MFC显示JPG,bmp图片

    主要代码如下 xff1a 方法说明 显示JPG和GIF BMP图片 参数说明 CDC pDC 设备环境对象 参数说明 CString strPath 要显示的图片路径 参数说明 int x 要显示的X位置 参数说明 int y 要显示的Y位
  • MFC关于JPG图片显示处理的几个方式

    做远程视频监控项目 xff0c 接触较多图片处理方面问题 xff0c 作为学习做以下记录 xff1a 一 截图默认bmp格式转jpg压缩 采用jpglib库去实现 二 jpg图片接收后MFC显示 四种方式 MFC提供的CWnd只有默认加载B
  • opencv学 之图像傅里叶变换dft

    一 前言 接触了图像的傅里叶变换 xff0c 数学原理依旧不是很懂 xff0c 因此不敢在这里妄言 下午用Opencv代码实现了这一变换 xff0c 有一些经验心得 二 关键函数解析 2 1copyMakeBorder 扩展图片尺寸 傅里叶
  • UML轻松入门之动态建模

    在UML中 xff0c 静态建模可以描述系统的组织结构 xff0c 而动态建模则可以描述系统的行为和动作 在动态建模机制中 xff0c 以消息完成对象之间的交互 xff0c 用状态图 顺序图 协作图和活动图来描述系统的行为 消息 在面向对象
  • C++实现 (FFT)一维快速傅里叶变换

    一维离散傅里叶变换的公式为 xff1a 如果直接基于该定义进行编程实现 xff0c 则算法时间复杂度为O N2 具体的编程实现我们已经在 C 43 43 实现一维离散傅里叶变换 中介绍过了 当一维信号长度达到几十万个信号时 xff0c 当前
  • 信号傅里叶变换后的实数和虚数部分理解

    傅里叶 xff08 FFT DFT 傅立叶 Fourier xff09 傅里叶变换的结果为什么含有复数 xff1f 为什么傅里叶变换的结果含有复数成份 xff1f 看了很多关于FFT的资料 xff0c 现在看到一个资料说FFT转换的结果是实
  • 从头到尾彻底理解傅里叶变换算法

    http www xuebuyuan com 2052774 html 经典算法研究系列 xff1a 十 从头到尾彻底理解傅里叶变换算法 上 作者 xff1a July dznlong 二零一一年二月二十日 推荐阅读 xff1a The S
  • 一维傅里叶变换后的复数怎样理解?

    我刚开始学傅氏变换也有这样的疑问 xff01 首先回答问题一 xff1a 为什么一个实信号经过傅氏变换后 xff0c 再反变换回来得到的是一个复数 这是由于matlab计算引起的 xff0c 你在计算傅氏反变换后引入了复数 xff0c 最后
  • 二维傅里叶变换是怎么进行的?

    1 首先回顾一下一维FT 通俗来讲 xff0c 一维傅里叶变换是将一个一维的信号分解成若干个三角波 对于一个三角波而言 xff0c 需要三个参数来确定它 xff1a 频率 幅度 A xff0c 相位 因此在频域中 xff0c 一维坐标代表频
  • 傅里叶变换和逆傅里叶变换numpy

    理论基础 时域 xff1a 以时间为横坐标 频域 xff1a 以频率的倒数为横坐标 xff0c 可以看出 xff0c 频域更加简单 相位 xff1a 与时间差有关的一个概念 傅里叶说 xff0c 任何连续周期信号 xff0c 可以由一组适当
  • 复数的物理意义

    很不错的文章 xff01 xff01 复数最直观的理解就是旋转 xff01 4 i i 61 4 就是 4 在数轴上旋转了180度 那么4 i就是旋转了90度 另外 xff0c e t是什么样呢 xff1f 但当你在指数上加上i之后呢 xf
  • 动态初始化一维数组详解

    动态初始化一维数组 1 动态初始化一维数组 xff0c 会在堆内存中分配这个数组 并且数组中每一个元素都采用默认值 byte short int long 0 float double 0 0 boolean false char u000
  • c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别

    一 原型 xff1a extern void malloc unsigned int num bytes 头文件 xff1a include lt malloc h gt 或 include lt alloc h gt 注意 xff1a a
  • 8086汇编与c++编译器就内存方面的感想

    8086汇编中可以手动分配栈内存 xff0c 没有堆内存的概念 xff0c 而c 43 43 编译器中栈是系统分配的 xff0c 堆是手动分配的

随机推荐

  • 2-NoSQL(非关系型数据库)-入门概述

    1 NoSQL是什么 xff1f NoSQL xff08 Not only SQL xff0c 不仅仅是数据库 xff09 xff0c 泛指非关系型数据库数据库 xff0c 其数据存储不需要固定的模式 xff0c 无需多余操作就可以横向扩展
  • 指针类型和指针类型转换的理解

    前几天在判断 值相同的两个指针所指向的变量的值可以不同 这句话时 xff0c 发现自己对指针类型一些概念仅仅是记住了结论 于是查阅了一些资料 xff0c 记录一下一些与指针类型和指针类型转化相关的知识 一些用到的 开始之前 xff0c 先来
  • 指针的动态初始化malloc与销毁free

    指针动态初始化 xff1a int p 61 int malloc sizeof int 3 初始化为指向3个元素的数组 if p exit 1 这个地方一定要进行判断 xff0c 因为若动态初始化不成功 xff0c 在使用p 0 p 1
  • C++ 简单实现HTTP GET/POST 请求

    HTTP 超文本传输协议 是一种客户端与服务端的传输协议 xff0c 最早用于浏览器和服务器之间的通信 xff0c 后来因为其使用灵活 方便等特点 xff0c 广泛用于客户端与服务端的通信 文章将简单介绍HTTP协议 xff0c 同时以C
  • c#的http服务器和客户端实例

    sever xff1a 业务逻辑 using System using System Collections using System IO using System Net using System Net Sockets using S
  • c++简单实现http协议服务器和客户端

    C 43 43 简单实现HTTP GET POST 请求 HTTP 超文本传输协议 是一种客户端与服务端的传输协议 xff0c 最早用于浏览器和服务器之间的通信 xff0c 后来因为其使用灵活 方便等特点 xff0c 广泛用于客户端与服务端
  • C/C++ http协议发送字段,文件,单个和多张图片

    关于c c 43 43 网络编程 xff0c 无论在linux还是windows 要说到自由性 xff0c 和安全性 xff0c socket无疑是比较好的 xff01 对于socket 因为它的传输协议只有两种tcp和udp 属于网络层
  • C# http 发送文件和接收文件的代码。

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  • 图片与Byte相互转换,文件和字节流的转换方法

    lt summary gt 文件转化成byte 数组 lt summary gt lt param name 61 34 fileName 34 gt lt param gt lt returns gt lt returns gt priv
  • C++中使用TCP传文件

    在两个文件中都定义文件头和用到的宏 xff1a define MAX SIZE 10 define ONE PAGE 4096 struct FileHead char str 260 int size 在客户端发送接收阶段 xff1a 1
  • 理解协程并搞定协程相关面试题

    一 什么是协程 协程 xff1a 实现协作式多任务 xff0c 可以在程序执行内部中断 xff0c 转而执行其他协程 比如我们编写子程序 xff08 或者说函数 xff09 xff0c 通常是利用 调用 来实现从 A 跳去 B xff0c
  • C# 对象与JSON字符串互相转换的三种方式

    JSON JavaScript Object Notation JS 对象标记 是一种轻量级的数据交换格式 关于内存对象和JSON字符串的相互转换 xff0c 在实际项目中应比较广泛 xff0c 经过一番搜索 xff0c 找到如下三种方法来
  • HTTP 协议报文解析

    本篇主要是为了记录HTTP中报文的格式 xff0c 以便针对报文进行解析 首先会介绍基础的HTTP报文 xff0c 之后会介绍 文件上传时的数据报文格式 HTTP基础报文格式 按照HTTP报文类型进行介绍 xff0c HTTP报文类型分为请
  • C++实现通过UDP传输文件

    一 程序说明 1 本程序通过 UDP 来传输文件及其管理元数据 xff08 文件名 大小和日期等 xff09 xff0c 包括client cpp和server cpp xff0c 分别是客户端程序和服务端程序 2 文件以二进制形式传输 3
  • C/C++ ini配置文件的格式及如何读写ini配置文件

    一 ini配置文件的格式 为什么要用INI文件 xff1f 如果我们程序没有任何配置文件时 xff0c 这样的程序对外是全封闭的 xff0c 一旦程序需要修改一些参数必须要修改程序代码本身并重新编译 xff0c 这样很不好 xff0c 所以
  • C# Aspose.Words 插入纵页、横页、图片

    引用Aspose Words dll 对word文档进行操作 1 插入纵页或者横页 Document doc 61 new Document tempFile DocumentBuilder builder 61 new DocumentB
  • C#操作Word Aspose.Words组件介绍及使用 基本介绍与DOM概述

    1 基本介绍 Aspose Words是一个商业 NET类库 xff0c 可以使得应用程序处理大量的文件任务 Aspose Words支持Doc xff0c Docx xff0c RTF xff0c HTML xff0c OpenDocum
  • C# Aspose.Word 操作word文档(利用模板)

    上一篇我们介绍了用书签的方式来填充word中数据 xff0c 今天介绍第二种方法操作word xff01 依旧是先自己建好word模板 xff0c 然后这里就不需要插入书签了 1 建立模板 能看到红色标示的区域依旧用到了书签 xff0c 没
  • C#使用Aspose.Words操作word文档(利用模板2)

    最近接到个需求 xff0c 由于客服这边要导出大量有一定规则的word文件 xff0c 里面的内容希望系统自动填充 xff0c 例如 这里我使用Aspose Words dll这个类库 xff0c 1 首先 xff0c 我们需要创建模板文件
  • aspose 生成word 简单的文档操作

    1 使用Aspose Words 插件 这个插件的好处是 xff0c 发布网站的服务不需要安装office xff0c 也可以进行数据生成word文档 在生成word问当前需要我们先做好一个word模板 xff0c 需要在 xff1a 后边