2012-10-05 109 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

相关问题