C#读取csv文件并传递数据

时间:2016-03-24 06:02:19

标签: c# csv

我正在开发一款可在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文件中的第一个名字。

2 个答案:

答案 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">