Aspose.Words导出dt到word的问题
已解决:单挑数据导入到一个word文档,导出文字和图片成功,执行Main();方法导出dt到word
待解决:多条数据(文字,图片的导入到一个word文档里面)从dt导入到word;已发现的错误提示“已添加了具有相同键的项”
所用dll库下载地址:Aspose.Words 和模板文件2.docx
以下为完整代码。执行Main()即可导出。
private void Main()
{
var dic = new Dictionary<string, string>();
Document doc = new Document(Server.MapPath(@"2.doc"));//模板文件路径
string StrID = Request.Form["YX_CH"];//这里是获取前台GridView项目的值,穿给下面的dt作为查询条件之一,另外的nodeid是节点编号
if (StrID == null)
{
WebMsgBox.Show("您还未选择任何数据!");
}
DataTable dt = bArticle.GetList(" nodeid='" + Request.QueryString["nodeid"] + "' and ArticleID in (" + StrID + ")").Tables[];
//if (dt.Rows.Count > 0)
//{
// for (int i = 0; i < dt.Rows.Count; i++)
// {
//以上4行注释的为for循环(开始)
dic.Add("标题", dt.Rows[]["art_title"].ToString()); //“已添加了具有相同键的项”开始的第一行,浏览器所指位置
dic.Add("日期", dt.Rows[]["art_pubdate"].ToString());
dic.Add("图片", Server.MapPath(@"/UploadFiles/Images/") + dt.Rows[]["art_img"].ToString()); //使用特殊字符串替换
doc = new Document(Server.MapPath(@"2.doc"));
foreach (var key in dic.Keys)
{
if (key != "图片")
{
var repStr = string.Format("&{0}&", key);
doc.Range.Replace(repStr, dic[key], false, false);
}
else
{
Regex reg = new Regex("&图片&");
doc.Range.Replace(reg, new ReplaceAndInsertImage(Server.MapPath(@"/UploadFiles/Images/") + dt.Rows[i]["art_img"].ToString()), false);
}
} // }
//}
//以上4行注释的为for循环(结束)
doc.Save(Server.MapPath(@"2ks.doc"));//保存导出的文件 Response.End(); }
//插入图片的一个方法
public class ReplaceAndInsertImage : IReplacingCallback
{
/// <summary>
/// 需要插入的图片路径
/// </summary>
public string url { get; set; } public ReplaceAndInsertImage(string url)
{
this.url = url;
} public ReplaceAction Replacing(ReplacingArgs e)
{
//获取当前节点
var node = e.MatchNode;
//获取当前文档
Document doc = node.Document as Document;
DocumentBuilder builder = new DocumentBuilder(doc);
//将光标移动到指定节点
builder.MoveTo(node);
//插入图片
builder.InsertImage(url);
return ReplaceAction.Replace;
}
}
精简以后的Main方法,但是还只是输出一条数据。
private void Main()
{
Document doc = new Document(Server.MapPath(@"2.doc"));
DataTable dt = bArticle.GetList(" nodeid='4'").Tables[0];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
doc.Range.Replace("&标题&", dt.Rows[2]["art_title"].ToString(), false, false);
doc.Range.Replace("&日期&", dt.Rows[i]["art_pubdate"].ToString(), false, false);
Regex reg = new Regex("&图片&");
doc.Range.Replace(reg, new ReplaceAndInsertImage(Server.MapPath(@"/UploadFiles/Images/") + dt.Rows[i]["art_img"].ToString()), false);
}
doc.Save(Server.MapPath(@"2ks.doc"));
Response.End();
}
}
Aspose.Words导出dt到word的问题的更多相关文章
- Aspose.Cells导出Excel(1)
利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...
- 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录
使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...
- Aspose 强大的服务器端 excel word ppt pdf 处理工具
Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx
- 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实.现在就想设计一个共通的功能来实现这个导出. 需求分析 在开始之前我们先要明白我们要实现怎样一个 ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等) 前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实 ...
- RDLC - 后台代码直接导出Excel/PDF/Word格式
最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...
- c#通过datatable导出excel和word
/// <summary> /// 导出datatable到word /// </summary> /// <param name="dg">需 ...
- C#导出数据—使用Word模板
前言 本文主要介绍C#使用标签替换的方法导出数据,导出的数据模板使用Word文档. 模板建立 首先创建一个Word文档,然后建立一个基础模板.然后将上方菜单切换到插入菜单. 然后在想填充数据的地方添加 ...
随机推荐
- MySQL 行子查询
MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...
- C++ 性能剖析 (二):值语义 (value semantics)
Value Semantics (值语义) 是C++的一个有趣的话题. 什么是值语义? 简单的说,所有的原始变量(primitive variables)都具有value semantics. 也可以 ...
- 3.2 GUN as汇编(本文内容大部分引用原文,非原创)
as86汇编仅仅用于编译内核中的boot/bootsect.s引导扇区程序和实模式下的设置程序boot/setup.s.内核中其余所有汇编语言程序(包括C语言产生的汇编程序)均使用gas来编译,并与C ...
- C#中串口与Modem的通信
C#中串口与Modem的通信 2007-08-20 09:52643人阅读评论(8)收藏举报 最近一段时间,试验了串口的数据传输.在C#中,其实有一个很好的类SerialPort使串口间的通信变得简单 ...
- JQuery+Js 获取浏览器高度和宽度
JQuery-------做手机Web开发做浏览器兼容用到了,所以在网上找了些汇总下. alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(docum ...
- python 的文件操作。
20.文件操作: 1.打开文件: f = open('db','r') 只读 ; f = open('db','w') 只写 ...
- 在centos服务器上配置gitlab钩子引发的一系列问题
为了给公司的服务器上搭建gitlab环境并且配置钩子(实现在本地git push之后服务器自动git pull),整了好久,最后终于把问题解决了,下面是记录安装gitlab之后引发的一系列问题: 首先 ...
- Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting的区别
引自http://blog.csdn.net/xianlingmao/article/details/7712217 Jackknife,Bootstraping, bagging, boosting ...
- 如何升级nodejs版本
直接下载最新版安装即可,例如我本地的nodejs版本为: y@y:untitled$ node -v v0.10.33 当前node官网最新版本为:Current Version: v0.12.2 下 ...
- 功能:使用QQ号登陆,并加上微信和短信提醒,是否增量备份可选,阿里大鱼短信发送开发与测试,聚合数据(用JSON发短信,比较清楚)
微博就可以,所以其它软件也可以http://desktop.weibo.com/ http://blog.csdn.net/jueblog/article/details/14497181http:/ ...