博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sharepoint 2010批量导入数据
阅读量:4358 次
发布时间:2019-06-07

本文共 4359 字,大约阅读时间需要 14 分钟。

        在此我将提供一种批量导入数据的方法,效率或许不是很好,所以希望来光临的各位能够分享您的高见。下面就将描述一下我的方法:

首先我们对创建一个Console应用程序,然后在里面书写批量导入数据的代码,在这里使用Console的时候可能会遇到不能成功引用sharepoint对象的问题,此时请参考我的另外一篇博文:http://www.cnblogs.com/towerking/archive/2011/11/15/2249560.html。

     程序中需要引用的dll如下所述:

using Microsoft.SharePoint; using Microsoft.SharePoint.Utilities; using System.Diagnostics; using System.Data;

      一下将是我编这个测试程序的思路,在这儿程序中将会创建四个方法来完成这个过程,原因是我想尽可能少修改代码,完成尽可能多的变化,至于效果如何,望各位提出您宝贵的意见。

     我所写的四个方法分别是:

///  /// 批量插入数据 ///  public void InsertBatchData(){} ///  /// 插入sharepoint列表中满足要求的批量字符串 ///  /// 列表GUID /// sharepoint列表字段名数组 /// 表格数据源 /// 
public string GetInsertBatchString(System.Guid guid, string[] filedString, DataTable table){} /// /// 返回列表内部名字段字符串数组 /// ///
public string[] GetFieldString(){} /// /// 获取表格数据,列名是列表字段名 /// /// ///
public DataTable GetTable(string[] fieldString){}

      上面的方法可以根据各位看官的需求进行相应的更改,以满足各位更大的需求,下面我将贴出我做这个测试几个方法的代码出来,首先是InsertBatchData()方法,这个方法就是让用户调用的一个方法,实现sharepoint类表批量导入数据的功能,代码如下:

public void InsertBatchData() {
    using (SPSite site = new SPSite("http://localhost"))     {
        using (SPWeb web = site.OpenWeb())         {
            Stopwatch watch = new Stopwatch();             watch.Start();             SPList oList = web.Lists["BatchList"];             System.Guid guid = oList.ID;             string[] fieldString = (new Program()).GetFieldString();             DataTable dataTable = (new Program()).GetTable(fieldString);             string strPost = (new Program()).GetInsertBatchString(guid,                 fieldString,dataTable);             string strProcessBatch = web.ProcessBatchData(strPost);             Console.WriteLine("运行时间:" + watch.ElapsedMilliseconds);         }     } }

      获取批量导入数据的字符串方法,利用简单的循环可以减少大量的重复性工作的:

public string GetInsertBatchString(System.Guid guid, string[] filedString, DataTable table)...
public string GetInsertBatchString(System.Guid guid, string[] filedString, DataTable table) {
string strGuid = Convert.ToString(guid); StringBuilder insertBatchStringBuilder = new StringBuilder(); insertBatchStringBuilder.Append ("
"); foreach (DataRow dataRow in table.Rows) {
insertBatchStringBuilder.Append("
"); insertBatchStringBuilder.Append("
"); insertBatchStringBuilder.Append(strGuid); insertBatchStringBuilder.Append("
"); insertBatchStringBuilder.Append ("
New
Save
"); for (int fieldNo = 0; fieldNo < filedString.Length; fieldNo++) {
insertBatchStringBuilder.Append("
"); insertBatchStringBuilder.Append(dataRow[filedString[fieldNo]]); insertBatchStringBuilder.Append("
"); } insertBatchStringBuilder.Append("
"); } insertBatchStringBuilder.Append("
"); return Convert.ToString(insertBatchStringBuilder); }

      提供一个获取sharepoint列表内部名的字符串数组方法,方便给不同的列表进行操作的时候,只需要修改这个方法就行,而不用管批量导入数据字符串的修改,注意这里需要的字段时内部名而不是显示名。我在这个测试程序中只是为列表提供了三个字段,即Title,No,Description,所以其方法实现如下:

public string[] GetFieldString() {
string[] fieldString = {
"Title", "No", "Description"}; return fieldString; }

      最后只剩下了一个数据源的导入,我这的数据源是生成了一个Datatable存放的数据,看官们可以根据自己的需求更改这个Datatable存放的数据就行,实现代码如下:

public DataTable GetTable(string[] fieldString)...
// fieldString是sharepoint列表字段,这里映射到table列名中 public DataTable GetTable(string[] fieldString) {
DataTable dataTable = new DataTable(); for (int i = 0; i < fieldString.Length; i++) {
dataTable.Columns.Add(fieldString[i], System.Type.GetType("System.String")); } for (int num = 0; num < 5000; num++) {
DataRow dataRow = dataTable.NewRow(); for (int i = 0; i < fieldString.Length; i++) {
dataRow[fieldString[i]] = fieldString[i] + num; } dataTable.Rows.Add(dataRow); } return dataTable; }

      编写一个主程序调用InsertBatchData()方法,确保过程的完整性。

Main Code
static void Main(string[] args) {
Console.WriteLine("Begin:"); (new Program()).InsertBatchData(); Console.WriteLine("End!"); Console.ReadKey(); }

      以上就是我完成这个测试程序的全过程以及设计思路,各位给点意见吧,嘿嘿。

 

参考资料如下:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx

本文来自:

转载于:https://www.cnblogs.com/towerking/archive/2012/01/17/2324437.html

你可能感兴趣的文章
JDBC连接MySQL数据库及演示样例
查看>>
Beta 冲刺(1/7)
查看>>
修改 Vultr 登录密码
查看>>
CSS学习
查看>>
Centos 安装lnmp完整版
查看>>
【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)
查看>>
redis安装和配置
查看>>
2016424王启元 Exp5 msf基础应用
查看>>
android + eclipse + 后台静默安装(一看就会)
查看>>
JPA事务总结
查看>>
transitionFromView方法的使用
查看>>
Differences between page and segment
查看>>
Jdk与Tomcat配置与安装
查看>>
关于一个Java web与JFrame的深度结合
查看>>
VB连数据库conn.open的参数
查看>>
《信息安全系统设计基础》实验三
查看>>
SpringBoot Docs
查看>>
解决sublime text 2总是在新窗口中打开文件(标签中打开)
查看>>
VUE AntDesign DatePicker设置默认显示当前日期
查看>>
WIN32窗口模板
查看>>