坎尼的朋友就問:那有沒有上傳的?
當然有,要什麼有什麼 :D
I. 實作過程
首先,建立一個 WebUserControl
加入一個 FileUpload、兩個 Button、一個 GridView
- FileUpload 及上傳按鈕用來進行檔案上傳的動作
- 確認按鈕則是給使用者自行定義事件
- GridView 用來顯示上傳完成的檔案
建立委派事件
接著建立 User 可以委派的事件:ImportToDB 確認按鈕的 Click 事件則去呼叫 User 的委派事件
建立屬性
建立上傳資料屬性,以利使用者進行後續的資料匯入動作 由於 PostBack 之後不會記住屬性的資料
所以用 ViewState 把資料記住,並在 Page_Load 事件檢查
上傳按鈕事件
- 第一個紅框為呼叫 NPOI 上傳事件
把 Excel 內容傳到 DataTable 之中並回傳 - 第二個紅框為將資料存到 ViewState 之中
另外把確認按鈕改成可作用 - 第三個紅框則是把資料顯示到畫面上
NPOI 匯入事件
這邊的程式碼引用 hunterpo 大所寫的 利用 NPOI Library 合併多個 Excel 檔但要注意的一點是,1.2.3 版本的 NPOI 在以下紅框處需進行轉型的動作
II. 使用方法
建立新的頁面,把 User Control 放到畫面上另外再加入一個 GridView,用來確認資料是否真的上傳到 server
自行撰寫事件
這邊可以看到坎尼自己定義了新的事件:ImportToDB動作只是很簡單地判斷 UserControl 的 DataTable 有沒有資料
有的話就把資料繫結到畫面上的 GridView 之中
執行畫面
上傳資料,成功的話 UserControl 會將資料顯示出來點下確認之後,使用者自行定義的事件會把資料繫結到另一個 GridView
大功告成!!!
III. 小結
本次範例是用 NPOI 1.2.3 寫的 (上一篇是用舊版)所以還沒用此版本的讀者記得去 codeplex 下載新版本
另外上傳的 Excel 檔案需為 97-2003 的格式
若是用 office 2007 或是 office 2010 的朋友,記得改存為舊格式
此次的範例下載 (含 npoi library)
參考資料:
2 則留言:
大哥! 你的範例檔案連結失效了.
已補上新連結 :)
之前使用網頁空間失效了,如果還有發現連結消失的情形,歡迎來信告知 :D
張貼留言