想将DataGrid中的数据 导出到excel中去
在网上“抄”了一段代码:
private viod DataGrid2Excel()
{
System.IO.StringWriter SW = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter HTW=new System.Web.UI.HtmlTextWriter(SW);
dgShow.RenderControl(HTW);//dgShow为显示数据的DataGrid
Response.Buffer=true;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/vnd.ms-excel";
Response.Charset="utf-8";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
Response.AddHeader("Content-Disposition", "attachment;filename=test.doc");
Response.Write(SW.ToString());
Response.Flush();
Response.Close();
}
但每次调用 DataGrid2Excel()的时候 形成的excel表都是 空表 什么数据都没 有 ???
请大家多多帮忙,高手们多多帮助啊 给指点指点 谢谢!
在网上“抄”了一段代码:
private viod DataGrid2Excel()
{
System.IO.StringWriter SW = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter HTW=new System.Web.UI.HtmlTextWriter(SW);
dgShow.RenderControl(HTW);//dgShow为显示数据的DataGrid
Response.Buffer=true;
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/vnd.ms-excel";
Response.Charset="utf-8";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
Response.AddHeader("Content-Disposition", "attachment;filename=test.doc");
Response.Write(SW.ToString());
Response.Flush();
Response.Close();
}
但每次调用 DataGrid2Excel()的时候 形成的excel表都是 空表 什么数据都没 有 ???
请大家多多帮忙,高手们多多帮助啊 给指点指点 谢谢!
解决方案 »
- GridView行單擊事件
- 谁有卖论坛+博客的产品啊 最好是支持oracle 的
- 学生选课系统,急用!!!
- 哪位朋友用过MyGeneration 代码生成工具?
- 在线等待急急急!!!!!!!请高手指点!!!!!!拜托!!!!!
- 我的Cookis中出现中文就会出错
- 怎么样能通过IP地址得到其所在的公司或单位?
- Html.TextBoxFor 可以使用CompareValidator
- 加急,如何计算登录用户在一个网页的停留时长?
- 我想实现 datagrid分页时,数据变了, 但表格的每一行高度不变,每一列宽度不变,该怎样设置?
- GridView的问题,高分求教
- |M| 问幕白兄,DataGrid显示隐藏按钮,我把Button改为<A> js出错
Response.AppendHeader("Content-Disposition","attachment;filename="+Server.UrlEncode("要导出以后的文件名.xls"));
Response.ContentType = "application/vnd.ms-excel";
Response.Charset ="utf8";
Response.ContentEncoding =System.Text.Encoding.UTF8 ;
dg.Page.EnableViewState=false;
System.IO.StringWriter tw = new System.IO.StringWriter() ;
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
dg.Visible=true;
dg.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
// 导出列表信息到Excel
public static void gSendGridInfoToExcel(DataGrid GridX)
{
Excel.Application excel= new Excel.ApplicationClass();
Excel._Workbook xBk = excel.Workbooks.Add(true);
Excel._Worksheet xSt = (Excel._Worksheet)xBk.ActiveSheet;
Excel.Range excelCell=null;
try
{
//赋值对象
object[] objarr;
DataTable dtTest=new DataTable();;
int i,j;
int iRows,iCows;
int iVisable;
iVisable=0;
iCows=0;
ArrayList list=new ArrayList();
//如果绑定数据源是DataTable和DataSet,取得行数
if (GridX.DataSource is System.Data.DataSet || GridX.DataSource is System.Data.DataTable)
{
dtTest=(DataTable)GridX.DataSource;
iRows=dtTest.Rows.Count;
}
else if (GridX.DataSource is System.Data.DataView)
{
DataView dvTest=(DataView)GridX.DataSource;
iRows=dvTest.Count;
dtTest=dvTest.Table;
}
//如果是集合取得行数
else
{
System.Collections.CollectionBase ColTest;
ColTest=(System.Collections.CollectionBase)GridX.DataSource;
iRows=ColTest.Count;
}
//如果有TableStyles则根据TableStyles取得(标题行)
if (GridX.TableStyles.Count>0)
{
iCows=GridX.TableStyles[0].GridColumnStyles.Count;
for(i=0;i<iCows;i++)
{
if(GridX.TableStyles[0].GridColumnStyles[i].Width>0)
{
iVisable++;
list.Add(GridX.TableStyles[0].GridColumnStyles[i].HeaderText);
} }
objarr = new object[iVisable];
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[1,1],excel.Cells[1,iVisable]);
excelCell.Value2 = objarr;
//数据行
for(i=0;i<iRows;i++)
{
objarr = new object[iVisable];
list.Clear(); for(j=0;j<iCows;j++)
{
if(GridX.TableStyles[0].GridColumnStyles[j].Width>0)
{
list.Add("'"+GridX[i,j].ToString().Replace("\n",""));
} }
if (list.Equals(System.DBNull.Value))
{
break;
}
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[i+2,1],excel.Cells[i+2,iVisable]);
excelCell.Value2 = objarr;
}
}
else
{
iCows=dtTest.Columns.Count;
for(i=0;i<iCows;i++)
{
list.Add(dtTest.Columns[i].Caption);
}
objarr = new object[iCows];
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[1,1],excel.Cells[1,iCows]);
excelCell.Value2 = objarr; //数据行
for(i=0;i<iRows;i++)
{
objarr = new object[iCows];
list.Clear(); for(j=0;j<iCows;j++)
{
list.Add("'"+GridX[i,j].ToString().Replace("\n",""));
}
if (list.Equals(System.DBNull.Value))
{
break;
}
objarr=list.ToArray();
excelCell = xSt.get_Range(excel.Cells[i+2,1],excel.Cells[i+2,iCows]);
excelCell.Value2 = objarr;
} }
dtTest.Dispose(); excel.Visible=true; }
catch (System.Exception e)
{
throw e;
}
finally
{
excelCell=null;
xBk=null;
xSt=null;
excel=null;
GC.Collect();
} } }