已解决:单挑数据导入到一个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的问题的更多相关文章

  1. Aspose.Cells导出Excel(1)

    利用Aspose.Cells导出excel 注意的问题 1.DataTable的处理 2.进行编码,便于中文名文件下载 3.别忘了Aspose.Cells.dll(可以自己在网上搜索) public ...

  2. 使用FreePic2Pdf导出书签至Word建立层级目录——快速初始化Word笔记本目录

    使用FreePic2Pdf导出书签至Word建立层级目录 --快速初始化Word笔记本目录 文:安徽师范大学2014级计算机科学与技术 王昊 (Get Contact:441301158@qq.com ...

  3. Aspose 强大的服务器端 excel word ppt pdf 处理工具

    Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx

  4. 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)

    前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实.现在就想设计一个共通的功能来实现这个导出. 需求分析 在开始之前我们先要明白我们要实现怎样一个 ...

  5. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  6. web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)

    web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等) 前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实 ...

  7. RDLC - 后台代码直接导出Excel/PDF/Word格式

    最近做报表功能,用到了.net的报表组件rdlc. 其中有个功能就是后台代码直接输出Excel/PDF/Word格式的文件,网上看了些资源,做个总结: 参考地址 我直接贴出代码: //自动导出exce ...

  8. c#通过datatable导出excel和word

    /// <summary> /// 导出datatable到word /// </summary> /// <param name="dg">需 ...

  9. C#导出数据—使用Word模板

    前言 本文主要介绍C#使用标签替换的方法导出数据,导出的数据模板使用Word文档. 模板建立 首先创建一个Word文档,然后建立一个基础模板.然后将上方菜单切换到插入菜单. 然后在想填充数据的地方添加 ...

随机推荐

  1. Java中如何判断当前环境是大端字节顺序还是小端字节顺序

    Java非字节类型的基本类型,除了布尔型都是由组合在一起的几个字节组成的.这些数据类 型及其大小总结在表 2-1 中. 表:基本数据类型及其大小 数据类型 大小(以字节表示) Byte 1 Char ...

  2. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  3. javascript 正则匹配手机号码

      <form class="form-horizontal" name="mobileform" style="padding:10px;&q ...

  4. 【学习笔记】【oc】copy与mutableCopy

    copy 返回一个不可变的对象: mutableCopy 返回一个可变的对象: 使用copy方法时 类必须实现:<NSCopying>协议中的-(id)copyWithZone:(NSZo ...

  5. git操作的各种命令整理

    1.常用的Git命令   命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git ann ...

  6. mobile优化

    原文: http://queue.acm.org/detail.cfm?id=2510122 译文: http://www.w3cfuns.com/forum.php?mod=viewthread&a ...

  7. Linux标准输入、输出和错误和文件重定向(转) --- good

    标准输入.输出和错误 当我们在shell中执行命令的时候,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名.下面就是这些文 ...

  8. opencv 图像仿射变换 计算仿射变换后对应特征点的新坐标 图像旋转、缩放、平移

    常常需要最图像进行仿射变换,仿射变换后,我们可能需要将原来图像中的特征点坐标进行重新计算,获得原来图像中例如眼睛瞳孔坐标的新的位置,用于在新得到图像中继续利用瞳孔位置坐标. 仿射变换在:http:// ...

  9. python通过代理刷网页点击量

    python通过代理刷网页点击量 更新异常处理情况 @time 2013-0803 更新循环里计数问题和随机等待时间问题 #!/usr/bin/python #-*- coding:utf-8 -*- ...

  10. [LeetCode] 55. Jump Game 解题思路

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...