1.利用devexpress的控件gridviewexporter:
首先在.aspx文件中添加该控件(例:ID='gveDemo'),绑定要导出的gridview,再写个button,进.cs文件对应的onclick方法,执行语句:gveDemo.WriteXlsToResponse(title);//title为设置导出的excel标题
2.利用输入输出流:
protected void btnExport_Click(object sender, EventArgs e)
{
MainDataSetTableAdapters.VI_TRANSPORTMONITOR1TableAdapter vi = new MainDataSetTableAdapters.VI_TRANSPORTMONITOR1TableAdapter();
DataTable dtExcel = vi.GetData(hd_send.Value, hd_car.Value, hd_logistic.Value, Convert.ToDateTime(hd_starttime.Value), Convert.ToDateTime(hd_endtime.Value));
CreateExcel(dtExcel, "application/ms-excel", "**表", 1, 0);//1代表第一行开始,0代表第0行中是时间类型
}
public void CreateExcel(DataTable dt, string FileType, string FileName, int startIndex, int timeIndex)
{
Response.Clear();
Response.Charset = "UTF-8";
Response.Buffer = true;
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");
Response.ContentType = FileType;
string colHeaders = string.Empty;
string ls_item = string.Empty;
DataRow[] myRow = dt.Select();
int i = 0;
int cl = dt.Columns.Count;
for (i = startIndex; i < cl; i++)
{
if (i == (cl - 1))
{
ls_item += dt.Columns[i].ToString() + "\n";
}
else
{
ls_item += dt.Columns[i].ToString() + "\t";
}
}
Response.Output.Write(ls_item);
ls_item = string.Empty;
foreach (DataRow row in myRow)
{
for (i = startIndex; i < cl; i++)
{
if (i == (cl - 1))
{
ls_item += row[i].ToString().Replace("\t", "").Replace("\n", "").Replace("\r", "") + "\n";
}
else
{
if (i == timeIndex)
{
ls_item += Convert.ToDateTime(row[i].ToString()).ToString("yyyy-MM/", System.Globalization.DateTimeFormatInfo.InvariantInfo).Replace("-", "年").Replace("/", "月;") + "\t";
}
else
{
ls_item += row[i].ToString().Replace("\t", "").Replace("\n", "").Replace("\r", "") + "\t";
}
}
}
Response.Output.Write(ls_item);
ls_item = string.Empty;
}
Response.Output.Flush();
Response.End();
}
3.改变gridview的某列visible属性来决定gridviewexport是否导出该列数据:
直接把gv.columns["xxx"].visible=false;写到对应的button的onclick事件里就行