今天研究一天的导出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 替换指定键值数据的更多相关文章

  1. NodeMCU使用ArduinoJson判断指定键值对存在与否

    NodeMCU使用ArduinoJson判断指定键值对存在与否 从ArduinoJson库中可以得知,判断键值对是否存在可以使用containskey()函数,但是查看ArduinoJson-cont ...

  2. c# 键值数据保存XML文件

    /// <summary> /// 键值数据保存XML文件 /// </summary> /// <param name="fileName"> ...

  3. 探索etcd,Zookeeper和Consul一致键值数据存储的性能

    这篇博文是探索三个分布式.一致性键值数据存储软件性能的系列文章中的第一篇:etcd.Zookeeper和Consul,由etcd团队所写,可以让我们全面地了解如何评估三个分布式一致存储软件的性能.翻译 ...

  4. c#对Aspose.Word替换书签内容的简单封装

    辅助类1  json和datatable互转:   using System; using System.Collections.Generic; using System.Linq; using S ...

  5. JavaScript获取Django模板中指定键值的数据,使用过滤器

    Django中利用js来操作数据的常规操作一般为点(.)操作符来获取字典或列表的数据,一般如{{data.0}},{{data.arg}} 但有时如果数据是嵌套类型的数据时,直接获取某个值就变得困难了 ...

  6. php对数组中指定键值排序

    function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k= ...

  7. PHP 二维数组排序 可以按指定 键值排序

    <?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', ...

  8. windows Driver 查询指定键值

    NTSTATUS status; HANDLE hKey = NULL; OBJECT_ATTRIBUTES oa; UNICODE_STRING strPath = RTL_CONSTANT_STR ...

  9. Android - 数据存储 -存储键值对

    如果你有少量的键值数据需要存储,可以使用SharedPreferencesAPI.SharedPreferences对象指向一个包含键值对的文件并且提供了一些简单的方法来读取它们.每个SharedPr ...

随机推荐

  1. 如何实现一个php框架系列文章【6】mysql数据库

    实现一个mysql数据库封装需要考虑的问题 使用方便性 采用直接sql语句操作方式.只要会写sql语句,那么将没有其他学习成本. uctphp框架提供的dba辅助封装类,用会之后将爱不释手. 使用前需 ...

  2. 项目编码规范(Ali)

    一.研发流程规范 二.SQL编码规范 数据库命名规范:数据库名一律小写,必须以字母开头.库名包含多个单词的,以下划线“_”分隔.如果采用分库方案,分库编号从“0”开始,用“0”左补齐为四位. 表名规范 ...

  3. atitit.http原理与概论attilax总结

    atitit.http原理与概论attilax总结 1. 图解HTTP 作者:[日]上野宣 著1 2. HTTP权威指南(国内首本HTTP及其相关核心Web技术权威著作)1 3. TCP/IP详解(中 ...

  4. Atitit.http httpclient实践java c# .net php attilax总结

    Atitit.http httpclient实践java c# .net php attilax总结 1. Navtree>> net .http1 2. Httpclient理论1 2. ...

  5. Google C++单元测试框架GoogleTest---AdvancedGuide(译文)下

    因为AdvancedGuide文档太长,分上下两部分,本文档接googletest--AdvancedGuide(译文)上:Google C++单元测试框架GoogleTest---AdvancedG ...

  6. mac终端命令

    目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...

  7. chrome浏览器限制的端口

    1,    // tcpmux 7,    // echo 9,    // discard 11,   // systat 13,   // daytime 15,   // netstat 17, ...

  8. js内存泄露的几种情况详细探讨

    内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束.在C++中,因为是手动管理内存,内存泄露是经常出现的事情.而现在流行的C#和Java等语言采用了自动垃圾回收方法管理内存,正常使 ...

  9. Python导入其他文件中的.py文件 即模块

    import sys sys.path.append("路径") import .py文件

  10. SQL语句中的where 1=1 和0=1

    摘自:http://blog.sina.com.cn/s/blog_afe616ab0101camd.html SQL where 1=1 和0=1的作用 where 1=1; 这个条件始终为True ...