天天看點

基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出

在Winform裡面,我們處理Excel資料導入的界面如下所示。

在Web上的主界面如下所示。

基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出

導入界面如下所示。

基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出

為了實作Web上的資料導入導出操作,我們需要增加兩個按鈕,一個是導入按鈕,一個是導出按鈕。

導入的JS處理代碼如下所示。

上面主要就是彈出一個視窗(上面的導入資料視窗),用來友善客戶選擇Excel檔案并儲存資料或者下載下傳導入模闆等操作的。

然後在Import.cshtml的視圖代碼裡面,我們需要初始化Datagrid和相關的界面元素,初始化DataGrid的代碼如下所示。

上面紅色部分的内容,就是我們在檔案順利上傳到伺服器上的時候,根據一個guid的參數初始化DataGrid的清單資料。

下面是附件上傳控件uploadify的初始化腳本代碼,其中紅色部分注意一下,我們需要上傳的是一個檔案,并且不允許多選,限定上傳檔案的類型為xls。

檔案上傳完成後,首先調用CheckExcelColumns控制器函數來檢查是否比對導入模闆的字段,如果比對通過,加載Excel并展示資料到Datagrid裡面,否則提示使用者按模闆格式錄入資料。

為了有效處理資料的導入,我們需要嚴格保證導入的資料是和模闆的字段是比對的,否則處理容易出錯,也沒有任何意義。為了實作這個目的,架構裡面提供方法對字段進行檢查,主要是確定Excel裡面包含了完整的字段即可。

而在InitGrid的初始化中的這個GetExcelData的控制器方法如下所示。主要的邏輯就是擷取到Excel,并把Excel裡面的資料轉換為DataTable,最後初始化為實體類清單,并傳回給調用頁面就可以了。

剛才介紹了資料的導入操作,資料的導出操作相對簡單一些,它的JS函數操作如下所示。

雖然資料的導出比較簡單一點,但是由于我們需要使用POST方式對資料條件進行送出,是以不像普通的方式下載下傳檔案Window.Open(url)就可以實作檔案下載下傳了。如果POST方式送出了參數,那麼傳回的資料即使是檔案流,也無法進行有效的下載下傳。

從上面的腳本我們可以看到,裡面的exportCondition就是我們需要送出到伺服器的條件,伺服器根據這個條件進行檢索資料,并傳回一個Excel檔案就可以了。

由于使用ajax這種POST方式無法直接下載下傳檔案流,是以,我們需要先根據條件,在伺服器上生成檔案,傳回一個檔案路徑,再次通過DownloadFile方法進行檔案的下載下傳才可以。

是以這個傳遞的條件也是很重要的,在查詢操作的時候,我們可以把對應的條件傳遞給它。

在我們標明某個樹的節點的時候,我們也可以傳遞自定義的條件給它。

背景的Export控制器方法主要的邏輯如下所示。

基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出

最終是傳回一個生成好的檔案位址。

最後給一個方法直接下載下傳檔案就可以了。

導出的Excel界面效果如下所示。

基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出

由于篇幅的原因,這個導入導出的操作就介紹到這裡,希望有問題大家共同探讨。

<a href="http://www.cnblogs.com/wuhuacong/p/3281103.html">基于MVC4+EasyUI的Web開發架構形成之旅--總體介紹</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3317223.html">基于MVC4+EasyUI的Web開發架構形成之旅--界面控件的使用</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3343967.html">基于MVC4+EasyUI的Web開發架構形成之旅--附件上傳元件uploadify的使用</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3344096.html">基于MVC4+EasyUI的Web開發架構形成之旅--架構總體界面介紹</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3352016.html">基于MVC4+EasyUI的Web開發架構形成之旅--基類控制器CRUD的操作</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3361351.html">基于MVC4+EasyUI的Web開發架構形成之旅--權限控制</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3667703.html">基于MVC4+EasyUI的Web開發架構經驗總結(1)-利用jQuery Tags Input 插件顯示選擇記錄</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3669575.html">基于MVC4+EasyUI的Web開發架構經驗總結(2)- 使用EasyUI的樹控件建構Web界面</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3669708.html">基于MVC4+EasyUI的Web開發架構經驗總結(3)- 使用Json實體類建構菜單資料</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3736564.html">基于MVC4+EasyUI的Web開發架構經驗總結(4)--使用圖表控件Highcharts</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3780356.html">基于MVC4+EasyUI的Web開發架構經驗總結(5)--使用HTML編輯控件CKEditor和CKFinder</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3840321.html">基于MVC4+EasyUI的Web開發架構經驗總結(6)--在頁面中應用下拉清單的處理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3841338.html">基于MVC4+EasyUI的Web開發架構經驗總結(7)--實作省份、城市、行政區三者關聯</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3871991.html">基于MVC4+EasyUI的Web開發架構經驗總結(8)--實作Office文檔的預覽</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3872890.html">基于MVC4+EasyUI的Web開發架構經驗總結(9)--在Datagrid裡面實作外鍵字段的轉義操作</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3873498.html">基于MVC4+EasyUI的Web開發架構經驗總結(10)--在Web界面上實作資料的導入和導出</a>

<a href="http://www.cnblogs.com/wuhuacong/p/4073203.html">基于MVC4+EasyUI的Web開發架構經驗總結(11)--使用Bundles處理簡化頁面代碼</a>

<a href="http://www.cnblogs.com/wuhuacong/p/4085682.html">基于MVC4+EasyUI的Web開發架構經驗總結(12)--利用Jquery處理資料互動的幾種方式</a>

<a href="http://www.cnblogs.com/wuhuacong/p/4085725.html">基于MVC4+EasyUI的Web開發架構經驗總結(13)--DataGrid控件實作自動适應寬帶高度</a>

<a href="http://www.cnblogs.com/wuhuacong/p/4093778.html">基于MVC4+EasyUI的Web開發架構經驗總結(14)--自動生成圖示樣式檔案和圖示的選擇操作</a>