且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

无法使用 OLEDB 从 CSV 中获取所有列的值

更新时间:2023-02-23 13:43:21

您将需要创建 schema.ini 文件并将其放置在与您从中提取数据的文件相同的目录中.在其中,您必须将 TextDelimiterFormat 提供给 csv 文件.将 TextDelimiter 设置为 none

You going to need to create schema.ini file and place it in the same directory as the files you're pulling the data from. In it you will have to give TextDelimiter and Format to the csv file. Set the TextDelimiter to none

[YOURCSVFILENAME.csv]
ColNameHeader=True
Format=CSVDelimited
TextDelimiter=none

希望这会有所帮助.

更新:动态创建 schema.ini 文件...

UPDATE: Creating schema.ini file dynamically...

  string csvFilePath = /* CSV file directory */
  string csvFileName = /* CSV file name */
  using (FileStream sr = new FileStream(csvFilePath + "\schema.ini", 
      FileMode.Create, FileAccess.Write)) 
  { 
      using (StreamWriter writer=new StreamWriter(sr)) 
      { 
          writer.WriteLine("[" + csvFileName + "]"); 
          writer.WriteLine("ColNameHeader=True"); 
          writer.WriteLine("Format=CSVDelimited"); 
          writer.WriteLine("TextDelimiter=none"); 
          writer.Close(); 
          writer.Dispose(); 
      } 
  }