首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

asp.net在本土导出excel正常,发布之后,导出按钮失效,点了没反应

2013-04-02 
asp.net在本地导出excel正常,发布之后,导出按钮失效,点了没反应本帖最后由 w_775728638 于 2013-03-31 09:

asp.net在本地导出excel正常,发布之后,导出按钮失效,点了没反应
本帖最后由 w_775728638 于 2013-03-31 09:47:35 编辑 protected void OUT_Click(object sender, EventArgs e)
    {
        string physicPath = Server.MapPath("WebShow\");
        EnterpriseOpration.WebShow.Z_student student = new EnterpriseOpration.WebShow.Z_student();
        if (DDL_yuanxi.SelectedValue!="")
        {
            student.Yuanxi = DDL_yuanxi.SelectedValue.ToString();
        }
        if (DDL_PKlevel.SelectedValue!="")
        {
            student.Pklevel = DDL_PKlevel.SelectedValue.ToString();
        }
        
        System.Data.DataTable table = student.GetDataTable();//获得学生表
        string fileName = "学生信息.Xls";
        try
        {
            if (System.IO.File.Exists(physicPath + fileName))
            {
                System.IO.File.SetAttributes(physicPath + fileName, System.IO.FileAttributes.Normal);
                System.IO.File.Delete(physicPath + fileName);
            }
            string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + physicPath + fileName + ";Extended Properties=Excel 8.0;";
            System.Data.OleDb.OleDbConnection objConn = new System.Data.OleDb.OleDbConnection(connString);
            System.Data.OleDb.OleDbCommand objCmd = new System.Data.OleDb.OleDbCommand();
            objCmd.Connection = objConn;
            objCmd.Connection.Open();

            #region 组织机构信息导出
           

            //建立表结构
            objCmd.CommandText = @"CREATE TABLE student(学号 varchar,姓名 varchar,性别 varchar,院系 varchar,专业 varchar,班级 varchar,贫困等级 varchar,勤工助学 varchar,励志奖学金 varchar,国家奖学金 varchar,绿色通道 varchar,身份证号 varchar,电话 varchar)";
            objCmd.ExecuteNonQuery();
            //建立插入动作的Command
            objCmd.CommandText = @"INSERT INTO student(学号,姓名,性别,院系,专业,班级,贫困等级,勤工助学,励志奖学金,国家奖学金,绿色通道,身份证号,电话) 


             VALUES (@a,@b,@c,@d,@e,@f,@g,@h,@i,@j,@k,@l,@m)";
            objCmd.Parameters.Clear();
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@a", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@b", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@c", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@d", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@e", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@f", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@g", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@h", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@i", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@j", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@k", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@l", System.Data.OleDb.OleDbType.VarChar));
            objCmd.Parameters.Add(new System.Data.OleDb.OleDbParameter("@m", System.Data.OleDb.OleDbType.VarChar));
           // 遍历DataSet将数据插入新建的Excel文件中
            foreach (DataRow row in table.Rows)
            {
                objCmd.Parameters[0].Value = row["studentID"].ToString();
                objCmd.Parameters[1].Value = row["name"].ToString();
                objCmd.Parameters[2].Value = row["sex"].ToString();
                objCmd.Parameters[3].Value = row["yuanxi"].ToString();
                objCmd.Parameters[4].Value = row["zhuanye"].ToString();
                objCmd.Parameters[5].Value = row["banji"].ToString();
                objCmd.Parameters[6].Value = row["pklevel"].ToString();


                objCmd.Parameters[7].Value = row["qgzx"].ToString();
                objCmd.Parameters[8].Value = row["lzscholarship"].ToString();
                objCmd.Parameters[9].Value = row["gjscholarship"].ToString();
                objCmd.Parameters[10].Value = row["greenroad"].ToString();
                objCmd.Parameters[11].Value = row["shenfenzheng"].ToString();
                objCmd.Parameters[12].Value = row["phone"].ToString();
                objCmd.ExecuteNonQuery();
            }
            #endregion
            objCmd.Connection.Close();

            //提供下载
            //清除临时文件
            HttpResponse response = HttpContext.Current.Response;
            response.Clear();
            //为输出作准备
            response.WriteFile(physicPath + fileName);
            string saveFile = "学生信息_" + DateTime.Today.ToString("yyyy-MM-dd");
            saveFile = System.Web.HttpUtility.UrlEncode(saveFile, System.Text.Encoding.UTF8);
            string httpHeader = "attachment;filename=" + saveFile + ".xls";
            response.AppendHeader("Content-Disposition", httpHeader);
            response.Flush();
            if (System.IO.File.Exists(physicPath + fileName))
            {
                System.IO.File.SetAttributes(physicPath + fileName, System.IO.FileAttributes.Normal);
                System.IO.File.Delete(physicPath + fileName);
            }
            response.End();
        }
        catch(Exception e1)
        {
            ShowMessage(e1.ToString());
        }
        GridBind();
    }
------解决方案--------------------


随环境变化而产生的问题,一般和代码关系不大。
可以考虑逐步排除法来排除问题。
像你遇到的这个问题,具体是按钮事件没有触发,还是数据访问的时候出现了异常(是路径有没有访问权限,oleb访问的时候出现异常了),这个要分析清楚。
[解决办法]
把你的try..catch删除掉,并且将web.config中的customerErrors Mode设置从Customer改为Off,让异常显示在网页上。

这样你才能调试,才能知道哪一行代码上有bug。如果你连哪一行代码抛出的异常都不知道,更别说在vs的调试器里调试了,又怎么搞专业开发呢?

不要滥用try...catch。
[解决办法]
asp.net在本土导出excel正常,发布之后,导出按钮失效,点了没反应帮顶!

热点排行