|
在Asp.net中怎樣將Excel文件中的數(shù)據(jù)導(dǎo)入到GridView中呢?下面我來為大家說說這個(gè)詳細(xì)的過程。Excel文件就是一張數(shù)據(jù)表,當(dāng)然我們可以把它看作一個(gè)數(shù)據(jù)源了。
首先我們將這張表中的數(shù)據(jù)轉(zhuǎn)換為DataTable類型的數(shù)據(jù)源,做一個(gè)函數(shù)來解決這個(gè)問題:
- private DataTable createDataSource(string strPath)
- {
- stringstrCon;
- strCon = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=" + 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文件的路徑即可。
其次我們就是利用這個(gè)可以函數(shù)了。要想將客戶端的Excel文件顯示到客戶端的GridView控件當(dāng)中,這次都是客戶端的東西,在我們的服務(wù)器端代碼是無法做到的。所以我們必須把這個(gè)Excel文件暫時(shí)的保存到服務(wù)器,我們讀取服務(wù)器端的文件才可以實(shí)現(xiàn)這樣的功能??聪旅娴膶?shí)現(xiàn)代碼:
- protected void Button1_Click(objectsender, EventArgs e)
- {
- //檢查文件是否存在
- if(FileUpload1.HasFile == false)//HasFile用來檢查FileUpload是否有指定文件
- {
- Page.ClientScript.RegisterStartupScript(Page.GetType(),"message", "<script language='javascript' defer>alert('請(qǐng)您選擇Excel文件!');</script>");
- return;//當(dāng)無文件時(shí),返回
- }
-
- stringfilename = DateTime.Now.ToString("yyyymmddhhMMss") +FileUpload1.FileName;
- //獲取Execle文件名 DateTime日期函數(shù)
- stringsavePath = Server.MapPath(("~/Doc/")+ filename);//Server.MapPath 獲得虛擬服務(wù)器相對(duì)路徑
-
- //如果已經(jīng)存在就清空
- ClearFile(Server.MapPath("~/Doc/"));
-
- FileUpload1.SaveAs(savePath); //SaveAs將上傳的文件內(nèi)容保存在服務(wù)器上
-
-
- DataTabledt = createDataSource(savePath);
- GridView1.DataSource = dt;
- GridView1.DataBind();
-
- }
在上面的代碼中我們用到了一個(gè)函數(shù)ClearFile,它是用來清理文件夾的,我們將Excel文件暫時(shí)的存儲(chǔ)到服務(wù)器端的一個(gè)文件夾中,只能暫時(shí)的存儲(chǔ),那么東西只會(huì)越來越多,而且這些東西也是一些沒用的東西,很可能導(dǎo)致系統(tǒng)性能的下降。我們就是用這個(gè)函數(shù)來清理文件的,下面來一睹這個(gè)函數(shù)的精妙:
- 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
- {
- }
-
- }
- }
- }
|