2012-10-05 405 views
-2

我寫了一個程序,將數據從Excel表導入SharePoint 2007列表。大約有11000個數據被導入。我已經使用了下面的代碼。我的查詢是我想將「員工的顯示名稱」放在「由...創建」列中。並在代碼中的Excel表中提供相同的n。但是在數據被導入後,我發現很少員工數據反映了由列創建的名稱。但少數情況下,它僅反映EMPID或EMPID +名稱。我調試代碼它需要顯示正確的字符串,但我不明白它給出了這樣的結果。另外我正在我的機器上運行prog而不是服務器,所以它是這樣的。正如我使用測試服務器,然後只會部署到生產。員工ID反映在列創建而不是顯示名稱

代碼:

protected void btnImport_Click(object sender, EventArgs e) 

     { 



      using (SPSite site = new SPSite("URL")) 

      { 

       using (SPWeb web = site.OpenWeb()) 

       { 

        webapp = web.Site.WebApplication; 

        webapp.FormDigestSettings.Enabled = false; 

        SPList list = web.Lists["List name"]; 



        string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\Test.xlsx;Extended Properties=Excel 12.0"; 

        OleDbConnection oledbConn = new OleDbConnection(connString); 

        oledbConn.Open(); 

        OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn);//contents from sheet1 is selected 

        OleDbDataAdapter oleda = new OleDbDataAdapter(); 

        oleda.SelectCommand = cmd; 

        DataSet ds = new DataSet(); 

        oleda.Fill(ds, "Employees"); 

        DataTable dt = ds.Tables["Employees"]; 

        DataView dv = new DataView(dt); 

        SPSecurity.RunWithElevatedPrivileges(delegate() 

        { 

         using (SPSite elevatedSite = new SPSite("URL")) 

         { 

          elevatedRootWeb = elevatedSite.OpenWeb(); 

         } 

        }); 

        foreach (DataRowView drv in dv) 

        { 

         EMPID = drv["Emp id"].ToString(); 

         DispName = drv["Name"].ToString(); 

         Title = drv["Title"].ToString(); 

         getid = new SPQuery(); 

         getid.Query = "<Where><Eq><FieldRef Name=’EMPID’ /><Value Type='Text'>" + EMPID + "</Value></Eq></Where><OrderBy><FieldRef Name='ID'/></OrderBy>"; 

         check = list.GetItems(getid).GetDataTable(); 

         if (check == null) 

         { 

           try 

           { 





            elevatedRootWeb.AllowUnsafeUpdates = true; 

            UserItem = list.Items.Add(); 

            UserItem["Emp id"] = EMPID; 

            UserItem["Title"] = Title; 

            test = elevatedRootWeb.EnsureUser(PSNumber).ID + ";#" + DispName; 

            UserItem["Author"] = test; 

            UserItem.Update(); 

            list.Update(); 

            count++; 

            elevatedRootWeb.AllowUnsafeUpdates = false; 



            using (StreamWriter w = File.AppendText("D:\\Errorlog_SP2010.txt")) 

            { 

             Log(PSNumber + "Inserted successfully", w); 



             w.Close(); 

            } 

           } 

           catch (Exception ex) 

           { 

            HttpContext.Current.Response.Write("<script>alert('Exception on adding item " + ex.Message + "')</script>"); 

            using (StreamWriter w = File.AppendText("D:\\Errorlog_SP2010.txt")) 

            { 

             Log(ex.ToString()+ PSNumber, w); 



             w.Close(); 

            } 


           } 

         } 
+0

-1,請儘量縮小您的問題的範圍。 –

+0

您是否知道導入Excel電子表格是SharePoint中的內置功能? http://www.etechplanet.com/blog/how-to-import-an-excel-spreadsheet-in-sharepoint-and-save-it-as-a-custom-list.aspx –

回答

0

檢查"_catalogs/users/simple.aspx"列表,查看該網站上用戶已經正確存儲thier信息。

這非常重要,因爲Author字段從此列表中顯示的內容中獲取值,而不是您設置的值。

有關如何解決此問題,請參閱this question

+0

非常感謝..我檢查我的測試服務器,它具有所有員工ID沒有名字。我猜測代碼將在生產環境中正常運行 – Zeba

相關問題