我正在开发一款可在AD中创建用户的应用。现在我可以一次创建一个用户。我现在要做的是通过CSV
文件批量创建用户。
在做了一些研究之后,看起来好像使用Microsoft.VisualBasic.FileIO;
并且TextFieldParser
是最简单的方法。
这是CSV文件标题的方式:
FFirstName,姓氏,描述,口令,OU,组
这是我到目前为止所做的:
private void CreateUsers_Click(object sender,EventArgs e) {
using ( TextFieldParser csvReader = new TextFieldParser ( userscsv ) )
{
csvReader.TrimWhiteSpace = true;
csvReader.TextFieldType = FieldType.Delimited;
// csvReader.SetDelimiters ( new string [] { "," } );
csvReader.SetDelimiters ( "," );
// reading column fields
string [] colFields = csvReader.ReadFields ( );
int index_FirstName = colFields.ToList ( ).IndexOf ( "FirstName" );
while ( !csvReader.EndOfData )
{
// reading user fields
string [] fieldData = csvReader.ReadFields ( );
AD_Add_User_to_Group.Biz.AdAcctManagement bt = new Biz.AdAcctManagement ( );
try
{
bt.CreateUser ( this.oulist.Text, this.txtDisplayName.Text, this.txtPassword.Text, this.txtFirstName.Text, this.txtLastName.Text );
}
catch ( Exception ex )
{
}
}
}
}
如何读取CSV中的值并将其传递给我的方法:
bt.CreateUser ( this.oulist.Text, this.txtDisplayName.Text, this.txtPassword.Text, this.txtFirstName.Text, this.txtLastName.Text );
而不是this.txtFirtName.Text,我想传递CSV文件中的第一个名字。
答案 0 :(得分:0)
我假设CSV文件的格式为:
someValue中,显示名称,密码,名字,姓氏
如果是这样,您可以使用以下代码来完全满足要求:
foreach (string csvLines in File.ReadAllLines("Path here"))
{
//Here csvItem is each Line in the CSV file
string[] csvItems = csvLines.Split(',').ToArray();
bt.CreateUser(csvItems[0], csvItems[1], csvItems[2], csvItems[3], csvItems[4]);
}
答案 1 :(得分:0)
另一种更简单的方法是使用CsvHelper。您可以从NuGet安装它,它非常易于使用和灵活。我开始使用CsvHelper,因为它在读取数据时支持类型转换,还有许多其他有用的功能。以下是您的方案的示例代码。您可以在磁盘上提供CSV文件的路径。在大多数情况下,我更喜欢使用嵌入式资源。代码没有编译,但它足以为您提供想法,
<meta name="format-detection" content="telephone=no">