SharePoint开发 - Excel数据导入到SharePoint自定义列表(数据视图方式)
生活随笔
收集整理的這篇文章主要介紹了
SharePoint开发 - Excel数据导入到SharePoint自定义列表(数据视图方式)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
博客地址 http://blog.csdn.net/foxdave
本篇講解一個有些新穎的SharePoint實例應用,給甲方做過項目的都有過體會,數(shù)據(jù)太多了,客戶有Excel,要求實現(xiàn)批量導入。
效果圖大致如下所示
此實例是借用列表的數(shù)據(jù)視圖實現(xiàn)導入,數(shù)據(jù)視圖類似Excel,所以可以直接在上面編輯,甚至從Excel中直接粘貼進去,然后點擊保存將數(shù)據(jù)插入到列表中。
首先,我們需要有一個列表,這個列表的字段跟Excel是對應的,在我的實例中選擇創(chuàng)建列表定義及列表實例(怎么創(chuàng)建項目不多廢話了)
創(chuàng)建方法戳這里
寫完列表實例之后,添加一個作用于列表的事件接收器,用來處理后臺操作。添加一個事件接收器,勾選正在刪除、已添加和已更新事件,完成創(chuàng)建。
編寫核心代碼就可以了,在我們的實際應用中,做了一個臨時表用來處理這里的數(shù)據(jù),點擊頁面的保存之后再轉到真實的數(shù)據(jù)表。
/// <summary>/// 正在刪除項./// </summary>public override void ItemDeleting(SPItemEventProperties properties){base.ItemDeleting(properties);SPListItem item = properties.ListItem;SPMIPEntities entities = new SPMIPEntities();string uniqueId = item.UniqueId.ToString();ZY_YeZhqdjch_Temp temp = (from p in entities.ZY_YeZhqdjch_Temp where p.UniqueId.Equals(uniqueId) select p).FirstOrDefault();entities.DeleteObject(temp);entities.SaveChanges();}/// <summary>/// 已添加項./// </summary>public override void ItemAdded(SPItemEventProperties properties){base.ItemAdded(properties);SPListItem item = properties.ListItem;SPMIPEntities entities = new SPMIPEntities();ZY_YeZhqdjch_Temp temp = new ZY_YeZhqdjch_Temp();string a = properties.UserLoginName;//獲取登錄者賬號string username = properties.UserLoginName.Substring(properties.UserLoginName.IndexOf("spmipmp|") + 8);var list = from p in entities.SYS_User where (p.UserCode.Equals(username)) select new { p.UserCode, p.Zhi_gid };DataTable dt = IQueryableExtensions.ToDataTable(list);//獲取登錄者IDtemp.Chuang_jzh = Convert.ToInt32(dt.Rows[0]["Zhi_gid"]);temp.UniqueId = item.UniqueId.ToString();if (item["業(yè)主清單編碼"] == null) { temp.Ye_zhqdbm = ""; }else { temp.Ye_zhqdbm = item["業(yè)主清單編碼"].ToString(); }if (item["業(yè)主清單名稱"] == null) { temp.Ye_zhqdmch = ""; }else { temp.Ye_zhqdmch = item["業(yè)主清單名稱"].ToString(); }if (item["清單項目特征"] == null) { temp.Qing_dxmtzh = ""; }else { temp.Qing_dxmtzh = item["清單項目特征"].ToString(); }if (item["單位"] == null) { temp.Dan_w = ""; }else { temp.Dan_w = item["單位"].ToString(); }if (item["清單量"] == null) { temp.Qing_dl = 0; }else { temp.Qing_dl = Convert.ToDecimal(item["清單量"]); }if (item["簽證量"] == null) { temp.Qian_zhl = 0; }else { temp.Qian_zhl = Convert.ToDecimal(item["簽證量"]); }if (item["驗收量"] == null) { temp.Yan_shl = 0; }else { temp.Yan_shl = Convert.ToDecimal(item["驗收量"]); }if (item["合同單價"] == null) { temp.He_tdj = 0; }else { temp.He_tdj = Convert.ToDecimal(item["合同單價"]); }if (item["業(yè)主簽認單價"] == null) { temp.Ye_zhqrdj = 0; }else { temp.Ye_zhqrdj = Convert.ToDecimal(item["業(yè)主簽認單價"]); }if (item["預計決算單價"] == null) { temp.Yu_jjsdj = 0; }else { temp.Yu_jjsdj = Convert.ToDecimal(item["預計決算單價"]); }if (item["預計審減比例"] == null) { temp.Yu_jshjbl = 0; }else { temp.Yu_jshjbl = Convert.ToDecimal(item["預計審減比例"]); }if (item["決算單價"] == null) { temp.Jue_sdj = 0; }else { temp.Jue_sdj = Convert.ToDecimal(item["決算單價"]); }entities.AddToZY_YeZhqdjch_Temp(temp);entities.SaveChanges();}/// <summary>/// 已更新項./// </summary>public override void ItemUpdated(SPItemEventProperties properties){base.ItemUpdated(properties);SPListItem item = properties.ListItem;SPMIPEntities entities = new SPMIPEntities();string uniqueId = item.UniqueId.ToString();ZY_YeZhqdjch_Temp temp = (from p in entities.ZY_YeZhqdjch_Temp where p.UniqueId.Equals(uniqueId) select p).FirstOrDefault();//獲取登錄者賬號string username = properties.UserLoginName.Substring(properties.UserLoginName.IndexOf("spmipmp|") + 8);var list = from p in entities.SYS_User where (p.UserCode.Equals(username)) select new { p.UserCode, p.Zhi_gid };DataTable dt = IQueryableExtensions.ToDataTable(list);//獲取登錄者IDtemp.Chuang_jzh = Convert.ToInt32(dt.Rows[0]["Zhi_gid"]);if (item["業(yè)主清單編碼"] == null) { temp.Ye_zhqdbm = ""; }else { temp.Ye_zhqdbm = item["業(yè)主清單編碼"].ToString(); }if (item["業(yè)主清單名稱"] == null) { temp.Ye_zhqdmch = ""; }else { temp.Ye_zhqdmch = item["業(yè)主清單名稱"].ToString(); }if (item["清單項目特征"] == null) { temp.Qing_dxmtzh = ""; }else { temp.Qing_dxmtzh = item["清單項目特征"].ToString(); }if (item["單位"] == null) { temp.Dan_w = ""; }else { temp.Dan_w = item["單位"].ToString(); }if (item["清單量"] == null) { temp.Qing_dl = 0; }else { temp.Qing_dl = Convert.ToDecimal(item["清單量"]); }if (item["簽證量"] == null) { temp.Qian_zhl = 0; }else { temp.Qian_zhl = Convert.ToDecimal(item["簽證量"]); }if (item["驗收量"] == null) { temp.Yan_shl = 0; }else { temp.Yan_shl = Convert.ToDecimal(item["驗收量"]); }if (item["合同單價"] == null) { temp.He_tdj = 0; }else { temp.He_tdj = Convert.ToDecimal(item["合同單價"]); }if (item["業(yè)主簽認單價"] == null) { temp.Ye_zhqrdj = 0; }else { temp.Ye_zhqrdj = Convert.ToDecimal(item["業(yè)主簽認單價"]); }if (item["預計決算單價"] == null) { temp.Yu_jjsdj = 0; }else { temp.Yu_jjsdj = Convert.ToDecimal(item["預計決算單價"]); }if (item["預計審減比例"] == null) { temp.Yu_jshjbl = 0; }else { temp.Yu_jshjbl = Convert.ToDecimal(item["預計審減比例"]); }if (item["決算單價"] == null) { temp.Jue_sdj = 0; }else { temp.Jue_sdj = Convert.ToDecimal(item["決算單價"]); }entities.SaveChanges();}接下來,我們想更自動化一些,自動創(chuàng)建出這個列表的數(shù)據(jù)視圖并設置為默認視圖,用于專門的導入操作
處理FeatureActivated事件,實例中的核心代碼如下
SPWeb _web = properties.Feature.Parent as SPWeb;SPList list = _web.Lists.TryGetList("業(yè)主清單基礎導入");SPList listTwo = _web.Lists.TryGetList("內部清單基礎導入");SPView newView = null;SPView newViewTwo = null;string strQuery = default(string);string strQueryTwo = default(string);StringCollection strCol = new StringCollection();StringCollection strColTwo = new StringCollection();newView = list.Views.Cast<SPView>().FirstOrDefault(v => v.Title == "業(yè)主清單基礎");if (newView == null){strCol.Clear();strCol.Add("Title");strCol.Add("Ye_zhqdmch");strCol.Add("Qing_dxmtzh");strCol.Add("Dan_w");strCol.Add("Qing_dl");strCol.Add("Qian_zhl");strCol.Add("Yan_shl");strCol.Add("He_tdj");strCol.Add("Ye_zhqrdj");strCol.Add("Yu_jjsdj");strCol.Add("Yu_jshjbl");strCol.Add("Jue_sdj");newView = list.Views.Add("Default", strCol, strQuery, 30, true/**//*是否支持分頁*/, true/**//*是否是默認視圖*/,Microsoft.SharePoint.SPViewCollection.SPViewType.Grid, false);newView.Title = "業(yè)主清單基礎";newView.Update();}newViewTwo = listTwo.Views.Cast<SPView>().FirstOrDefault(v => v.Title == "內部清單基礎");if (newViewTwo == null){strColTwo.Clear();strColTwo.Add("Title");strColTwo.Add("Nei_bqdbm");strColTwo.Add("Nei_bqdmch");strColTwo.Add("Xiang_mtzh");strColTwo.Add("Dan_w");strColTwo.Add("Gong_chshl");strColTwo.Add("Ding_e");strColTwo.Add("Ren_gf");strColTwo.Add("Ji_xf");strColTwo.Add("Qu_ybm");strColTwo.Add("Qu_ymch");newViewTwo = listTwo.Views.Add("Default", strColTwo, strQueryTwo, 30, true/**//*是否支持分頁*/, true/**//*是否是默認視圖*/,Microsoft.SharePoint.SPViewCollection.SPViewType.Grid, false);newViewTwo.Title = "內部清單基礎";newViewTwo.Update();}最后一步,在應用程序頁上應用它(這里我只是描述實例的情況,具體怎么應用可以自行選擇),在頁面上添加一個iframe元素,引入列表視圖的URL地址就可以了。轉載于:https://www.cnblogs.com/justinliu/p/5961679.html
總結
以上是生活随笔為你收集整理的SharePoint开发 - Excel数据导入到SharePoint自定义列表(数据视图方式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高性能服务器设计——常用网络服务器设计模
- 下一篇: UICollectionView实现的图