-2

我编写了一个程序,将数据从 excel 表导入到 sharepoint 2007 列表。导入了大约 11000 个数据。我使用了下面的代码。我的查询是我想将“员工的显示名称”放在“创建者”列中。我在代码中的 excel 表 n 中提供了相同的内容。但是在数据被导入后,我发现很少有员工数据反映了由他们的名字创建的列。但对于少数人来说,它仅反映 EMPID 或 EMPID + 名称。我调试代码它需要正确的字符串来显示,但我不明白它给出了这样的结果。我也在我的机器上运行编程序而不是服务器,所以它是 bcoz 的。因为我使用的是测试服务器,然后才会部署到生产中。

代码:

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();

                                    }


                                }

                        }
4

1 回答 1

0

检查“_catalogs/users/simple.aspx”列表以查看该站点上的用户是否正确存储了他们的信息。

这很重要,因为 Author 字段的值来自此列表中显示的内容,而不是您设置的值。

请参阅此问题以了解如何解决此问题。

于 2012-10-07T23:11:13.207 回答