填充CSV文件中的数据集

jay*_*dev 15 .net c# csv asp.net dataset

我想阅读CSV文件的内容并创建数据集.我这样想:

var lines = File.ReadAllLines("test.csv").Select(a => a.Split(';'));
DataSet ds = new DataSet();
ds.load(lines);
Run Code Online (Sandbox Code Playgroud)

但显然这是不正确的.

kom*_*bsh 20

您需要添加引用Microsoft.VisualBasic.dll以使用TextFieldParser类.

 private static DataTable GetDataTabletFromCSVFile(string csv_file_path)
        {
            DataTable csvData = new DataTable();
            try
            {
              using(TextFieldParser csvReader = new TextFieldParser(csv_file_path))
                 {
                    csvReader.SetDelimiters(new string[] { "," });
                    csvReader.HasFieldsEnclosedInQuotes = true;
                    string[] colFields = csvReader.ReadFields();
                    foreach (string column in colFields)
                    {
                        DataColumn datecolumn = new DataColumn(column);
                        datecolumn.AllowDBNull = true;
                        csvData.Columns.Add(datecolumn);
                    }
                    while (!csvReader.EndOfData)
                    {
                        string[] fieldData = csvReader.ReadFields();
                        //Making empty value as null
                        for (int i = 0; i < fieldData.Length; i++)
                        {
                            if (fieldData[i] == "")
                            {
                                fieldData[i] = null;
                            }
                        }
                        csvData.Rows.Add(fieldData);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return csvData;
        }
      }
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此文章:http://www.morgantechspace.com/2013/08/how-to-read-data-from-csv-file-in-c.html

  • 您好@RobSedgwick,您需要添加引用Microsoft.VisualBasic.dll以使用TextFieldParser类. (2认同)

stu*_*rtd 15

您需要SELECT针对CSV文件运行语句以填充数据集:

编辑:这里有一些示例代码来自http://carllbrown.blogspot.co.uk/2007/09/populate-dataset-from-csv-delimited_18.html

string FileName = ...
OleDbConnection conn = new OleDbConnection
       ("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + 
         Path.GetDirectoryName(FileName) + 
         "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\"");

conn.Open();

OleDbDataAdapter adapter = new OleDbDataAdapter
       ("SELECT * FROM " + Path.GetFileName(FileName), conn);

DataSet ds = new DataSet("Temp");
adapter.Fill(ds);

conn.Close();
Run Code Online (Sandbox Code Playgroud)