在页面上导入个excel文件,将该excel中的数据导入到数据库中,并且在页面的gridview中把数据显示出来. |
1.在Asp.net中怎样将Excel文件中的数据导入到GridView中呢? |
首先我们将这张表中的数据转换为DataTable类型的数据源,做一个函数来解决这个问题 |
private DataTable createDataSource(string strPath) |
{ |
stringstrCon; |
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + ";Extended Properties=Excel 8.0" ; |
OleDbConnectioncon = new OleDbConnection(strCon); |
OleDbDataAdapterda = new OleDbDataAdapter( "select * from [Sheet1$]" , con); |
DataTabledt = new DataTable(); |
da.Fill(dt); |
returndt; |
} |
只需要传入Excel文件的路径即可。 |
其次我们就是利用这个可以函数了。要想将客户端的Excel文件显示到客户端的GridView控件当中,这次都是客户端的东西,在我们的服务器端代码是无法做到的。所以我们必须把这个Excel文件暂时的保存到服务器,我们读取服务器端的文件才可以实现这样的功能。看下面的实现代码: |
protected void Button1_Click(objectsender, EventArgs e) |
{ |
//检查文件是否存在 |
if (FileUpload1.HasFile == false ) //HasFile用来检查FileUpload是否有指定文件 |
{ |
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message" , "<script language='javascript' defer>alert('请您选择Excel文件!');</script>" ); |
return ; //当无文件时,返回 |
} |
|
stringfilename = DateTime.Now.ToString( "yyyymmddhhMMss" ) +FileUpload1.FileName; |
//获取Execle文件名 DateTime日期函数 |
stringsavePath = Server.MapPath(( "~/Doc/" )+ filename); //Server.MapPath 获得虚拟服务器相对路径 |
|
//如果已经存在就清空 |
ClearFile(Server.MapPath( "~/Doc/" )); |
|
FileUpload1.SaveAs(savePath); //SaveAs将上传的文件内容保存在服务器上 |
|
|
DataTabledt = createDataSource(savePath); |
GridView1.DataSource = dt; |
GridView1.DataBind(); |
|
} |
在上面的代码中我们用到了一个函数ClearFile,它是用来清理文件夹的,我们将Excel文件暂时的存储到服务器端的一个文件夹中,只能暂时的存储,那么东西只会越来越多,而且这些东西也是一些没用的东西,很可能导致系统性能的下降。我们就是用这个函数来清理文件的,下面来一睹这个函数的精妙: |
private void ClearFile(stringFilePath) |
{ |
String[]files = System.IO.Directory.GetFiles(FilePath); |
if (files.Length > 5) |
{ |
for ( int i = 0; i < 5; i++) |
{ |
try |
{ |
System.IO.File.Delete(files[i]); |
} |
catch |
{ |
} |
|
} |
} |
} |