文章出處

 

我實現了XAF項目中Excel數據的導入,使用Devexpress 新出的spreadsheet控件,可能也不新了吧:D

好,先看一下效果圖:下圖是Web版本的。

下面是win版:

 

功能說明:

支持從Excel任意版本導入數據,可以使用 打開文件功能選擇現有的文件,沒有模板時,請來到上圖界面中,另存為Excel到本地,往模板上填加數據。

導入時使用了顯示名稱進行匹配字段,所以字段部分不要修改。

導入時會使用你在寫好的驗證規則。

支持Win+Web兩個版本。

使用方法:

 

第一步:將Admiral.ImportData模塊拖到你的項目的模塊中去,上圖為例,我將把Admiral.ImportData拖到圖中A項目中,即MFBI.Module中去。

第二步:將Admiral.ImportData.Web 拖到B中。

第三步:將Admiral.ImportData.Win拖到C中。

你不知道模塊在哪里?請看下圖:

先打開solution 中的Module.cs, 然后從toolbox拖動ImportDataModule到Required Modules中。

當然這是把源碼直接放到項目中去的方法,如果想直接使用DLL,可以編譯好后,在toolbox中填加選擇項,選擇路徑后,再進行拖動。

 

再來看看代碼中的設置:

以下代碼中有兩處標紅的,第一必須實現IImportData接口才可能導入,這個接口是空的,不用實現。DomainComponent也可以這樣使用。

對于普通的字段,沒有其他設置。

對于引用型字段,需要[ImportDefaultFilterCriteria("編碼=?")]這樣,來設置將來查找引用類型的值時,用什么條件進行查找,當然問號會被替換為Excel中真實的值。

    [XafDisplayName("銷量明細")]
    [NavigationItem("銷售模塊")]
    public class 銷量明細 : BaseObject,IImportData
    {
        public 銷量明細(Session s) : base(s)
        {

        }

        private 訂單 _訂單;
        [Association]

[ImportDefaultFilterCriteria("編碼=?")]
public 訂單 訂單 { get { return _訂單; } set { SetPropertyValue("訂單", ref _訂單, value); } } ...... }

 

當前模塊還比較簡單 ,以后會慢慢完善。

 

 20160128已經更新了支持win下面除了ribbon以外其他的界面類型。

 

2016-3-17 將源碼發布到github.

地址:https://github.com/tylike/Admiral.ImportData

修復了幾個小BUG。

增加了更新導入功能,在業務對象上面寫[UpdateImport("屬性名稱")],其中屬性名稱是指,在導入時,使用哪個屬性的值 Excel->庫中的 進行比較,來確定此對象是否存在。

增加了[ImportOptions(false)]屬性,可以寫在屬性或字段上面,設置為false時,即在導入時不顯示此字段。

增加給Winform增加了圖標。

導入完成后,在Excel中給出了提示信息,成功或不成功。

在查找引用屬性時,如果沒有使用ImportDefaultFilterCriteria屬性進行設置,則按如下優先級進行:

1.看主鍵是否是非自動生成的,是,則使用主鍵查找。

2.看引用類上面是否有[RuleUniqueValue]標記的屬性,有則使用。

3.看DefaultProperty是否有設置,有則使用。

2016-7-5日更新說明:

增加了FindObjectProviderAttribute,用于提升性能.

需要加速的類上面寫這個Attribute即可.

 2016-7-14日更新說明:

Excel導入模塊增加了DC的支持,WEB下面可用。增加了Nullable類型的支持,并補全了數字類型的支持。

為了支持web下面新風格皮膚,增加了兩個變量:

這兩個變量可以在global.asax中進行設置:

1.ASPxSpreadsheetPropertyEditor.IsNewStyle = true; //如果使用了新風格時,需要設置此變量.

2.ASPxSpreadsheetPropertyEditor.SkinName="Aqua"; //由于Spreadsheet控件沒有支持新風格,所以這里可以可以手工指定另一個風格,否則顯示界面混亂

 

 

轉載請注明出處。多謝!

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()