以下是我用的方法,函数的参数是一条sql语句

public void PrintData(string sqlcommand)
{//将当前显示的数据以excel下载到客户端的通用函数
string fileExcel, filePath, fileName, strLine;
System.IO.FileStream objFileStream;
System.IO.StreamWriter objStreamWriter;
Random nRandom = new Random(DateTime.Now.Millisecond);
fileExcel = "t" + nRandom.Next().ToString() + ".xls"; 
filePath = Server.MapPath("\\netsafe\\print_data");
fileName = filePath + "\\" + fileExcel;
objFileStream = new System.IO.FileStream(fileName, System.IO.FileMode.OpenOrCreate , System.IO.FileAccess.Write);          
objStreamWriter = new System.IO.StreamWriter(objFileStream,System.Text.Encoding.Unicode); 
sqlCommand1.CommandText=sqlcommand;
SqlDataReader dr;
sqlCommand1.Connection.Open();
dr = sqlCommand1.ExecuteReader();
strLine = ""; 
for (int i = 0; i <= dr.FieldCount-1; i++) 
{
strLine = strLine + dr.GetName(i).ToString() + Convert.ToChar(9);
}
objStreamWriter.WriteLine(strLine);
strLine = "";
while (dr.Read()) 
{
for (int i = 0; i <= dr.FieldCount-1; i++) 
{
strLine = strLine + dr.GetSqlValue(i) + Convert.ToChar(9);
}                    
objStreamWriter.WriteLine(strLine);
strLine="";
}
dr.Close();
sqlCommand1.Connection.Close();
objStreamWriter.Close();
objFileStream.Close();
Response.Write("<script language=JavaScript>window.open('print_data/"+fileExcel+"','',',,status=yes,location=no,toolbar=yes,scrollbars=yes,,directories=yes,menubar=yes,,')</script>");
}