2016-07-22 6 views
-1

Hallo bitte kann mir jemand geben Lösung für dieses Problem, ich habe csv-Datei mit C# importieren, aber ich habe dieses Problem in diesem Screenshot ScreenCSV-Datei importieren Oledb C#

die separate betwenn Spalte ist ‚‘ aber in den Daten gibt es eine Reihe, die enthält ".

+1

Bitte lesen Sie die [Hilfe] und insbesondere [fragen] – Steve

Antwort

0

Mohamed, ich kann Ihren Screenshot nicht sehen, aber kann Sie auf generische Listen zeigen und eine Klasse zur Darstellung von Daten erstellen. Sie müssen Referenzen aus dem Menü" Projekt "hinzufügen .

  • Microsof
  • t.VisualBasic
  • System.Configuration
  • Windows

Ich bin auch Code aus einem Code-Snippet, wo ich das tat:

using System; 
using System.IO; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.VisualBasic.FileIO; 

namespace CsvToListExp 
{ 
class Program 
{ 
    public static void Main(string[] args) 
    { 
     // HARD_CODED FOR EXAMPLE ONLY - TO BE RETRIEVED FROM APP.CONFIG IN REAL PROGRAM 
     string hospPath = @"C:\\events\\inbound\\OBLEN_COB_Active_Inv_Advi_Daily_.csv"; 
     string vendPath = @"C:\\events\\outbound\\Advi_OBlen_Active_Inv_Ack_Daily_.csv"; 

     List<DenialRecord> hospList = new List<DenialRecord>(); 
     List<DenialRecord> vendList = new List<DenialRecord>(); 
     //List<DenialRecord> hospExcpt = new List<DenialRecord>(); // Created at point of use for now 
     //List<DenialRecord> vendExcpt = new List<DenialRecord>(); // Created at point of use for now 

     using (TextFieldParser hospParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(hospPath)) 
     { 
      hospParser.TextFieldType = FieldType.Delimited; 
      hospParser.SetDelimiters(","); 
      hospParser.HasFieldsEnclosedInQuotes = false; 
      hospParser.TrimWhiteSpace = true; 

      while (!hospParser.EndOfData) 
      { 

       try 
       { 
        string[] row = hospParser.ReadFields(); 
        if (row.Length <= 7) 
        { 
         DenialRecord dr = new DenialRecord(row[0], row[1], row[2], row[3], row[4], row[5], row[6]); 
         hospList.Add(dr); 
        } 
       } 
       catch (Exception e) 
       { 
        // do something 
        Console.WriteLine("Error is: {0}", e.ToString()); 
       } 
      } 
      hospParser.Close(); 
      hospParser.Dispose(); 
     } 


     using (TextFieldParser vendParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(vendPath)) 
     { 
      vendParser.TextFieldType = FieldType.Delimited; 
      vendParser.SetDelimiters(","); 
      vendParser.HasFieldsEnclosedInQuotes = false; 
      vendParser.TrimWhiteSpace = true; 

      while (!vendParser.EndOfData) 
      { 
       try 
       { 
        string[] row = vendParser.ReadFields(); 
        if (row.Length <= 7) 
        { 
         DenialRecord dr = new DenialRecord(row[0], row[1], row[2], row[3], row[4], row[5], row[6]); 
         vendList.Add(dr); 
        } 
       } 
       catch (Exception e) 
       { 
        // do something 
        Console.WriteLine("Error is: {0}", e.ToString()); 
       } 
      } 
      vendParser.Close(); 
      vendParser.Dispose(); 
     } 

     // Compare the lists each way for denials not in the other source 
     List<DenialRecord> hospExcpt = hospList.Except(vendList).ToList(); 
     List<DenialRecord> vendExcpt = vendList.Except(hospList).ToList(); 
    } 
} 
} 

Google TestFieldParser und Blick auf die Methoden, Eigenschaften und Konstruktoren. Es ist sehr vielseitig, aber läuft aufgrund der Schichten, die es durchläuft, langsam. Es hat die Fähigkeit, das Trennzeichen zu setzen, in Anführungszeichen eingeschlossene Felder, Leerzeichen und vieles mehr zu bearbeiten.

+0

Mein Problem ist Gruppe von in CSV-Datei und kann nicht linq verwenden, weil ich mit Framework 2.0 arbeite –