DataGird导出EXCEL的几个方法(WebControl)
using System;
using System.Data;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;
namespace DataGirdtoExcel
{
/// <summary>
/// DataGirdtoExcel 的摘要说明。
/// 作者:林孔杰
/// 日期:2008-12-5
/// 功能:DataGird导出EXCEL
/// 描述:
/// </summary>
public class DataGirdtoExcel
{
public DataGirdtoExcel()
{
}
/// <summary>
/// 将DATAGRID导出为EXCEL文件方法一,
/// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
/// </summary>
/// <param name="myPage">page</param>
/// <param name="objdatagrid">datagrid</param>
/// <param name="name">filename</param>
private void OutExcel(Page myPage,DataGrid objdatagrid,string name)
{
HttpResponse Response;
Response=myPage.Response;
string name1="attachment;filename="+name+".xls";
objdatagrid.Visible=true;
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition",name1);
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType ="application/ms-excel";
objdatagrid.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
objdatagrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
/// <summary>
/// 将DATAGRID导出为EXCEL文件方法二,
/// 参数是:要导出的DATAGRID的ID和要保存下来的EXCEL文件名
/// </summary>
/// <param name="myPage">page</param>
/// <param name="ctl">datagrid</param>
/// <param name="filename">filename</param>
public void ExportToExcel(Page myPage,DataGrid objctl,string filename)
{
HttpResponse Response;
Response=myPage.Response;
bool CurrCtlVisible=objctl.Visible;
ctl.Visible=true;
Response.AppendHeader("Content-Disposition","attachment;filename="+filename+".xls");
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.ContentType = "application/ms-excel";
objctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
objctl.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
objctl.Page.EnableViewState = true;
objctl.Visible=CurrCtlVisible;
}
private void DataGridOutExcel(Page myPage,DataGrid objdatagrid,string name)
{
HttpResponse Response;
Response=myPage.Response;
string name1="attachment;filename="+name+".xls";
objdatagrid.Visible=true;
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition",name1);
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType ="application/ms-excel";
objdatagrid.EnableViewState = false;
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
objdatagrid.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();
}
#region 导出EXCEL,用DATASET
public string myExportString(DataGrid objdatagrid,DataSet ds)
{
string HTstring="<table><tr>";
string Fieldstring="";
ArrayList myArray=new ArrayList();
string sRows="<tr>";
for(int i=0;i<DG.Columns.Count;i++)
{
HTstring+="<td>"+objdatagrid.Columns[i].HeaderText+"</td>";
Fieldstring+="<td>"+((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField+"</td>";
myArray.Add(((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField);
}
for(int k=0;k<ds.Tables[0].Rows.Count;k++)
{
foreach(string field in myArray)
{
sRows+= "<td>"+ds.Tables[0].Rows[k][field]+"</td>";
}
sRows+="</tr>";
}
HTstring+="</tr>"+sRows+"</table>";
return HTstring;
}
public void SaveToExcel(Page myPage, string myExportString,string myFileName)
{
HttpResponse resp;
resp=myPage.Response;
resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition","attachment;filename="+myFileName+".xls");
resp.ContentType="application/ms-excel";
resp.Write(myExportString);
resp.End();
//resp.Clear();
//resp.Close();
}
public void Export(DataGrid objdatagrid,DataTable objdatatable,HttpResponse response)
{
// clean up response object
response.Clear();
response.Charset = "";
response.Charset = "UTF-8";
// response.ContentEncoding = System.Text.Encoding.Default;
response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
// set response object's mime type
// response.ContentType = "application/vnd.ms-excel";
response.AppendHeader("Content-Disposition","attachment;filename=mytest.xls");
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
DataGrid objDg = new DataGrid();
objDg.AllowPaging = false;
objDg.AllowSorting = false;
ArrayList myArray=new ArrayList();
for(int i=0;i<myDG.Columns.Count;i++)
{
// objDg.Columns.AddAt(i,objdatagrid.Columns[i]);
// objDg.Columns[i].HeaderText=objdatagrid.Columns[i].HeaderText;
myArray.Add(((System.Web.UI.WebControls.BoundColumn)(objdatagrid.Columns[i])).DataField);
for(int k=0;k<objdatatable.Columns.Count;k++)
{
foreach(string field in myArray)
{
if(objdatatable.Columns[i].ColumnName==field)
{
objdatatable.Columns[i].ColumnName=objdatagrid.Columns[i].HeaderText;
}
}
}
}
objDg.DataSource = objdatatable;
objDg.ShowHeader = true;
objDg.HeaderStyle.BackColor = System.Drawing.Color.DarkGray;
objDg.HeaderStyle.ForeColor = System.Drawing.Color.White;
objDg.HeaderStyle.Font.Bold = true;
objDg.AlternatingItemStyle.BackColor = System.Drawing.Color.LightGray;
objDg.DataBind();
objDg.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
#endregion
}
}