在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → sharepoint 导入列表、文件工具 源码下载

sharepoint 导入列表、文件工具 源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:16.62M
  • 下载次数:16
  • 浏览次数:294
  • 发布时间:2017-03-14
  • 实例类别:C#语言基础
  • 发 布 人:xuliujian
  • 文件格式:.zip
  • 所需积分:10
 相关标签: 文件 SharePoint 导入 Excel

实例介绍

【实例简介】导入文件、列表数据、自定义属性到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");
        }
    }
}


实例下载地址

sharepoint 导入列表、文件工具 源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警