基本信息
源码名称:sharepoint 导入列表、文件工具 源码下载
源码大小:16.62M
文件格式:.zip
开发语言:C#
更新时间:2017-03-14
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 10 元 
   源码介绍

导入文件、列表数据、自定义属性到sharepoint 站点


using System;
using System.IO;
using System.Data;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Xml;
using System.Xml.Linq;

using NLog;
using NPOI.HSSF;
using NPOI.SS.UserModel;
using Microsoft.SharePoint.Client;

namespace SGM.Portal.RDP.Tool
{
    public partial class RdpTool : System.Windows.Forms.Form
    {
        private Logger logger = LogManager.GetCurrentClassLogger();
        private DataTable dataRdpInfo = null;
        private ClientContext spClientContext = null;
        private Web siteWeb = null;
        private readonly string[] _subFolders = new string[] { "01.AFI", "02.PFI", "03.DSI", "04.VPI", "05.CSO", "06.MVR", "07.SORP", "08.EOP" };

        public RdpTool()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 打开数据模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpenFile_Click(object sender, EventArgs e)
        {
            try
            {
                odlgRdpFile.Filter = "ALL FILE(*.*)|*.*|Excel(*.xls,*.xlsx)|*.xls;*.xlsx";
                if (odlgRdpFile.ShowDialog() == DialogResult.OK)
                {
                    var helper = new ExcelHelper(odlgRdpFile.FileName);
                    txtDataFile.Text = odlgRdpFile.FileName;

                    dataRdpInfo = helper.ExcelToDataTable("调研项目文档",1);
                    dgRdpFiles.AutoGenerateColumns = false;
                    dgRdpFiles.DataSource = dataRdpInfo;
                }
            }
            catch(Exception ex)
            {
                logger.Error(ex.Message);
                MessageBox.Show(ex.Message);
            }
        }

        /// <summary>
        /// 开始导入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStartImport_Click(object sender, EventArgs e)
        {
            try
            {
                btnStartImport.Enabled = false;
                spClientContext = new ClientContext(txtSiteUrl.Text.Trim()) { Credentials = this.CreateNetworkCredential };

                siteWeb = spClientContext.Web;

                if (dataRdpInfo != null && dataRdpInfo.Rows.Count > 0)
                {
                    tpbImportProcess.Minimum = 0;
                    tpbImportProcess.Maximum = dataRdpInfo.Rows.Count;
                    tpbImportProcess.Value = 0;
                    ParameterizedThreadStart threadStart = new ParameterizedThreadStart(ThreadRdpImport);
                    Thread threadImport = new Thread(threadStart);
                    threadImport.Start(dataRdpInfo);
                }
            }
            catch(Exception ex)
            {
                logger.Error(ex.StackTrace);
                MessageBox.Show(ex.Message);
                btnStartImport.Enabled = true;
            }
        }

        /// <summary>
        /// 异步导入线程
        /// </summary>
        /// <param name="dtRdpInfo"></param>
        private void ThreadRdpImport(object param)
        {
            try
            {
                DataTable dtRdpInfo = param as DataTable;
                if(dtRdpInfo != null)
                {
                    int stepProgress = 0;
                    foreach(DataRow rowData in dtRdpInfo.Rows)
                    {
                        var result = ImportRdpInfo(rowData);

                        //导入失败的时候标红显示
                        if(!result)
                        {
                            ShowErrorRow(stepProgress);
                        }
                        else
                        {
                            ShowSuccessRow(stepProgress);
                        }

                        //显示导入进度
                        ShowImportProgress(  stepProgress);
                    }
                }
            }
            catch(Exception ex)
            {
                if(ex.InnerException != null)
                {
                    logger.Error(ex.Message);
                    logger.Error(ex.InnerException.StackTrace);
                }
                else
                {
                    logger.Error(ex.StackTrace);
                }                
            }
            finally
            {
                btnStartImport.Invoke(new Action(() =>
                {
                    btnStartImport.Enabled = true;
                }));

                MessageBox.Show("Import complete!", "Data Import", MessageBoxButtons.OK);
            }
        }

        /// <summary>
        /// 导入一行数据
        /// </summary>
        /// <param name="rowData"></param>
        /// <returns></returns>
        private bool ImportRdpInfo(DataRow rowData)
        {
            bool opResult = false;

            try
            {
                //导入车型项目
                var segment = rowData["Segment"].ToString();
                var brand = rowData["Brand"].ToString();
                var platform = rowData["Platform"].ToString();
                var program = rowData["Program"].ToString();

                if (program == "") return false;

                List projectList = siteWeb.Lists.GetByTitle("Program");

                //首先判断是否存在车型项目
                ListItemCollection projectListItems = projectList.GetItems(CamlQuery.CreateAllItemsQuery());
                spClientContext.Load(projectListItems, eachItem => eachItem.Include(
                                                      item => item,
                                                      item => item.DisplayName));
                spClientContext.ExecuteQuery();

                var checkItem = projectListItems.Where(x => x.DisplayName == program).SingleOrDefault();

                if (checkItem == null)
                {
                    ListItemCreationInformation createProgramInfo = new ListItemCreationInformation();
                    var newProjectItem = projectList.AddItem(createProgramInfo);
                    newProjectItem.ParseAndSetFieldValue("Segment", segment);
                    newProjectItem.ParseAndSetFieldValue("Brand", brand);
                    newProjectItem.ParseAndSetFieldValue("Platform", platform);
                    newProjectItem.ParseAndSetFieldValue("Title", program);
                    
                    newProjectItem.Update();
                    spClientContext.ExecuteQuery();
                }
                
                List programList = siteWeb.Lists.GetByTitle(program);
                if (programList == null)
                {
                    logger.Error("Program-{0} has not been created!", program);
                    return false;
                }

                Folder projectFolder = programList.RootFolder;
                spClientContext.Load(programList);
                spClientContext.ExecuteQuery();
                if(projectFolder != null)
                {
                    //调研项目
                    var section = rowData["节点"].ToString();
                    foreach(string item in _subFolders)
                    {
                        if(item.IndexOf(section) > -1)
                        {
                            section = item;
                            break;
                        }
                    }

                    var researchlib = rowData["Clinic Name"].ToString();

                    var fieldValues = new List<KeyValuePair<string, object>>();
                    fieldValues.Add(new KeyValuePair<string, object>("Clinic Name", rowData["Clinic Name"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Milestone", rowData["Milestone"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Clinic Stimuli", rowData["Clinic Stimuli"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Clinic Month", rowData["Clinic Month"]));
                    fieldValues.Add(new KeyValuePair<string, object>("DataSource", rowData["Data Source"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Vendor", rowData["Vendor"]));
                    fieldValues.Add(new KeyValuePair<string, object>("PRNO", rowData["PRNO"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Budget", rowData["budget"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Actural Expense", rowData["actural expense"]));
                    fieldValues.Add(new KeyValuePair<string, object>("WBS", rowData["WBS"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Cities", rowData["城市"]));
                    fieldValues.Add(new KeyValuePair<string, object>("Competitor", rowData["竞品"]));

                    var ret = SPClientHelper.CreateResearchLibFolder(spClientContext, program, section, researchlib, fieldValues);

                    if (ret)
                    {
                        //上传文档
                        var fileName = rowData["文件"].ToString();
                        if(!string.IsNullOrEmpty(fileName))
                        {
                            var researchlibFile = fileName;

                            if (!System.IO.File.Exists(fileName))
                            {
                                researchlibFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, fileName);
                                if (!System.IO.File.Exists(researchlibFile))
                                {
                                    researchlibFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, program, section, researchlib, fileName);
                                    if (!System.IO.File.Exists(researchlibFile))
                                    {
                                        FileInfo fi = new FileInfo(txtDataFile.Text);
                                        researchlibFile = Path.Combine(fi.Directory.FullName, fileName);
                                    }
                                }
                            }

                            if (System.IO.File.Exists(researchlibFile))
                            {
                                //上传到调研文档库
                                Folder researchLibFolder = SPClientHelper.GetFolder(spClientContext, program   "/"   section   "/"   researchlib);
                                logger.Debug("upload file to researchLibFolder:{0}", program   "/"   section   "/"   researchlib);

                                FileInfo fileInfo = new FileInfo(researchlibFile);
                                string property = string.Empty;
                                string language = string.Empty;

                                if (rowData["Property"] != null) property = rowData["Property"].ToString();
                                if (rowData["Language"] != null) language = rowData["Language"].ToString();

                                SPClientHelper.UploadFileToFolderByFileStream(spClientContext,
                                                                                researchLibFolder,
                                                                                researchlibFile,
                                                                                fileInfo.Extension,
                                                                                property,
                                                                                language);
                            }
                        }                        
                    }

                    //提交更新
                    spClientContext.ExecuteQuery();
                    opResult = ret;
                }                
            }
            catch(Exception ex)
            {
                logger.Error("ImportRdpInfo:{0}", ex.StackTrace);
            }

            return opResult;
        }

        /// <summary>
        /// 显示导入进度
        /// </summary>
        /// <param name="stepProgress"></param>
        private void ShowImportProgress(int stepProgress)
        {
            this.Invoke(new Action( () =>
            {
                if(stepProgress <= tpbImportProcess.Maximum && stepProgress >= tpbImportProcess.Minimum)
                {
                    tpbImportProcess.Value = stepProgress;
                }                
            }));
        }

        private void ShowSuccessRow(int rowIndex)
        {
            this.Invoke(new Action(() =>
            {
                this.dgRdpFiles.Rows[rowIndex].DefaultCellStyle.BackColor = Color.Green;
            }));
        }

        private void ShowErrorRow(int rowIndex)
        {
            this.Invoke(new Action(() =>
            {
                this.dgRdpFiles.Rows[rowIndex].DefaultCellStyle.BackColor = Color.Red;
            }));
        }

        private System.Net.NetworkCredential CreateNetworkCredential
        {
            get
            {
                return new System.Net.NetworkCredential(this.txtLoginName.Text, this.txtPassword.Text, this.txtDomain.Text);
            }
        }

        private void RdpTool_Load(object sender, EventArgs e)
        {
#if DEBUG
            //测试
            try
            {                
#if false
                spClientContext = new ClientContext(txtSiteUrl.Text.Trim()) { Credentials = this.CreateNetworkCredential };

                SPClientHelper.GetCityLookupId(spClientContext, "上海");

                //项目列表
                List projectList = siteWeb.Lists.GetByTitle("Program");

                //首先判断是否存在车型项目
                CamlQuery myCamlQuery = new CamlQuery();

                ListItemCollection myListItems = projectList.GetItems(myCamlQuery);
                spClientContext.Load(myListItems);
                spClientContext.ExecuteQuery();

                foreach (ListItem item in myListItems)
                {
                    logger.Debug("Segment:{0},Brand:{1},Platform:{2},Program:{3}", item["Segment"], item["Brand"], item["Platform"], item["Program"]);
                }

                var fieldValues = new List<KeyValuePair<string, string>>();
                fieldValues.Add(new KeyValuePair<string, string>("City", "上海"));
                fieldValues.Add(new KeyValuePair<string, string>("Milestone", "Milestone1111"));
                fieldValues.Add(new KeyValuePair<string, string>("Clinic Name", "Clinic Name111"));
                fieldValues.Add(new KeyValuePair<string, string>("Clinic Month", "9月"));
                fieldValues.Add(new KeyValuePair<string, string>("Vendor", "Vendor2222"));

                //SPClientHelper.CreateResearchLibFolder(spClientContext, "DU12345", "AFI", "调研项目2", fieldValues);

                Folder folder = SPClientHelper.GetFolder(spClientContext,"Documents/DU12345/AFI/调研项目2");

                SPClientHelper.UploadFileToFolderByFileStream(spClientContext, folder, @"C:\LineType.cs" , "*.cs");

                spClientContext.ExecuteQuery();
#endif
            }
            catch(Exception ex)
            {
                logger.Error(ex.Message);
                MessageBox.Show(ex.Message);
            }
#endif
        }

        private void txtDomain_Click(object sender, EventArgs e)
        {
            tipForControl.SetToolTip(sender as Control,"System Domain");
        }

        private void txtLoginName_Click(object sender, EventArgs e)
        {
            tipForControl.SetToolTip(sender as Control, "User Account");
        }

        private void txtPassword_Click(object sender, EventArgs e)
        {
            tipForControl.SetToolTip(sender as Control, "Password");
        }
    }
}