asp.net datagrid导出到excel c#问题
我有经典的asp.net网站。我有一个数据网格,我想导出为excel工作表。该站点使用windows身份验证 我拿起电话寻求解决办法。以下是我在FF和Chrome中的体验,需要帮助来纠正它:asp.net datagrid导出到excel c#问题,c#,asp.net,excel,datagrid,C#,Asp.net,Excel,Datagrid,我有经典的asp.net网站。我有一个数据网格,我想导出为excel工作表。该站点使用windows身份验证 我拿起电话寻求解决办法。以下是我在FF和Chrome中的体验,需要帮助来纠正它: 有时,文件下载不会出现任何问题,但如果我让窗口保持不活动状态一分钟左右,然后重试,则我会发现页面未找到问题,或者浏览器会继续要求登录(有点陷入循环) 有些时候,当点击导出按钮时,FF会继续显示windows登录弹出窗口,就像它陷入了一个循环 按钮: <asp:Button ID="cmdExportD
<asp:Button ID="cmdExportDataGridToExcel_Click" runat="server" OnClick="cmdExportToExcel_Click" CssClass="StandardText" Text="Export to Excel" Width="120px" Height="33px"></asp:Button>
更新1
我通过将数据放入会话中,然后从会话中创建excel来测试它。这也会导致同样的错误
var dv = (DataView) Session["ScheduledOrdersReport"];
Response.Clear();
var userName = CommonMethods.GetUserId();
var fileName = string.Format("ScheduledOrdersReport-{0}-{1:yyyyMMddhhmmsstt}.xls", userName, DateTime.Now);
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel"; //"application/vnd.xls";
var stringWrite = new StringWriter();
var htmlWrite = new HtmlTextWriter(stringWrite);
var g = new GridView();
g.DataSource = dv;
g.DataBind();
g.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
更新2
我只是做了另一个测试,打开一个弹出窗口,然后使用更新1代码。无问题,单击或保留页面一段时间,然后再次单击按钮
看起来这是回邮和回复的问题
我只是在这个时候找不到任何合适的方法来解决这个问题。也许我需要休息一下 如何启动webclient? 并设置网络凭据?那么你不能每次都登录 比如: `
var dv = (DataView) Session["ScheduledOrdersReport"];
Response.Clear();
var userName = CommonMethods.GetUserId();
var fileName = string.Format("ScheduledOrdersReport-{0}-{1:yyyyMMddhhmmsstt}.xls", userName, DateTime.Now);
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
Response.Charset = "";
Response.ContentType = "application/vnd.ms-excel"; //"application/vnd.xls";
var stringWrite = new StringWriter();
var htmlWrite = new HtmlTextWriter(stringWrite);
var g = new GridView();
g.DataSource = dv;
g.DataBind();
g.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
`using(Webclient webclient = new Webclient())
{
webClient http = new Webclient();
http.Credentials = new NetworkCredential("YourUsername", "YourPassword");
}