参考PowerGrid源码---
设置几个属性
//导出文件的名称,使用Guid.NewGuid()得到随机名称
private string m_ExportFileName = "";
//传输数据的文件流类
private StreamWriter m_ExportWriter;
//文件的链接路径
private string m_PopupURL = "";
//导出按钮事件
private void btn_export_Click(object sender, System.EventArgs e)
{
string HtmlViewStr;
this.m_ExportFileName = Guid.NewGuid().ToString()+".xls"; //得到文件名称
//使用文件流
FileStream fs = new FileStream(this.CurrentPath(this.Page.Request.PhysicalPath) +"..\\temp\\"+this.m_ExportFileName,FileMode.CreateNew, FileAccess.Write, FileShare.None);
this.m_ExportWriter = new StreamWriter(fs,Encoding.UTF8);
//得到导出文件的服务器路径
this.m_PopupURL = this.CurrentVPath(this.Page.Request.Path)+"../temp/"+this.m_ExportFileName;
//获得导出的数据
HtmlViewStr = DataView2Html();
this.Finish();
//这句不知道是什么意思,好想就是这句,才把网页文件变成Xls,不是很理解
this.Page.Response.AddHeader("content-disposition", "inline; filename=export.xls");
this.Page.RegisterStartupScript("",this._text);
}
// 完成导出数据的过程同时关闭使用过的流
private void Finish()
{
try
{
//this._ExportString = this.m_ExportWriter;
// 将产生的文件保存到服务器上,然后指引用户下载。
this.m_ExportWriter.Close();
this.PopUpWindow();
}
catch (Exception ex)
{
throw ex;
}
}
//得到路径的三种方法
private string CurrentPath(string physicalPath)
{
int ilastSlash = physicalPath.LastIndexOf(@"\");
int length = physicalPath.Length - ilastSlash;
return physicalPath.Remove(ilastSlash,length)+@"\";
}
private string CurrentVPath(string physicalPath)
{
int ilastSlash = physicalPath.LastIndexOf(@"/");
int length = physicalPath.Length - ilastSlash;
return physicalPath.Remove(ilastSlash,length)+"/";
}
private string CurrentFileName(string allpathFileName)
{
int iLastslash = allpathFileName.LastIndexOf(@"\");
return allpathFileName.Remove(0,iLastslash);
}
//打开新窗口,提示下载保存
private void PopUpWindow()
{
if (this.m_PopupURL.Length > 0)
{
this._text = "<script language='javascript'>window.open('"+ this.m_PopupURL+ "');window.opener=null;window.close();</script>";
}
}
//取得数据的函数,其实就是一个页面
private string DataView2Html()
{
//bool IsInit;
string retHtml = string.Empty;
ShipperMod MyShipperListMod = new ShipperMod();
if(rl_select.Items.FindByValue("0").Selected == true)
{
}
else
{
reader = MyShipperListMod.GetAllData();
}
this.m_ExportWriter.WriteLine("<HTML><HEAD>");
this.m_ExportWriter.WriteLine("<META HTTP-EQUIV='content-type' CONTENT='text/html; charset=gb2312'> ");
this.m_ExportWriter.WriteLine("<LINK href='../style.css' type=text/css rel=stylesheet>");
this.m_ExportWriter.WriteLine("</HEAD>");
this.m_ExportWriter.WriteLine("<BODY>");
this.m_ExportWriter.WriteLine("<TABLE width=600 border=1 align='center' cellPadding=1 cellSpacing=1 borderColor=#b9b9b9>");
this.m_ExportWriter.WriteLine("<TR>");
for(int i=1;i<reader.FieldCount;i++)
{
this.m_ExportWriter.WriteLine("<TD height=30 style='font-size:10.5pt;font-weight:bold'>"+ reader.GetName(i).ToString() +"</td>");
}
this.m_ExportWriter.WriteLine("</TR>");
while(reader.Read())
{
this.m_ExportWriter.WriteLine("<TR>");
for(int i=1;i<reader.FieldCount;i++)
{
this.m_ExportWriter.WriteLine("<TD height=30>"+ reader[i].ToString() +"</td>");
}
this.m_ExportWriter.WriteLine("</TR>");
}
this.m_ExportWriter.WriteLine("</TABLE>");
this.m_ExportWriter.WriteLine("</BODY></HTML>");
//this.m_ExportWriter.WriteLine("sdfsdfasdfsdaf");
return retHtml;
}
//以上只是从PowerGrid上抄的一些代码,有些不是很理解,记录下来,以供以后参考!