基本信息
源码名称:sharepoint 导入列表、文件工具 源码下载
源码大小:16.62M
文件格式:.zip
开发语言:C#
更新时间:2017-03-14
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 10 元×
微信扫码支付:10 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
导入文件、列表数据、自定义属性到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");
}
}
}