我要晕倒啊,这个问题没人回答啊 ~~

解决方案 »

  1.   

    这样:
    Session["user"]是当前登录的用户,主要用于产生文件名
    Session["vData"]是datagrid的数据源,我用的是DATATABLE。
    另外,OWC好像没办法进行格式控制.private void Button1_Click(object sender, System.EventArgs e)
    {
    string sFileName = Session["user"].ToString() + DateTime.Now.ToFileTime().ToString() + ".xls";
    OWC.SpreadsheetClass xlsheet = new OWC.SpreadsheetClass();
    DataTable dt = (DataTable)Session["vData"];
    int numbercols = dt.Columns.Count; //插入列名
    for (int i = 0 ; i < numbercols ; i++)
    xlsheet.ActiveSheet.Cells[1,i+1] = dt.Columns[i].ColumnName; //插入数据
    for (int k = 0 ; k < dt.Rows.Count ; k++)
    for (int i=0;i<numbercols;i++) 
    xlsheet.ActiveSheet.Cells[k+2,i+1] = dt.Rows[k][i].ToString(); //保存为本地临时文件,用户下载完后删除
    xlsheet.ActiveSheet.Export("e:\\ExcelFiles\\" + sFileName,OWC.SheetExportActionEnum.ssExportActionNone); DownloadFiles("e:\\ExcelFiles\\" + sFileName);
    RemoveFiles("e:\\ExcelFiles\\" + sFileName);
    }private void DownloadFiles(string strPath)
    {
    FileInfo fi=new FileInfo(strPath);
    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = false;
    Response.ContentType = "application/octet-stream";
    Response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(fi.FullName,System.Text.Encoding.UTF8));
    Response.AppendHeader("Content-Length",fi.Length.ToString());
    Response.WriteFile(fi.FullName);
    Response.Flush();
    }private void RemoveFiles(string strPath)

    FileInfo fi = new FileInfo(strPath);
    fi.Delete();
    Response.End();
    }