代码如下:
protected void Button3_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
        {
            Response.Write("<script>alert('请您选择Excel文件')</script> ");
            return;//当无文件时,返回
        }
        string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
        if (IsXls != ".xls")
        {
            Response.Write("<script>alert('只可以选择Excel文件')</script>");
            return;//当选择的不是Excel文件时,返回
        }
        SqlConnection cn = new SqlConnection(strConn);
        cn.Open();
        string filename = DateTime.Now.ToString("yyyyMMddhhmmss") + FileUpload1.FileName;              //获取Execle文件名 DateTime日期函数
        string savePath = Server.MapPath("~\\upfiles\\" + filename);//Server.MapPath 获得虚拟服务器相对路径
        FileUpload1.SaveAs(savePath);             //SaveAs 将上传的文件内容保存在服务器上
        DataSet ds = ExecleDs(savePath, filename);           //调用自定义方法
        DataRow[] dr = ds.Tables[0].Select();            //定义一个DataRow数组
        int rowsnum = ds.Tables[0].Rows.Count;
        if (rowsnum == 0)
        {
            Response.Write("<script>alert('Excel表为空表,无数据!')</script>");   //当Excel表为空时,对用户进行提示
        }
        else
        {
            int a = 0;
            string b = "";
            for (int i = 0; i < dr.Length; i++)
            {
                string 编号 = dr[i]["编号"].ToString();
                string 书名 = dr[i]["书名"].ToString();
                string 作者 = dr[i]["作者"].ToString();
                string 价格 = dr[i]["价格"].ToString();
                string 出版社 = dr[i]["出版社"].ToString();
                if (编号.Trim() != "" && 书名.Trim() != "")
                {
                    string sqlcheck = "select count(*) from books where 编号='" + 编号.Trim() + "'"; //检查图书是否存在
                    SqlCommand sqlcmd = new SqlCommand(sqlcheck, cn);
                    int count = Convert.ToInt32(sqlcmd.ExecuteScalar());
                    if (count < 1)
                    {
                        string insertstr = "insert into books (编号,书名,作者,价格,出版社,可借天数,库存,借阅次数) values('" + 编号 + "','" + 书名 + "','" + 作者 + "','" + 价格 + "','" + 出版社 + "',20,1,0)";                        SqlCommand cmd = new SqlCommand(insertstr, cn);
                        try
                        {
                            cmd.ExecuteNonQuery();
                            a = a + 1;
                        }
                        catch (MembershipCreateUserException ex)       //捕捉异常
                        {
                            Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>");
                        }
                    }
                    else
                    {
                        b = b + 编号 + "  ";
                    }
                }      
            }
            Response.Write("<script>alert('共导入" + a + "条数据!重复数据:" + b + "');location='管理图书.aspx'</script>");
            cn.Close();
        }
    }现在能顺利实现导入功能,但是导入后excel会保存这个upfiles文件夹里,我想实现的是,导入成功后删除上传的excel,在线等,谢谢了

解决方案 »

  1.   

    导入后关闭EXCEL进程,在删除文件File.Delete("");
    xlApp.Workbooks.Close();
      xlApp.Quit();
      System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
      System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
      System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
      xlApp = null;
      wb = null;
      ws = null;
    System.Diagnostics.Process myproc= new System.Diagnostics.Process();
    foreach (Process thisproc in Process.GetProcessesByName(processName)) {
    if(!thisproc.CloseMainWindow()){
    thisproc.Kill();
    }}
      

  2.   

        public static void DeleteFolder(string dirpath)// 递归删除文件夹目录及文件
        {
            if (Directory.Exists(dirpath)) //如果存在这个文件夹删除之 
            {// 递归删除文件夹目录及文件
                foreach (string d in Directory.GetFileSystemEntries(dirpath))
                {
                    if (File.Exists(d))
                    {
                        File.Delete(d); //直接删除其中的文件
                    }
                    else
                    {
                        DeleteFolder(d); //递归删除子文件夹,
                    }
                }
                Directory.Delete(dirpath, true); //删除已空文件夹,                 
            }
        }
      

  3.   

    先关闭excel进程
    if(File.exits(Server.Mappath(savePath)))
      File.Delete(Server.Mappath(savePath))