在项目中需要导出Excel的地方太多了,所以写了个方法,贴出来供需要的朋友参考。
/*****************************************
/* 参数说明:dg—需要导出的datagrid,file_name—导出的文件名(*.xls),begin_cols—起始列
/* end_cols—结束列
/*****************************************
public void deriveDataGridToExcel(DataGrid dg,string file_name,int begin_cols,int end_cols)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer=true;
HttpContext.Current.Response.Charset="GB2312";
if(end_cols>dg.Columns.Count)
{
return;
}
if(begin_cols<0){
begin_cols=0;
}
System.IO.StringWriter sw=new System.IO.StringWriter();
DataGridItem item=null;
foreach(DataGridItem item_tmp in dg.Controls[0].Controls)
{
if(item_tmp.ItemType==ListItemType.Header)
{
item=item_tmp;
}
}
if(item!=null){
for(int i=begin_cols;i<=end_cols;i++){
sw.Write(item.Cells[i].Text.Trim()+"/t");
}
}
sw.Write("/n");
foreach(DataGridItem tmp in dg.Items)
{
for(int j=begin_cols;j<=end_cols;j++){
sw.Write(tmp.Cells[j].Text.Trim()+"/t");
}
sw.Write("/n");
}
sw.Close();
file_name=HttpUtility.UrlEncode(file_name);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename="+file_name);
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();
}