Aspose.Words导出dt到word的问题

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

已解决:单挑数据导入到一个Word文档,导出文字和图片成功,执行Main();方法导出dt到word

待解决:多条数据(文字,图片的导入到一个word文档里面)从dt导入到word;已发现的错误提示“已添加了具有相同键的项”

所用dll库下载地址:aspose.Words 和模板文件2.docx

以下为完整代码。执行Main()即可导出。

PRivatevoidMain()

{vardic =newDictionary<string,string>();

Document doc=newDocument(Server.MapPath(@"2.doc"));//模板文件路径stringStrID = 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 =newDocument(Server.MapPath(@"2.doc"));foreach(varkeyindic.Keys)

{if(key !="图片")

{varrepStr =string.Format("&{0}&", key);

doc.Range.Replace(repStr, dic[key],false,false);

}else{

Regex reg=newRegex("&图片&");

doc.Range.Replace(reg,newReplaceAndInsertImage(Server.MapPath(@"/UploadFiles/Images/") + dt.Rows[i]["art_img"].ToString()),false);

}

}//}//}

//以上4行注释的为for循环(结束)

doc.Save(Server.MapPath(@"2ks.doc"));//保存导出的文件 Response.End(); }

//插入图片的一个方法publicclassReplaceAndInsertImage : IReplacingCallback

{///<summary>///需要插入的图片路径///</summary>publicstringurl {get;set; }publicReplaceAndInsertImage(stringurl)

{this.url =url;

}publicReplaceAction Replacing(ReplacingArgs e)

{//获取当前节点varnode =e.MatchNode;//获取当前文档Document doc = node.DocumentasDocument;

DocumentBuilder builder=newDocumentBuilder(doc);//将光标移动到指定节点builder.MoveTo(node);//插入图片builder.InsertImage(url);returnReplaceAction.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();

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航