Aspose.Words导出dt到word的问题
2018-06-17 20:06:54来源:未知 阅读 ()
已解决:单挑数据导入到一个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[0]; //if (dt.Rows.Count > 0) //{ // for (int i = 0; i < dt.Rows.Count; i++) // {
//以上4行注释的为for循环(开始)
dic.Add("标题", dt.Rows[0]["art_title"].ToString()); //“已添加了具有相同键的项”开始的第一行,浏览器所指位置 dic.Add("日期", dt.Rows[0]["art_pubdate"].ToString()); dic.Add("图片", Server.MapPath(@"/UploadFiles/Images/") + dt.Rows[0]["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(); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Navicat批量导出mysql的DDL语句 2019-07-24
- linux下导入导出mysql数据库命令 2018-07-13
- 在SQL Server中将数据导出为XML和Json 2018-07-13
- mysql数据库备份与导入 2018-07-12
- mysql数据库的导入导出命令 2018-06-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash