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

一个EXCEL进程的有关问题

2012-01-08 
一个EXCEL进程的问题最近我做一个管理系统,要用到excel的上传功能。要在上传后删除excel文件,我是要做的:我

一个EXCEL进程的问题
最近我做一个管理系统,要用到excel的上传功能。要在上传后删除excel文件,我是要做的:
我一个excel文件里面有2个sheet   都要上传
按钮事件我是主要写的:
  protected   void   BtnUpload_Click(object   sender,   EventArgs   e)
        {
              string   fileName   =   this.FileUpload1.FileName;
              string   UploadFileName   =   Request.MapPath(Request.ApplicationPath   +   "\\ "   +   System.IO.Path.GetFileName(fileName));
              A();
              GC.Collect();
              System.IO.File.Delete(UploadFileName);
              B();
              GC.Collect();
              System.IO.File.Delete(UploadFileName);
              System.GC.Collect();
          }
protected   voidA()
        {
                string   fileName   =   this.FileUpload1.FileName;
                string   UploadFileName   =   Request.MapPath(Request.ApplicationPath   +   "\\ "   +   System.IO.Path.GetFileName(fileName));
                this.FileUpload1.PostedFile.SaveAs(UploadFileName);
                string   ConnStr   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "   +   UploadFileName   +   ";Extended   Properties=Excel   8.0 ";
                string   query   =   "SELECT   *   FROM   [提取物生产信息$] ";
                ................................
                try
                {
                        OleDbConnection   oleconn   =   new   OleDbConnection(ConnStr);
                        oleconn.Open();

                        OleDbCommand   oleCommand   =   new   OleDbCommand(query,   oleconn);
                        OleDbDataReader   rdr;
                        rdr   =   oleCommand.ExecuteReader();
                        if   (rdr.Read())//多读一行   可在EXCEL里面加一行
                        {
                                SqlConnection   conn   =   new   SqlConnection
                                (ConfigurationManager.ConnectionStrings[ "sqlConnString "].ToString());
                                conn.Open();


                                SqlCommand   dbcmd   =   new   SqlCommand(sql_inst,   conn);
                                  .............................
                                conn.Close();
                        }
                        rdr.Close();
                        oleconn.Close();
                }
                catch
                {
                        labelError.Visible   =   true;
                }
        }
protected   void   B(){...............}
有的地方我省略了。B和A方法差不多
  string   query   =   "SELECT   *   FROM   [提取物生产信息$] ";中[提取物生产信息$]是sheet名。如果这个名字是对的,程序运行没有错误。如果传上来的表是错的,我加了try   就是为了解决这个问题。但在System.IO.File.Delete(UploadFileName);这的时候提示excel被其他进程占用。   GC.Collect();是我用来释放进程的,我以为是没有运行到这一步。我加了断点进行调试,结果一切正常。但运行的时候就始终出错。
各位看看   是怎么回事情,或者有什么更好的办法?


[解决办法]
试试加finally,在里面把oleconn Close掉.

热点排行