userdataGrid.DataSource = ds;
        userdataGrid.DataBind();        StringBuilder sb = new StringBuilder("");
        string filename = Resources.Resource.inv_MarketSearchDLPur + ".xls";
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "inline;filename="
                + HttpUtility.UrlEncode(filename, Encoding.UTF8));
        System.IO.StringWriter sw = new System.IO.StringWriter(sb);
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(sw);
        sb.Append("(<html><body><table  border=\"1\" style=\"font-family:宋体;\">");
        sb.Append("<tr><td colspan=\"22\" style=\"text-align:center;font-size:18pt;font-weight:bold;\">" + Resources.Resource.inv_MarketSearchDLPur + "</td></tr>");
        sb.Append("<tr style=\"background-color:SkyBlue;font-size:12pt;\">");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.mst_AccMonth + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.com_SiteId + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.psi_DealerID + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.psi_DealerName + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.mst_DealerType + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.inv_OtherInQty + "</td>");
        sb.Append("<td style=\"text-align:center;\">" + Resources.Resource.inv_StockQty + "</td></tr>");
        userdataGrid.RenderControl(hw);
        sb.Append("</table></body></html>");
        Response.Write(sb.ToString());
        Response.End();在我的机子上这段代码是能够正常下载的,但有的机子报错说什么要打开的文件后缀名与EXCEL的后缀.xls不一致,无法导出,然后就强制用IE打开了。
上网查过说是IE的设置问题~~!但找了好久没看到怎么设置的说。
郁闷好久了
在线等

解决方案 »

  1.   

    不是后缀不一样的问题,导出来的文件名肯定都是一样的,而且打开也只是IE调用Excel打开的.
    这种情况的出现确实与机器有关系,这是与客户机的设置有关系的,具体设置地方windows的设置里面,并不在IE的设置里面.
    设置地方在 随便打开一个文件夹,工具--文件夹选项--文件类型(找到.xls)--高级--下载确认后打开
    如果没沟上这个,IE就会直接调用该后缀对应的处理程序去打开
      

  2.   

    呵呵我再请教一个问题,如果因为数据量太大,而要导出的数据又不是本地的,网络也不是很好的情况下,会产生这样的情况吗?以前有出过这样的情况,在页面上显示的话是没有问题的,但是导出的EXCEL出来就是乱码,而我们的解决方案是,把.xls-->.html再分成两个文本,就是分成上半部分跟下半部分,再转换成.xls又变回正常的了,而如果数据量相对比较少的话也不会有问题的,这种问题会是因为,数据量太大而导致的吗?呵麻烦你了~~!
      

  3.   

    大哥你这个有点复杂??
    试试我这个,不过我简化了很多!!!!!基本应该没问题!!!!!!!!!!!!!!
    /// <SUMMARY>   
        /// 将GridView的数据导入到EXECL   
        /// </SUMMARY>   
        public static bool ExportExcelGridView(GridView dgv, bool isShowExcel)
        {
            if (dgv.Rows.Count == 0)
            {
                return false;
            }
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            excel.Application.Workbooks.Add(true);
            excel.Visible = isShowExcel;
            //生成字段名称
            for (int i = 0; i < dgv.Columns.Count; i++)
            {
                excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText;
            }
            //填充数据
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                for (int j = 0; j < dgv.Columns .Count; j++)
                {
                   
                        excel.Cells[i + 2, j + 1] ="'"+ dgv.Rows[i].Cells[j].Text.ToString();
                              }
            }
            return true;    }
        #endregion