看看这几篇,应该对你有帮助
http://www.chinabs.net/csharp/default.asp?infoid=50
http://www.yesky.com/20020313/1601534.shtml
http://www.c-sharpcorner.com/winforms/ExcelReadMG.asp

解决方案 »

  1.   

    以下是我用的方法,函数的参数是一条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>");
    }
      

  2.   

    最简单嘛,让我想想......有了,用crystalreport view控件,它有导出数据到excel这个按钮