首页 技术 正文
技术 2022年11月18日
0 收藏 409 点赞 4,181 浏览 2232 个字

已解决:单挑数据导入到一个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();
}
}

  

下一篇: 网络NSURLSession
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,022
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,513
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,359
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,142
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,773
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,851