导出Excel文件时友好提示的难题!!!

wwwafa9 2010-10-18 01:14:49
现在需要导出一个Excel文件,但是数据量有些大,想显示一个进度条以改善用户体验。

但是,导出后提示下载的时候,进度条不能隐藏掉!

各位有什么良策?热烈欢迎指导与提供建议!
...全文
611 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
乱世狂刀 2010-11-28
  • 打赏
  • 举报
回复
再顶,,,
乱世狂刀 2010-11-28
  • 打赏
  • 举报
回复
层 是个万能页哈
wwwafa9 2010-10-20
  • 打赏
  • 举报
回复
期待高手出现!
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
各位高手进来看看吧!非常急啊!
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 hanqing_liu 的回复:]
你前台是调的后台方法

//后台方法
public string Export()
{
txtAA.text.trim();
后台方法是可以获得前台的服务器控件的啊 大哥
}
[/Quote]

Ajax怎么使用?不明白啊。
mark620 2010-10-19
  • 打赏
  • 举报
回复
那就使用jQuery里面风装好的fileupload组件吧。
hanqing_liu 2010-10-19
  • 打赏
  • 举报
回复


你前台是调的后台方法

//后台方法
public string Export()
{
txtAA.text.trim();
后台方法是可以获得前台的服务器控件的啊 大哥
}
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hanqing_liu 的回复:]

document.getElementById('divoutSFCCExport').style.display='none';
if(e.result!='')
{
window.navigate(e.result);
……
[/Quote]

如果有很多查询条件(如:文本框、下拉列表等),那些查询条件的值能不能取到?很少做Ajax方面的东西。
hanqing_liu 2010-10-19
  • 打赏
  • 举报
回复
document.getElementById('divoutSFCCExport').style.display='none';
if(e.result!='')
{
window.navigate(e.result);
}

我这可是都会提示的
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hanqing_liu 的回复:]

就是按钮 用

function aa()
{
ajax调后台导出方法

}

<input type="button" onclick=‘aa()’ />

后台方法返回 文件的路径
前台js接收路径
js打开文件
[/Quote]

使用该方法是不是不会提示下载?如果第一次提示下载的时候,点击了【打开】,以后就总是直接打开文件,而不提示下载了。
daifangci 2010-10-19
  • 打赏
  • 举报
回复
根据数据行数和运行速度做个大概的预测,用js做个前提的进度条,后台执行创建代码,一次一次的测试,把速度和进度条更优化,我想的是个蒙骗手段,但是也能得到一个大概的时间啦,找到最佳方法记得反馈给我哈,学习……
 public void CreateExcel(DataSet ds, string typeid, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
string colHeaders = "", ls_item = "";
int i = 0;

//定义表对象与行对像,同时用DataSet对其值进行初始化
DataTable dt = ds.Tables[0];
DataRow[] myRow = dt.Select("");
// typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件
if (typeid == "1")
{
//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < dt.Columns.Count - 1; i++)
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0; i < row.Table.Columns.Count - 1; i++)
ls_item += row[i].ToString() + "\t";
ls_item += row[i].ToString() + "\n";
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
resp.Write(ls_item);
ls_item = "";
}
}
else
{
if (typeid == "2")
{
//从DataSet中直接导出XML数据并且写到HTTP输出流中
resp.Write(ds.GetXml());
}
}
//写缓冲区中的数据到HTTP头文件中
resp.End();


}
hanqing_liu 2010-10-19
  • 打赏
  • 举报
回复
就是按钮 用

function aa()
{
ajax调后台导出方法

}

<input type="button" onclick=‘aa()’ />

后台方法返回 文件的路径
前台js接收路径
js打开文件
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hanqing_liu 的回复:]

你将导出按钮做成异步的
但点击按钮时让 进度条显示
异步执行完毕 隐藏进度条
[/Quote]

能不能说清楚一些。非常感谢!
hanqing_liu 2010-10-19
  • 打赏
  • 举报
回复
updatepanel 会和respose 冲突
所已在后台用
Response.Redirect(strDownFileName, false)
打开会出问题 进度条隐藏 不了

我是用上面的方法解决的

你可以调用js打开文件
hanqing_liu 2010-10-19
  • 打赏
  • 举报
回复
你将导出按钮做成异步的
但点击按钮时让 进度条显示
异步执行完毕 隐藏进度条

wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
高手们快点支招啊!
dengjingjian628 2010-10-19
  • 打赏
  • 举报
回复
wwwafa9 2010-10-19
  • 打赏
  • 举报
回复
请各位帮帮忙吧!
  • 打赏
  • 举报
回复
提示 保存 或者下载那 是系统自带的操作, 如何控制啊。 当我点保存的时候, 出现请等待操作. 我觉得除非你能JS捕捉到windows 那个提示框的操作, 点保存或者打开时出现进度条,当输出结束后 关闭进度条
kaixinsjay 2010-10-18
  • 打赏
  • 举报
回复
顶一下 我也在找这样的方法~! 程序执行到 Response.End(); 这个的时候 就不会向服务器回发了。
加载更多回复(4)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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