把DataGrid里面的数据导出到Excel文件时出错!非常紧急!高手们救命啊!分不够可以再加!
使用SQL语句读取数据并赋给Datagrid控件,读取下表里面的所有列:
CREATE TABLE [dbo].[Table1] (
[Columns01] [int] IDENTITY (1, 1) NOT NULL ,
[Columns02] [char] (13) NULL,
[Columns03] [char] (10) NULL,
[Columns04] [char] (6) NULL,
[Columns05] [nchar] (50) NULL,
[Columns06] [char] (9) NULL,
[Columns07] [char] (3) NULL,
[Columns08] [char] (3) NULL,
[Columns09] [nchar] NULL,
[Columns10] [int] NULL ,
[Columns11] [bit] NULL ,
[Columns12] [datetime] NULL ,
[Columns13] [char] (10) NULL ,
[Columns14] [datetime] NULL ,
[Columns15] [char] (5) NULL ,
[Columns16] [bit] NULL
) 。
当数据少时没有任何问题,一旦行数多于4160时再导出就会提示输入用户名和密码,输入Windows的用户名和密码后就会显示:“The page can't be displyed”,错误的原因是:“Cannot find server or DNS Error“。
导出Excel的代码如下:
string HeadText,Content;
HeadText="";
for(int i=0;i<DG20.Columns.Count;i++)
{
HeadText+=DG20.Columns[i].HeaderText+" ";
}
StringWriter sw=new StringWriter();
sw.WriteLine(HeadText);
foreach(DataGridItem di in DG20.Items)
{
Content="";
for(int i=0;i<DG20.Columns.Count;i++)
{
Content+=di.Cells[i].Text.Trim()+" ";
}
sw.WriteLine(Content);
}
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=test.xls");
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.Write(sw);
HttpContext.Current.Response.End();
请问这是什么问题啊!
非常紧急!高手们救命啊!
问题点数:50、回复次数:3Top
1 楼silverseven7(就差100 分就升级,多给我点吧)回复于 2005-08-01 11:54:36 得分 50
string strFileName = "DailyCurrency"+this.radioType.SelectedItem.Value;
this.Response.Clear();
this.Response.BufferOutput = true;
this.Response.Charset="windows-1252";
//Add Header File
this.Response.ContentEncoding = System.Text.Encoding.GetEncoding("windows-1252");
this.Response.AppendHeader("Content-Type", "application/ms-excel");
this.Response.AppendHeader("Content-Disposition","attachment;filename="+strFileName);
StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
this.dg_Dest.RenderControl(oHtmlTextWriter);
this.Response.Write(oStringWriter.ToString());
this.Response.Flush();Top
2 楼silverseven7(就差100 分就升级,多给我点吧)回复于 2005-08-01 11:55:05 得分 0
string strFileName = "DailyCurrency"+this.radioType.SelectedItem.Value;
Response.Clear();
Response.Buffer= true;
Response.Charset="windows-1252";
Response.AppendHeader("Content-Disposition","attachment;filename="+strFileName);
Response.ContentEncoding=System.Text.Encoding.GetEncoding("windows-1252");
Response.ContentType = "application/ms-text";
this.EnableViewState = false;
System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN",true);
System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
DataSet dsBind = (DataSet)this.Session["mod_ApproveDown"];
DataTable dt = dsBind.Tables[0];
System.Text.StringBuilder myString=new System.Text.StringBuilder();
myString.Append("\r\n");
myString.Append("cmpy exch_date curr_code old_exch_rate new_exch_rate ");
myString.Append("\r\n");
myString.Append("\r\n");
foreach(DataRow dgRow in dt.Rows)
{
for(int i=0;i<dgRow.ItemArray.Length;i++)
{
if(dgRow[i]!=null)
{
myString.Append(dgRow[i].ToString().PadRight(15,' '));
}
}
myString.Append("\r\n");
}
myString.Append("\r\n");
myString.Append("\r\n");
TextBox myTextBox=new TextBox();
myTextBox.TextMode=System.Web.UI.WebControls.TextBoxMode.MultiLine;
myTextBox.Text=myString.ToString();
myTextBox.RenderControl(oHtmlTextWriter);
System.Text.RegularExpressions.Regex htmlRegex = new System.Text.RegularExpressions.Regex("<[^>]*>");
Response.Write(htmlRegex.Replace(oStringWriter.ToString(),""));Top
3 楼sunnyBelt(一蓑烟雨)回复于 2005-08-01 12:22:48 得分 0
silverseven7,用你的第一段代码,当数据多于4200行是不会出错但是却没有任何的输出。
有没有哪位高人知道这是为什么出错阿?Top




