使用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,因为只有将文件控件提交到服务器,才能将客户端文件上传到服务器。
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 就这么多