从 Excel 投射 CSOM (C#) 请求以执行插入 SharePoint Online
Cast a CSOM (C#) request from Excel to perform an insert into SharePoint Online
下午好,
我在 VBA 中有一个“程序”必须写入 SharePoint Online 列表。
问题:
我曾经通过将方向性连接到基础数据库(通过 ADODB 连接)将数据从 excel 文件(通过 VBA)插入 SharePoint 2013 列表。
对于 SharePoint Online,这是不可能的,事实上,我不得不通过使用 CSOM (C#) 库提出一个不同的解决方案。
经过一周的努力,完成了一个满足我所有需求的完美插入……现在我被卡住了。
目标:
我需要一种方法,让 VBA 代码可以使用我通过 VBA => Full Process/idea explained
通信的参数转换我的插入 (C#)
我找到了一些参考资料,但对我来说很难在我的代码中实现它。
这是我当前的代码:
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (ClientContext clientContext = new ClientContext("Sharepoint list URL"))
{
string Uname = "Username";
string password = "Password";
SecureString Securepasseord = GetSecureString(password);
clientContext.Credentials = new SharePointOnlineCredentials(Uname, Securepasseord); clientContext.ExecuteQuery();
clientContext.ExecuteQuery();
List oList = clientContext.Web.Lists.GetByTitle("Target List Name");
//clientContext.LoadQuery();
clientContext.ExecuteQuery();
ListItemCreationInformation listCreationInformation = new ListItemCreationInformation();
ListItem oListItem = oList.AddItem(listCreationInformation);
oListItem["Client"] = "John";
oListItem["City"] = "New York";
oListItem["Company"] = "ZXY";
oListItem.Update();
clientContext.ExecuteQuery();
}
}
private static SecureString GetSecureString(String Password)
{
SecureString oSecurePassword = new SecureString(); foreach (Char c in Password.ToCharArray()) { oSecurePassword.AppendChar(c); }
return oSecurePassword;
}
}
}
我想过创建一个JSON对象来link这两个,但是如果它同时管理多个请求那就麻烦了。我想在这些系统之间保持直接连接。
预先感谢您的回答。
此致,
丹妮尔
编辑: 对于这个项目,由于内部政策,我不能使用 OneDrive/Excel 在线解决方案。我需要以这种方式将数据引入 SharePoint,然后我可以开始使用 Power Automate 来管理所有 notifications/approvals 流。
最后,我使用Main(string [] args)
解决了问题。我将通过命令行传递数据。简单、直接、快速和可靠。
例如:
Client = args[0];
City = args[1];
Company= args[2];
....................
oListItem["Client"] = Client;
oListItem["City"] = City;
oListItem["Company"] = Company;
下午好,
我在 VBA 中有一个“程序”必须写入 SharePoint Online 列表。
问题:
我曾经通过将方向性连接到基础数据库(通过 ADODB 连接)将数据从 excel 文件(通过 VBA)插入 SharePoint 2013 列表。
对于 SharePoint Online,这是不可能的,事实上,我不得不通过使用 CSOM (C#) 库提出一个不同的解决方案。
经过一周的努力,完成了一个满足我所有需求的完美插入……现在我被卡住了。
目标:
我需要一种方法,让 VBA 代码可以使用我通过 VBA => Full Process/idea explained
通信的参数转换我的插入 (C#)我找到了一些参考资料
这是我当前的代码:
using Microsoft.SharePoint.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (ClientContext clientContext = new ClientContext("Sharepoint list URL"))
{
string Uname = "Username";
string password = "Password";
SecureString Securepasseord = GetSecureString(password);
clientContext.Credentials = new SharePointOnlineCredentials(Uname, Securepasseord); clientContext.ExecuteQuery();
clientContext.ExecuteQuery();
List oList = clientContext.Web.Lists.GetByTitle("Target List Name");
//clientContext.LoadQuery();
clientContext.ExecuteQuery();
ListItemCreationInformation listCreationInformation = new ListItemCreationInformation();
ListItem oListItem = oList.AddItem(listCreationInformation);
oListItem["Client"] = "John";
oListItem["City"] = "New York";
oListItem["Company"] = "ZXY";
oListItem.Update();
clientContext.ExecuteQuery();
}
}
private static SecureString GetSecureString(String Password)
{
SecureString oSecurePassword = new SecureString(); foreach (Char c in Password.ToCharArray()) { oSecurePassword.AppendChar(c); }
return oSecurePassword;
}
}
}
我想过创建一个JSON对象来link这两个,但是如果它同时管理多个请求那就麻烦了。我想在这些系统之间保持直接连接。
预先感谢您的回答。
此致, 丹妮尔
编辑: 对于这个项目,由于内部政策,我不能使用 OneDrive/Excel 在线解决方案。我需要以这种方式将数据引入 SharePoint,然后我可以开始使用 Power Automate 来管理所有 notifications/approvals 流。
最后,我使用Main(string [] args)
解决了问题。我将通过命令行传递数据。简单、直接、快速和可靠。
例如:
Client = args[0];
City = args[1];
Company= args[2];
....................
oListItem["Client"] = Client;
oListItem["City"] = City;
oListItem["Company"] = Company;