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文档,然后建立一个基础模板.然后将上方菜单切换到插入菜单. 然后在想填充数据的地方添加 ...
随机推荐
- Objective-C 笔记一(HelloWorld)
作为一个果粉And程序员,奔着对OC浓厚的兴趣,开始学习IOS.并以后也想从事IOS开发工作.并将自己的学习记录下来,俗话说的好,不会总结的程序猿,不是好程序员! Xcode可以在AppStore里下 ...
- JSP中取COOKIE中指定值得方法【转载】
Cookie cookies[]=request.getCookies(); //读出用户硬盘上的Cookie,并将所有的Cookie放到一个cookie对象数组里面 Cookie sCookie=n ...
- javascript 关于闭包的知识点
javascript 关于闭包的认识 概念:闭包(closure)是函数对象与变量作用域链在某种形式上的关联,是一种对变量的获取机制. 所以要大致搞清三个东西:函数对象(function object ...
- win64安装及配置apache+php+mysql
Windows是64位Win7,所以Apache.PHP和Mysql都选用的64位版本(最好是统一64位). Apache:httpd-2.4.7-win64.zip PHP:PHP-5.4.6-Wi ...
- STM32的RTC万年历显示问题
博客整理后写出来的,有点乱,大家见谅! 想让串口输出万年历效果.每次秒刷新一次 结果是串口软件一直输出,看起来很难受 先讲一讲C代码的\r和\n的区别 \r 就是return 回到 本行 行首 这就会 ...
- 【原创】CLEVO P157SM外接鼠标键盘失灵解决:更换硅脂(附带最新跑分数据)
作者批注:本文允许转载,并且希望给搜索未来人类.蓝天.CLEVO.更换硅脂或者任何有关关键字的朋友提供帮助. 原文地址:http://www.cnblogs.com/c4isr/p/3514140.h ...
- 转:VC中WORD,DWORD,unsigned long,unsigned short的区别(转)
typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE; ...
- hdu 4541 Ten Googol
http://acm.hdu.edu.cn/showproblem.php?pid=4541 打表找规律 #include <cstdio> #include <cstring> ...
- 检测鼠标键盘多久没有活动(使用GetLastInputInfo API函数检测)
DELPHI代码 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...
- QComboBox调用clear函数崩溃的问题
项目有个需求是这样的: QComboBox需要动态清楚添加Item列表,并且之前设置了QComboBox当前index改变的信号,一旦这个clear调用,当前index就改变,因为一旦改变,信号就发出 ...