【原】asp.net导出word,结果导出aspx页面文件的问题

来源:互联网 发布:电极编程招聘 编辑:程序博客网 时间:2024/05/22 15:45
在将页面内容导出到word文件中时,我出现了两个问题。一个至今还没有解决,就是将文件导出之后打开,要先选择内容的编码才能查看内容,不知道是什么原因。第二个问题就是从一个页面跳转过来之后导出的不是doc文件,而是页面文件。关于这个问题,我上网搜索了很多,也改了很多地方,比如导出方式,都没有解决。可能我这种情况比较特殊吧,不过也要拿出来与同学们分享,万一有人遇到了呢~
下面我就详细说一下。

要导出的页面代码大概是:
if (Request.QueryString["PGFlag"] == null)
{
ID = Session["pepid"].ToString();
}
else
{
ID = Request.QueryString["PGFlag"].ToString();
}
也就如果从前一个页面跳转过来的,即传过来的页面参数不为空,则ID为这个参数的内容;如果不是从前一个页面跳过来的,则ID从Session中取得。然后将ID对应的数据库中的内容显示到页面上,然后导出。具体导出的代码就不贴了,毕竟到了这个地步,导出已经不是问题了,说重点。

来看看前一个页面的跳转代码:
int rowIndex = Convert.ToInt32(e.CommandArgument);
String ID = GridView1.DataKeys[rowIndex].Value.ToString();
Response.Redirect("~/USL/TeachingManagement/ViewPGInfo.aspx?PGFlag="+ID);

结果出现了什么问题呢?如果不是跳转过来的,即直接接受Session["pepid"]值,则能直接导出doc文件;但是如果从前一个页面跳转过来,则导出的是aspx的页面文件。我修改了很多地方,都没有解决,最后发现是因为跳转页面传递参数的问题。如果究其本质原因我是说不出来的~

如何解决呢?那就用Session传值吧!
前一个页面的跳转代码:
int rowIndex = Convert.ToInt32(e.CommandArgument);
String ID = GridView1.DataKeys[rowIndex].Value.ToString();
Session["PGFlag"] = ID;
Response.Redirect("~/USL/TeachingManagement/ViewPGInfo.aspx");

导出页面的代码:
if (Session["PGFlag"] == null)
{
ID = Session["pepid"].ToString();
}
else
{
ID = Session["PGFlag"].ToString();
}
可能用Session效率低了一点,但是暂时能够解决我的问题。第一次在CSDN上发表博客,主题比较偏,但是我仍旧能够希望和同学们分享我遇到的问题。开始说的编码问题,如果有人解决,麻烦告诉我一下~还有,关于这个问题,如果同学们有好的解决方法也希望拿出来分享一下。谢谢大家!
【源自CSDN】