日期:2014-05-18  浏览次数:20555 次

导出规则的EXCEL文件并下载
我用EXCEL组件导出了标准的EXCEL文件 请问怎么在导出完这个文件的同事弹出下载框让用户下载到本地?
C# code

//// <summary>
        /// 导出 Excel 文件
        /// </summary>
        /// <param name="ds">要导出的DataSet</param>
        /// <param name="strExcelFileName">要导出的文件名</param>
        public static void ExportExcel(DataSet ds, string strExcelFileName)
        {
            object objOpt = Missing.Value;
            Application excel = new Application();
            excel.Visible = true;
            _Workbook wkb = excel.Workbooks.Add(objOpt);
            _Worksheet wks = (_Worksheet)wkb.ActiveSheet;

            wks.Visible = XlSheetVisibility.xlSheetVisible;

            int rowIndex = 1;
            int colIndex = 0;

            System.Data.DataTable table = ds.Tables[0];
            foreach (DataColumn col in table.Columns)
            {
                colIndex++;
                excel.Cells[1, colIndex] = col.ColumnName;
            }

            foreach (DataRow row in table.Rows)
            {
                rowIndex++;
                colIndex = 0;
                foreach (DataColumn col in table.Columns)
                {
                    colIndex++;
                    excel.Cells[rowIndex, colIndex] = row[col.ColumnName].ToString();
                }
            }
            //excel.Sheets[0] = "sss";
            wkb.SaveAs(strExcelFileName, objOpt, null, null, false, false, XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
            wkb.Close(false, objOpt, objOpt);
            excel.Quit();
        }
        #endregion



一般的导出后都带有格式 在用户修改完后无法进行导入操作 所以我希望导出的文件是规则的EXCEL文件不带格式

------解决方案--------------------
C# code
public void OutPutExcel()

        {

            //定义文档类型、字符编码

             Response.Clear();

           Response.Buffer= true;

           Response.Charset="GB2312";

            //下面这行很重要, attachment 参数表示作为附件下载,您可以改成 online在线打开

          //filename=FileFlow.xls 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm

           Response.AppendHeader("Content-Disposition","attachment;filename=FileFlow.xls");

           Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

          //Response.ContentType指定文件类型 可以为application/ms-excel、application/ms-word、application/ms-txt、application/ms-html 或其他浏览器可直接支持文档

           Response.ContentType = "application/ms-excel";

          this.EnableViewState = false;

            // 定义一个输入流

           System.IO.StringWriter oStringWriter = new System.IO.StringWriter();

           System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);



            this.RenderControl(oHtmlTextWriter);

          //this 表示输出本页,你也可以绑定datagrid,或其他支持obj.RenderControl()属性的控件

           Response.Write(oStringWriter.ToString());

           Response.End();

         }

------解决方案--------------------
C# code


StringBuilder sb = new StringBuilder();

        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            Content = dr["Site"].ToString() + "," + dr["Title"].ToString() + "," + dr["Company"].ToString() + "," + dr["Location"].ToString() + "," + dr["PublishTime"].ToString() + "," + dr["Trade"].ToString();
            sb.AppendLine(Content);
        }

        Response.Clear();
        Response.Buffer = false;
        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
        Response.ContentType = "application/octet-stream";
        Response.AppendHeader("content-disposition", &quo