求助求助。导出execl文件进度条的问题。

lzx0524 2010-10-20 04:17:57
我要导出一个比较大的文件,由于等待的时间比较长,可能会出现假死的情况,现在想请大家提供2种方法,一种是实时进度条,一种是假的进度条。
文件结构如下:
Default2.aspx页面: <a href="ExportAddressBook.aspx?type=S" target="_blank" style="border:0" >导出通讯录</a>
点击本页面的这个超链接将弹出页面ExportAddressBook.aspx
ExportAddressBook.aspx页面源代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ExportAddressBook.aspx.cs" Inherits="ExportAddressBook" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server" >
<div >
<ext:ScriptManager ID="ScriptManager1" runat="server">
</ext:ScriptManager>
<%-- <div id="loading" >
<img alt="我是" src="images/loading.gif" />
</div>--%>
</div>
</form>
</body>
</html>
ExportAddressBook.aspx.cs源代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string type = "";
if (Request.QueryString["type"] != null)
{
type = Request.QueryString["type"].ToString();
}
if (type == "S")
{
DataSet ds = new DataSet();
ds = dp(); //这个是dataset
if (ds.Tables[0].Rows.Count > 0)
{
DataSet2Excel(ds); //这个是导出数据用的。
}
}

}
}

在导出数据中使用的是下面的方法:
string fileURL = string.Empty;
//调用方法将文件写入服务器,并获取全部路径

fileURL = DataView2ExcelBySheet(dv1, dv2, dv3, dv4, dv5, dv6, fileName, maxRow);
//获取路径后从服务器下载文件至本地

HttpContext curContext = System.Web.HttpContext.Current;
curContext.Response.Clear();
curContext.Response.ContentType = "application/vnd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.Default;
//curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
//curContext.Response.AppendHeader("Content-Disposition", ("attachment;filename=" + fileName));
curContext.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.Charset = "gb2312";

curContext.Response.WriteFile(fileURL);
curContext.Response.Flush();
curContext.Response.End();

我需要的是在做pageload事件前面加入一个加一个进度条。大家有什么好的解决方案。
...全文
347 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuezi1988 2012-04-24
  • 打赏
  • 举报
回复
怎么判断导出成功,js怎么捕获导出成功的事件
z289830131 2010-10-21
  • 打赏
  • 举报
回复
进度条都是假的... 只要判断已成功 进度条执行完毕
lzx0524 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]

弹出iframe或DIV显示图片,导出成功隐藏
[/Quote]
问题暂时解决。我是弹出一个iframe来显示一张图片。在iframe内做导出。
josxhn 2010-10-21
  • 打赏
  • 举报
回复
我也想知道,记号,帮顶
wuyq11 2010-10-20
  • 打赏
  • 举报
回复
弹出iframe或DIV显示图片,导出成功隐藏
lzx0524 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yewuqing007 的回复:]

用个图片做假的进度条省空间
[/Quote]
回复:是可以用图片显示,我图片已经有了,但是在导出的时候由于要pageload后才显示页面,要是在pageload中添加类似下面的代码
Response.Write("<div id='loading' ><img src='images/loading.gif'></div>");
Response.Flush();
会报错。不能在网页错误提示:服务器无法在发送HTTP标头之后清除标头。
而要是放在页面的话却不能显示。感觉很头痛。
devin_jia 2010-10-20
  • 打赏
  • 举报
回复
用个图片做假的进度条省空间

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧