C# Aspose word 替换指定键值数据
今天研究一天的导出word,一开始准备选用为软件自带的office,但是有局限性,机子上必须安装office才能使用,最后在网上搜了一下资料aspose开源的
小公司没得钱,你懂得。最后选择了这款 开源地址:http://www.oschina.net/p/aspose-words/similar_projects?lang=25&sort=time
在网上找了一个例子是webform的,而现在使用的是mvc来开发,解决这个aspose在mvc中如何使用费劲了功夫。下面我写一下项目中如何使用到的。
项目需要导出数据到word中,因为要导出的是表格形式,所以先在word中绘制好了表格,然后按照以前的代码改了改,发现不行。出现的问题如下:
这是当时的代码,问题的症结所在就是Response上。这段代码以前是写在asp.NET中的。在asp.Net中,Response使用的是HttpResponse,但是该项目为Mvc架构,Mvc中为HttpResponseBase,二者不能兼容,不能强制转换。问题一直无法得到解决。
所以就改变了代码:如下。
public ActionResult Index()
{
string tmppath = Server.MapPath("~/2.doc");
Document doc = new Document(tmppath); //载入模板 Dictionary<string, string> dictionnary = new Dictionary<string, string>();
dictionnary.Add("姓名", "杨幂");
dictionnary.Add("学历", "本科");
dictionnary.Add("联系方式", "");
dictionnary.Add("邮箱", "123213@qq.com");
dictionnary.Add("内容", "上去就是干"); foreach (var item in dictionnary)
{
var key = string.Format("&{0}&", item.Key); //doc.Range.Replace() doc.Range.Replace(key, item.Value, new FindReplaceOptions())
// doc.MailMerge.Execute(key, item.Value,false,false); //此函数已被标记弃用
}
//if (doc.Range.Bookmarks["Name"] != null)
//{
// Bookmark mark = doc.Range.Bookmarks["name"];
// mark.Text = aModel.Name;
//} var docStream = new MemoryStream();
doc.Save(docStream, SaveFormat.Doc);
//doc.Save(docStream, SaveOptions.CreateSaveOptions(SaveFormat.Doc));
return File(docStream.ToArray(), "application/msword", "Template.doc");
}
这样问题就迎刃而解,导出在word绘制好表格,对需要插入的数据的地方标记,后台直接插入代码即可,还有一种方式是针对书签但是一般不推荐,太麻烦
以下是案例方式截图
例如:&姓名&-周杰伦 此格式去替换,可由自己定义规则

C# Aspose word 替换指定键值数据的更多相关文章
- NodeMCU使用ArduinoJson判断指定键值对存在与否
NodeMCU使用ArduinoJson判断指定键值对存在与否 从ArduinoJson库中可以得知,判断键值对是否存在可以使用containskey()函数,但是查看ArduinoJson-cont ...
- c# 键值数据保存XML文件
/// <summary> /// 键值数据保存XML文件 /// </summary> /// <param name="fileName"> ...
- 探索etcd,Zookeeper和Consul一致键值数据存储的性能
这篇博文是探索三个分布式.一致性键值数据存储软件性能的系列文章中的第一篇:etcd.Zookeeper和Consul,由etcd团队所写,可以让我们全面地了解如何评估三个分布式一致存储软件的性能.翻译 ...
- c#对Aspose.Word替换书签内容的简单封装
辅助类1 json和datatable互转: using System; using System.Collections.Generic; using System.Linq; using S ...
- JavaScript获取Django模板中指定键值的数据,使用过滤器
Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{data.0}},{{data.arg}} 但有时如果数据是嵌套类型的数据时,直接获取某个值就变得困难了 ...
- php对数组中指定键值排序
function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k= ...
- PHP 二维数组排序 可以按指定 键值排序
<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', ...
- windows Driver 查询指定键值
NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONSTANT_STR ...
- Android - 数据存储 -存储键值对
如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...
随机推荐
- php:ci学习笔记1
ci下载的开发包: phpstudy的部署: phpstudy的根目录是:D:\WWW 新建目录 cms 把ci开发包的application system index.php lic ...
- Eclipse中使用Gradle构建Java Web项目
Gradle是一种自动化建构工具,使用DSL来声明项目设置.通过Gradle,可以对项目的依赖进行配置,并且自动下载所依赖的文件,使得构建项目的效率大大提高. 1. 安装Gradle 下载Gradle ...
- python学习笔记(基础二:注释、用户输入、格式化输出)
注释 单行:# 多行:上下各用3个连续单引号或双引号 3个引号除了多行注释,还可以打印多行 举例: msg = ''' name = "Alex Li" name2 = name ...
- 项目编码规范(Ali)
一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...
- Java web.xml 配置详解
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...
- 前端css框架SASS使用教程(转)
一.什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常的一 ...
- 移动端图片随手势移动react组件(附移动开发小tips)
这个效果是公司产品中一个用到的效果,用于展示项目的信息,废话少说,先上效果图,代码在最后:),这个组件是在上篇博客中用webpack搭建的环境中完成的http://www.cnblogs.com/wu ...
- 八皇后算法的另一种实现(c#版本)
八皇后: 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于 ...
- 在 CentOS7 上部署 MySQL 主从
在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...
- hexo+next博客添加搜索
1.为什么添加algolia搜索 第一当然是可以方便的查找所需文章,第二点就是之前常用的swiftype插件不再免费.我的个人博客是这个月初搭建完成的,这时候swiftype已经不再免费,而且只开放企 ...