Estoy tratando de crear un código que se tire en, leer, y separar un archivo csv. Tiene cuatro columnas sin títulos. He estado buscando por horas en línea y en realidad nadie parece tener la respuesta, así que estoy esperando que alguien de aquí puede. Después de lo que se lee en la necesito para ser capaz de ser tirado muy sepecifically, ya que es parte del diseño. Gracias de antemano!

  • Mira CSVHelper si usted necesita para analizar en las entidades. Su Nuget o aquí : github.com/JoshClose/CsvHelper
  • Esto es lo que mi csv parece. Quiero tirar de cada línea en un array que tiene 1 (el número atómico) y 1.007…. (el atmoic de la misa), todos por separado se puede llamar. Estoy tratando de armar una tabla periódica de los géneros. 1,1.0079400000,Hidrógeno,H 2,4.0026020000,Helio,Él 3,6.9410000000,Litio,Li 4,9.0121820000,El Berilio,El Ser
  • Las nuevas líneas se producen después de cada símbolo atómico.
InformationsquelleAutor rreichel | 2012-08-24

3 Comentarios

  1. 6

    Tu pregunta es un poco vago, pero voy a tratar de responder lo mejor que pueda.

    Un archivo CSV es (por definición) un archivo que contiene separados por comas en los valores de la clave aquí es que se utiliza una coma como delimitador. Personalmente, me parece que el uso de un delimitador distinto es propenso a menos que monstruos cuando el análisis.

    He creado la siguiente prueba archivo CSV:

    Column1,Column2,Column3,Column4
    Row1Value1,Row1Value2,Row1Value3,Row1Value4
    Row2Value1,Row2Value2,Row2Value3,Row2Value4
    Row3Value1,Row3Value2,Row3Value3,Row3Value4
    Row4Value1,Row4Value2,Row4Value3,Row4Value4
    Row5Value1,Row5Value2,Row5Value3,Row5Value4

    Aquí un poco de código para leer ese archivo en algunas estructuras simples que usted puede manipular. Querrá extender este código mediante la creación de clases para las columnas y las filas (y de valores).

            string sFileContents = "";
    
            using (StreamReader oStreamReader = new StreamReader(File.OpenRead("Test.csv")))
            {
                sFileContents = oStreamReader.ReadToEnd();
            }
    
            List<string[]> oCsvList = new List<string[]>();
    
            string[] sFileLines = sFileContents.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            foreach (string sFileLine in sFileLines)
            {
                oCsvList.Add(sFileLine.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries));
            }
    
            int iColumnNumber = 0;
            int iRowNumber = 0;
    
            Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);
    
            iColumnNumber = 4;
            iRowNumber = 2;
    
            Console.WriteLine("Column{0}, Row{1} = \"{2}\"", iColumnNumber, iRowNumber, oCsvList[iColumnNumber][iRowNumber]);

    Tenga en cuenta que los valores que se accede por el número de columna y, a continuación, el número de fila.

    Espero que esto ayude.

    • Esto es lo que mi csv parece. Quiero tirar de cada línea en un array que tiene 1 (el número atómico) y 1.007…. (el atmoic de la misa), todos por separado se puede llamar. Estoy tratando de armar una tabla periódica de los géneros. 1,1.0079400000,Hidrógeno,H 2,4.0026020000,Helio,Él 3,6.9410000000,Litio,Li 4,9.0121820000,El Berilio,El Ser
    • Hay una nueva línea comenzó después de cada símbolo atómico.
    • Bien, yo sólo intentó implementar el bloque de código y no me da ningún error, sin embargo no soy capaz de llamar a la matriz nombre de la lista (oCsvList) desde el exterior de la lectura (específicamente tratando de llamar desde un bucle for.
    • Hola, no estoy seguro de lo que quieres decir – es posible pegar el código aquí por favor?
  2. 0

    Todo lo que necesitas hacer es simplemente convertirlo en un byte[] matriz y la espalda en una cadena[builder?]. A continuación, separado de cada entrada, y analizarlo como tal.

    http://www.digitalcoding.com/Code-Snippets/C-Sharp/C-Code-Snippet-Convert-file-to-byte-array.html

    Y convertir a una cadena:

        //C# to convert a byte array to a string.
    byte [] dBytes = ...
    string str;
    System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
    str = enc.GetString(dBytes);

    Usted tiene que entender que usted necesita para hacer un parser. He hecho una para tirar en Yahoo Acciones, básicamente, la división de los dos puntos de los datos.

  3. 0

    Esta es una manera mucho más sencilla de hacer lo que quiera.

    var lineCount = File.ReadLines(@"C:\file.txt").Count();
    var reader = new StreamReader(File.OpenRead(@"C:\location1.csv"));
    int[,] properties = new int[lineCount,4];
    for(int i2 = 0; i2 < 4; i2++)
    {
        for(int i = 0; i < lineCount; i++)
        {
            var line = reader.ReadLine();
            var values = line.Split(';');
            properties[i,i2] = Convert.ToInt32(values[i2];
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here