使用ModalDialog选择EXCEL,导入数据到数据库

1.效果: 主页面有一【导入】按钮,点击此按钮,弹出对话框,可以选择EXCEL文件,确定,将EXCEL中的数据导入到数据库。

   原理:上传到服务器的指定目录,读取文件

2.使用了两个页面,Main.aspx和OpenFile.aspx

  受先是在Main.aspx中添加打开OpenFile.aspx页面的代码

   var ret = window.showModalDialog("/Project/ECEP_Plan/OpenFile.aspx", "这里可以传递参数过去","Scrollbars=no;Toolbar=no;Location=no;Direction=no;Resizeable=no;dialogWidth=570px;dialogHeight=200px;top="+iTop+";left="+iLeft);

 if(ret)

 {

     //处理返回值

      var path = ret[0]; //文件路径

     var sheet = ret[1];//读取的Sheet的名称

}

3.OpenFile.aspx页面代码


function DoReturn()//确定按钮执行的函数
  {
      //这里可以接受参数
     // alert(window.dialogArguments);
      var path = document.getElementById("File").value;
      var sheet = GetSheetName(path);//document.getElementById("Sheet").value;
      if(path == "" || sheet == "")
      {alert("请选择EXCEL文件!");return;}//并填写EXCEL中的工作表格名称!");return;}
      document.getElementById("ButtonSave").disabled=true;
      //document.getElementById("Loading").style.display="";
      //将文件上传到服务器
      var date = new Date();
      var fileName = path.substring(path.lastIndexOf("\\")+1,path.length);
      fileName = date.toLocaleDateString()+date.getHours()+date.getMinutes()+date.getSeconds()+"_"+fileName;
    
      //返回文件名和Sheet名
      var ret = new Array();
      ret[0]="/project/UploadFile/"+fileName;
      ret[1] = sheet;
      window.returnValue = ret;
    
      //submit
      document.Form1.action="/project/ECEP_Plan/OpenFile.aspx?FileName="+fileName; 
         //document.Form1.target="_self";  
         document.Form1.submit();  
         window.close();
     
      
     
  }
  function GetSheetName(path)//获取EXCEL中第一个Sheet的名字
  {
     var sheetName = "";
   if(path && path !="")
   {
    //声明excelApplication对象(启动Excel程序)
       var excelApp = new ActiveXObject("Excel.Application");
    var book = excelApp.WorkBooks.Open(path);
       sheetName =book.Activesheet.Name ;
    
    //关闭EXCEL程序
    excelApp.Quit();
    
   }
   return sheetName;
  }
  

   3.这里需要注意一点:文件选择控件是以服务器控件运行的,也就是说它的属性runat="sever"
在DoReturn()函数中,有段代码是用来submit整个Form,因为只有将文件控件提交到服务器,才能将客户端文件上传到服务器。

另外在Head中加一行<BASE target="_self">,因为提交页面后会弹出一个新的页面,要避免这中情况的发生,必须加这句代码。

4.OpenFile.aspx.cs后台代码

private void Page_Load(object sender, System.EventArgs e)
  {
    this.UpLoadFile(this.Request["FileName"]);
  }

  private void UpLoadFile(string fileName)
  {
   if(fileName != null && fileName != "")
   this.File.PostedFile.SaveAs(Server.MapPath("/Project/UploadFile/")+fileName);

  // 将文件上传到服务器很简单,只有一句代码
  }

Over   就这么多

posted @ 2007-06-27 01:02  meteorcui  阅读(573)  评论(0编辑  收藏  举报