用GridView导出excel时,发生一个很怪的现象。
用Vista带的IIS发布时,所有浏览器都可以正常保存、打开;
用Windows2003带的IIS发布时,IE6十次有八次会发生保存窗口一闪而过无法保存的情况,IE7、8beta、firefox均不会这种情况。
程序最后一句就是Response.Flush();
感觉跟这个有关,导出数据量很小,但到底被什么截断了,请高手赐教!
用Vista带的IIS发布时,所有浏览器都可以正常保存、打开;
用Windows2003带的IIS发布时,IE6十次有八次会发生保存窗口一闪而过无法保存的情况,IE7、8beta、firefox均不会这种情况。
程序最后一句就是Response.Flush();
感觉跟这个有关,导出数据量很小,但到底被什么截断了,请高手赐教!
解决方案 »
- 请教,C# 调用SMS.dll ,通过短信猫,发送中文短信,手机收到是乱码?
- Object reference not set to an instance of an object.
- 还有个问题,水晶报表的字段名能不能用编程方法改变呢?
- 控件验证用"\d"为什么不能通过任意个数字的验证?
- WebGrid 动态创建列,每次回传时动态创建的列又会丢失,需要重新创建,问问大家有没有更好的办法
- ************.net中如何控制用户在注册时,用户名一定要在4--20个字符内????**********
- 百思不得其解,请高人指教!
- 经常做报表的高手们:你们觉得用什么做报表最好?
- 怎样从DATAREADER中随机选择一条记录?
- 超时时间已到。在从池中获取连接之前超时时间已过。出现这种情况可能是因为所有池连接都已被使用并已达到最大池大小。
- JS图片滚动 Repeater 求段代码
- 如何统计Asp.Net2.0网站访问数量情况?
if (mytable.Rows.Count == 0)//mytable是一个DataTable,也可用DataSet,就是你要导出的数据集
{
this.Button1.Enabled = false;
return;
}
System.Web.UI.WebControls.GridView dgExport = null;
// IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null; if (mytable != null)
{
// 设置编码和附件格式
Response.ContentType = "application nd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment;filename=Borrow.xls");
Response.Charset = "";
Response.ContentEncoding = System.Text.Encoding.UTF8; // 导出excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); // 为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的DataGrid
dgExport = new System.Web.UI.WebControls.DataGrid();
dgExport.DataSource = mytable.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind(); // 返回客户端
dgExport.RenderControl(htmlWriter);
Response.Write(strWriter.ToString());
Response.End();
}
xls.FileName = "LogReport.xls";
xls.SummaryInformation.Author = "Nick Zhang"; //let them know who's responsible!
xls.SummaryInformation.Subject = "A report from NCCSM";
xls.DocumentSummaryInformation.Company = "XXXXX";
Worksheet sheet = xls.Workbook.Worksheets.Add("LOG");
Cells cells = sheet.Cells;
//写标题
cells.Merge(1, 1, 1, 12);
Cell head = cells.Add(1, 1, "LOG");
head.Font.Height = 15 * 20;
head.Font.FontName = "黑体";
head.HorizontalAlignment = HorizontalAlignments.Centered;
//写表头
string formHead = "";
for (int i = 0; i < 12; i++)
{
switch (i)
{
case 0: formHead = "A";
break;
case 1: formHead = "B";
break;
case 2: formHead = "C";
break;
case 3: formHead = "D";
break;
case 4: formHead = "E";
break;
case 5: formHead = "F";
break;
case 6: formHead = "G";
break;
case 7: formHead = "H";
break;
case 8: formHead = "I";
break;
case 9: formHead = "J";
break;
case 10: formHead = "K";
break;
case 11: formHead = "L";
break; }
Cell cell = cells.Add(2, i + 1, formHead);
cell.Font.Bold = true;
cell.Font.Height = 11 * 20;
cell.UseBorder = true;//使用边框
cell.Font.FontName = "黑体";
cell.HorizontalAlignment = HorizontalAlignments.Centered;
}
for (int i = 0; i < tempGridView.Rows.Count; i++)
{//写表中内容
for (int j = 0; j < 12; j++)
{//只要前十二列
if (j != 10)
{
cells.Add(i + 3, j + 1, tempGridView.Rows[i].Cells[j].Text.Replace(" ", string.Empty));
}
else
{
CheckBox cb = (CheckBox)tempGridView.Rows[i].Cells[j].Controls[0];
cells.Add(i + 3, j + 1, cb.Checked ? "已审核" : "未审核"); }
} } xls.Send();
Response.Flush();
}