点击下载链接 将表格保存为 excel 格式 虽然直接把网页标签输出 保存为 .excel扩展名但是用几十本打开就直接是 网页标签 怎样才能保存为 “真正”的.excel 格式
另外在说说保存为文本文档格式的 方法 不要有html 标签 只要表格里面的数据 我的表格是用 gridview 显示的!!! 

解决方案 »

  1.   

    第1个方法.. 使用Office COM组件...让服务器保存出来你再下载.
    第2个方法.. 使用OLEDB写到一个空EXCEL文件里 让你下载.
      

  2.   

    真正的 Excel,你必须使用 Excel提供的 API。Excel.Application oExcel=new Excel.Application();等参见
    http://blog.csdn.net/jilm168/archive/2007/11/06/1869118.aspx后面的部分
      

  3.   

    Excel.Application oExcel=new Excel.Application();
    创建EXCEL。打开模板复制到单元格
    下载
    string fileName = "";//客户端保存的文件名
                string filePath = Server.MapPath("");//路径            FileInfo fileInfo = new FileInfo(filePath);
                Response.Clear();
                Response.ClearContent();
                Response.ClearHeaders();
                Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
                Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                Response.AddHeader("Content-Transfer-Encoding", "binary");
                Response.ContentType = "application/octet-stream";
                Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                Response.WriteFile(fileInfo.FullName);
                Response.Flush();
                Response.End();
    过滤html 标签Regex.Replace(str,@"<[^> ]+>",""); 
      

  4.   

    看看这个如何:http://blog.csdn.net/jilm168/archive/2007/11/06/1869118.aspx
      

  5.   

    自己手動創建一個excel,後綴名改成.txt,看看源代碼,用C#去拼這些源代碼吧。
      

  6.   

    楼主给分挺高的。
    个人建议使用NPOI吧,导出的XLS是标准的。
    而且使用特别简单,几行代码解决问题。
      

  7.   

    又一个下载Excel本来不想说的但知道作为程序员的你,做不出东西来是很恼火的一件事情。
    以后都不必为excel烦恼了,什么office组建、什么三方晕。用得了这么麻烦吗?从前我从事.net的时候,公司里的老大们怎么做,就是xml保存后为xls就可以了。
    这个是我从前写的代码,里面如果不能满足你的可以自己去改,就是一个思想:
    http://download.csdn.net/source/2647486
    以后就别说什么world、excel打印了。什么都xml做
      

  8.   

    MyXls写Excel类
      

  9.   

    下面是两种导出Excel的方法,一种是导出页面控件中的数据,另一种是在后台构建一个DataTable然后点击按钮导出这个Datatable:
    public static void ToExcel(System.Web.UI.Control ctl, string FileName)
            {            HttpContext.Current.Response.Charset = "UTF-8";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
                HttpContext.Current.Response.ContentType = "application/ms-excel";
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName + ".xls");
                ctl.Page.EnableViewState = false;
                System.IO.StringWriter tw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
                ctl.RenderControl(hw);
                HttpContext.Current.Response.Write(tw.ToString());
                HttpContext.Current.Response.End();
            }        public static void ToExcel1(DataTable Dt, string FileName)
            {
                System.Web.UI.WebControls.GridView dgExport = null;
                //当前对话 
                System.Web.HttpContext curContext = System.Web.HttpContext.Current;
                //IO用于导出并返回excel文件 
                System.IO.StringWriter strWriter = null;
                System.Web.UI.HtmlTextWriter htmlWriter = null;            if (Dt != null)
                {
                    //设置编码和附件格式 
                    //System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
                    curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
                    curContext.Response.ContentType = "application nd.ms-excel";
                    curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
                    curContext.Response.Charset = "GB2312";                //导出Excel文件 
                    strWriter = new System.IO.StringWriter();
                    htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);                //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView 
                    dgExport = new System.Web.UI.WebControls.GridView();
                    dgExport.DataSource = Dt.DefaultView;
                    dgExport.AllowPaging = false;
                    dgExport.DataBind();                //下载到客户端 
                    dgExport.RenderControl(htmlWriter);
                    curContext.Response.Write(strWriter.ToString());
                    curContext.Response.End();
                }
            }
      

  10.   


    其实这么做的还是把网页输出保存为 .xls扩展名而已 
    这里的 Response.ContentType = "application nd.ms-excel";
    属性你随便写个什么都是一样 下载后的文件 他只认 扩展名 所以用记事本打开 下载后的文件 可以看到还是 包含html标签的 文本而已 而 "真正" .xls文件用记事本打开后是加密的文本 所以是乱码 我在这里只 想保存为 "真正" 的 .xls 文件请问各位高手有什么方法可以办到吗???
      

  11.   

    最好是首先完整的Excel格式保存在服务器中,再下载...
    我也是在找这种效果,但我不会,
    希望得到大师的帮助
      

  12.   

    # // <summary>  
    #     /// 把数据从DataTable导入到Excel文件里  
    #     /// </summary>  
    #     /// <param name="dataTable">数据源</param>  
    #     /// <param name="AbsoluteExcelFilePath">Excel文件的绝对路径</param>  
    #     /// <param name="TblColName">TBL里对应的列名</param>  
    #     /// <param name="ColumnName">Excel中对应的列名</param>  
    #     /// <returns>操作成功返回True,失败返回False</returns>  
    #     public static bool ExportDataToExcel(DataTable dataTable, string AbsoluteExcelFilePath, string[] TblColName, string[] ColumnName)  
    #     {  
    #         int k = 0;  
    #         if (dataTable == null) return false;  
    #           
    #         OleDbConnection Conn = new OleDbConnection();  
    #         try  
    #         {  
    #             string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + AbsoluteExcelFilePath + ";Mode=Share Deny None;Extended Properties=Excel 8.0;Jet OLEDB:Create System Database=True";  
    #             Conn = new OleDbConnection(strConn);  
    #             Conn.Open();  
    #             OleDbCommand command = Conn.CreateCommand();  
    #             string strSQL = "";  
    #             if (dataTable.Columns != null)  
    #             {  
    #                 //建表  
    #                 strSQL = "CREATE TABLE  " + dataTable.TableName + "(";  
    #                 for (int i = 0; i < ColumnName.Length; i++)  
    #                 {  
    #                     strSQL += ColumnName[i] + " TEXT,";  
    #                 }  
    #                 strSQL = strSQL.Substring(0, strSQL.Length - 1);  
    #                 strSQL += ")";  
    #                 command.CommandText += strSQL;  
    #                 command.ExecuteNonQuery();  
    #                 if (dataTable.Rows.Count > 0)  
    #                 {  
    #                     //导入数据  
    #                     foreach (DataRow row in dataTable.Rows)  
    #                     {  
    #                         strSQL = "insert into " + dataTable.TableName + "(";  
    #                         for (k = 0; k < TblColName.Length; k++)  
    #                         {  
    #                             strSQL += ColumnName[k] + ",";  
    #                         }  
    #                         strSQL = strSQL.Substring(0, strSQL.Length - 1);  
    #                         strSQL += ") values( ";  
    #                         for (k = 0; k < TblColName.Length; k++)  
    #                         {  
    #                             strSQL += "'" + row[TblColName[k]] + "',";  
    #                         }  
    #                         strSQL = strSQL.Substring(0, strSQL.Length - 1);  
    #                         strSQL += ")";  
    #                         command.CommandText = strSQL;  
    #                         command.ExecuteNonQuery();  
    #                     }  
    #                 }  
    #             }  
    #   
    #         }  
    #         catch (Exception ex)  
    #         {  
    #             Conn.Close();  
    #             throw new Exception(ex.Message);  
    #             return false;  
    #         }  
    #         Conn.Close();  
    #         return true;  
    #     }  
    # 调用方法:  
    # DataSet ds = (DataSet)Session["listMobile"];//获得要导出的表格的值  
    #           
    #         if (ds.Tables[0].Rows.Count <= 0)  
    #         {  
    #             Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  
    # alert('没有内容不能导出!')  
    # // --></mce:script>");  
    #         }  
    #         else  
    #         {  
    #             //EXCEL页面的名称  
    #             string[] tableName = { "["+DateTime.Now.ToString("yyyyMMddhhmmss")+"]" };  
    #              
    #             string fileName = tools.CreateID() + ".xls";  
    #             string filePath = Server.MapPath("..\\DownloadFiles\\" + fileName);  
    #             if (tools.ExportDataToExcel(ds, filePath, tableName)==true)  
    #             {  
    #                 Response.Clear();  
    #                 Response.Buffer = true;  
    #                 Response.Charset = "GB2312";  
    #                 Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);  
    #                 Response.ContentType = "application/vnd.ms-excel";  
    #                 this.EnableViewState = false;  
    #                 Response.WriteFile(filePath);  
    #                 Response.Flush();  
    #                 if (System.IO.File.Exists(filePath))  System.IO.File.Delete(filePath);  
    #                 Response.Redirect(this.Request.UrlReferrer.AbsoluteUri, true);  
    #                 Response.End();  
    #             }  
    #         }  
      

  13.   

     /// <summary>
        /// 生成EXCEL文件并直接下载
        /// </summary>
        /// <param name="ctl">控件名称</param>
        /// <param name="filename">生成的文件的文件名</param>
        public void SettoExcel(System.Web.UI.Control ctl,string filename)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.Charset = "GB2312";
            Response.ContentType = "application/octet-stream";
            //通知浏览器下载文件而不是打开
            Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
            ctl.EnableViewState = false;
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            ctl.RenderControl(htw );
            Response.Write(sw.ToString());
            Response.End();      
        }
      

  14.   

    以上的方法保存的 excel 文件不是我想要的
       用记事本打开 可以看见 就是html 代码
      我要的是真正的 excel 格式的文件
      

  15.   

    算了 各位告诉我一下 怎样保存为 文本文档格式的方法  (不要有html标签)
      

  16.   

    这里的 Excel.Application 是哪个命名空间里面的啊 需要添加什么引用 告诉我下 谢谢了
      

  17.   

    这算不算传说中的导出EXl?
     我博客里有个,自己写的
      

  18.   


    一个月了 还没解决?汗
    npoi  百度一下  官方网站  什么都有; 看例子     
    1个小时就搞定了吧
      

  19.   


    一个月了 还没解决?汗
    npoi  百度一下  官方网站  什么都有; 看例子     
    1个小时就搞定了吧
      

  20.   

    http://msdn.microsoft.com/zh-tw/ee818993.aspx
    这个还是很好的。
      

  21.   

    #region 将dataset导出到excel下,让用户保存,不存在路径问题
            /// <summary>
            /// 将dataset导出到excel下面
            /// </summary>
            /// <param name="ds"></param>
            /// <param name="FileName"></param>
            /// <param name="page"></param>
            public static void CreateExcel(DataSet ds, string FileName, System.Web.UI.Page page)
            {
                HttpResponse resp;
                resp = page.Response;
                resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
                string colHeaders = "", ls_item = "";            //定义表对象与行对象,同时用DataSet对其值进行初始化 
                DataTable dt = ds.Tables[0];
                DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
                int i = 0;
                int cl = dt.Columns.Count;            //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加\n
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                    }
                    else
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                    }            }
                resp.Write(colHeaders);
                //向HTTP输出流中写入取得的数据信息             //逐行处理数据   
                foreach (DataRow row in myRow)
                {
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据     
                    for (i = 0; i < cl; i++)
                    {
                        if (i == (cl - 1))//最后一列,加\n
                        {
                            ls_item += NoHTML(row[i].ToString()) + "\n";
                        }
                        else
                        {
                            ls_item += NoHTML(row[i].ToString()) + "\t";
                        }                }
                    resp.Write(ls_item);
                    ls_item = "";            }
                resp.End();
            }
            #endregion
      

  22.   

    现在只需要大家告诉我 怎样下载保存为.txt格式  感激不尽!!! (不要有html标签的纯文本格式)
      

  23.   


    Response.Charset = "UTF-8";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
            Response.ContentType = FileType;
            this.EnableViewState = false;
            StringWriter tw = new StringWriter();
            HtmlTextWriter hw = new HtmlTextWriter(tw);
            if (Rbtsaveone.Checked == true)
            {
                GridView1.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
            }
            else 
            {
                GridView1.AllowPaging = false;
                bind(Convert.ToInt32(ddlCurrentPage.SelectedValue),0);
                GridView1.RenderControl(hw);
                Response.Write(tw.ToString());
                Response.End();
                GridView1.AllowPaging = true;
                bind(Convert.ToInt32(ddlCurrentPage.SelectedValue),0);
            }
      

  24.   


     /// <summary>
            /// 把Data表中的内容导出到Excel
            /// </summary>
            /// <param name="Data">数据</param>
            /// <param name="HasTemplate">是否存在模板</param>
            /// <param name="FileFullName">文件全路径</param>
            /// <param name="LineBegin">开始行</param>
            /// <param name="ColumnBegin">开始列</param>
            /// <param name="HasHead">是否需要自动添加头部</param>
            /// <param name="HasBorder">是否需要自动添加边框</param>
            /// <param name="Print">是否打印</param>
            /// <param name="PrinterName">打印机名称</param>
            public void Export(DataTable Data, bool HasTemplate, string FileFullName, int LineBegin, int ColumnBegin, bool HasHead, bool HasBorder, bool Print, string PrinterName)
            {
                object missing = System.Reflection.Missing.Value;//missing定义
                int iPageSize;          //数据页大小
                int iDataLineBegin;     //数据开始行
                int iPageLineBegin;     //每页数据填充开始行
                int iPageLineEnd;       //每页数据填充结束行
                int iPageDataBegin;     //每页数据开始行
                int iPageDataEnd;       //每页数据结束行
                int iSheetsCount;       //Sheet个数
                object[,] aDataBuffer;  //数据导入缓冲
                string strFileReadName; //真实文件名            try
                {
                    //Excel初始化                //数据量相关参数
                    iPageSize = 65536;//每页数据行
                    iDataLineBegin = LineBegin + (HasHead == true ? 1 : 0);//首行
                    //Sheet数
                    iSheetsCount = (Data.Rows.Count + iDataLineBegin - 1) / (iPageSize + 1) + 1;                //打开Excel:
                    // 存在模板时,打开模板
                    // 不存在模板时,新建Excel
                    if (HasTemplate == true)//存在模板
                    {
                        this.OpenExcel(FileFullName);
                    }
                    else//不存在模板
                    {
                        this.OpenNewExcel(iSheetsCount);
                    }                //导入文件头
                    if (HasHead == true)
                    {
                        //实例化数据缓冲
                        aDataBuffer = new string[1, Data.Columns.Count];
                        //准备数据
                        for (int i = 0; i < Data.Columns.Count; i++)
                        {
                            aDataBuffer[0, i] = Data.Columns[i].ColumnName;
                        }                    //把缓冲区的数据写入到Excel
                        WriteDataToRange((Excel.Worksheet)excelWorkbook.Worksheets[1], aDataBuffer, LineBegin, ColumnBegin, HasBorder);
                    }                //以Sheet为单位导出数据
                    for (int i = 0; i < iSheetsCount; i++)
                    {
                        //导出第i个数据的数据                    //计算开始行和结束行
                        iPageLineBegin = i == 0 ? iDataLineBegin : 1;
                        iPageLineEnd = i < iSheetsCount - 1 ? iPageSize : Data.Rows.Count - i * iPageSize + iDataLineBegin - 1;
                        //计算数据开始行和结束行
                        iPageDataBegin = i == 0 ? 0 : i * iPageSize - iDataLineBegin + 1;
                        iPageDataEnd = iPageDataBegin + iPageLineEnd - iPageLineBegin + 1;                    //实例化数据缓冲
                        GC.Collect();
                        aDataBuffer = new string[iPageLineEnd - iPageLineBegin + 1, Data.Columns.Count];                    //准备数据
                        for (int iRow = iPageDataBegin; iRow < iPageDataEnd; iRow++)
                        {
                            for (int iCol = 0; iCol < Data.Columns.Count; iCol++)
                            {
                                aDataBuffer[iRow - iPageDataBegin, iCol] = Data.Rows[iRow][iCol].ToString();
                            }
                        }                    //把缓冲区的数据写入到Excel
                        WriteDataToRange((Excel.Worksheet)excelWorkbook.Worksheets[i + 1], aDataBuffer, iPageLineBegin, ColumnBegin, HasBorder);                    //给sheet命名
                        ((Excel.Worksheet)excelWorkbook.Worksheets[i + 1]).Name =
                            (Data.TableName.Equals("") == true ? "Data" : Data.TableName) + (i == 0 ? "" : i.ToString());
                    }
                    if (Print)//打印
                        excelApp.Workbooks[1].PrintOut(System.Reflection.Missing.Value, System.Reflection.Missing.Value, 1, false, PrinterName, false, true, "");
                    else
                    {
                        //获取真实文件名
                        strFileReadName = FileFullName.Substring(0, FileFullName.Length - 4) + ".xls";                    //保存文件
                        if (System.IO.File.Exists(strFileReadName))
                            System.IO.File.Delete(strFileReadName);
                        this.excelApp.Workbooks[1].SaveCopyAs(strFileReadName);
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    this.CloseExcel();
                }
            }
      

  25.   

    加点
    protected Excel.Application excelApp;//Excel Application对象
            protected Excel.Workbook excelWorkbook;//Excel workbook对象
      

  26.   

    现在只需要大家告诉我 怎样下载保存为.txt格式 感激不尽!!! (不要有html标签的纯文本格式)
      

  27.   


    支持web及winform从DataTable导出到Excel。 
    生成速度很快。 
    准确判断数据类型,不会出现身份证转数值等上面提到的一系列问题。 
    如果单页条数大于65535时会新建工作表。 
    列宽自适应。 
    支持读取Excel。 
    调用方便,只一调用一个静态类就OK了 Excel的csv格式就是txt格式,你用记事本打开就明白了。
      

  28.   

    忘了告诉你代码的下载地址了:http://download.csdn.net/source/3065905
      

  29.   

    跨年的帖子,好帖!
    试试NPOI吧