write open net library csvwriter create crear and c# string csv

c# - open - asp.net Convertir cadena CSV a cadena



csvwriter c# (17)

Puede echar un vistazo al uso del ensamblado Microsoft.VisualBasic con

Microsoft.VisualBasic.FileIO.TextFieldParser

Maneja CSV (o cualquier delimitador) con comillas. Lo encontré bastante útil recientemente.

¿Hay alguna manera fácil de convertir una cadena de formato csv en una cadena [] o lista?

Puedo garantizar que no hay comas en los datos.


Prueba esto;

static IEnumerable<string> CsvParse(string input) { // null strings return a one-element enumeration containing null. if (input == null) { yield return null; yield break; } // we will ''eat'' bits of the string until it''s gone. String remaining = input; while (remaining.Length > 0) { if (remaining.StartsWith("/"")) // deal with quotes { remaining = remaining.Substring(1); // pass over the initial quote. // find the end quote. int endQuotePosition = remaining.IndexOf("/""); switch (endQuotePosition) { case -1: // unclosed quote. throw new ArgumentOutOfRangeException("Unclosed quote"); case 0: // the empty quote yield return ""; remaining = remaining.Substring(2); break; default: string quote = remaining.Substring(0, endQuotePosition).Trim(); remaining = remaining.Substring(endQuotePosition + 1); yield return quote; break; } } else // deal with commas { int nextComma = remaining.IndexOf(","); switch (nextComma) { case -1: // no more commas -- read to end yield return remaining.Trim(); yield break; case 0: // the empty cell yield return ""; remaining = remaining.Substring(1); break; default: // get everything until next comma string cell = remaining.Substring(0, nextComma).Trim(); remaining = remaining.Substring(nextComma + 1); yield return cell; break; } } } }


Un archivo Csv con campos Cotizados, no es un archivo Csv. Mucho más cosas (Excel) salida sin comillas en lugar de comillas cuando selecciona "Csv" en un guardar como.

Si quieres uno que puedas usar, gratis o comprometerte, aquí está el mío que también incluye IDataReader / Record. También utiliza DataTable para definir / convertir / aplicar columnas y DbNull.

http://github.com/claco/csvdatareader/

No hace citas ... todavía. Lo tiré hace unos días para rascarme un poco.

Forgotten Semicolon: Buen enlace. Gracias. cfeduke: Gracias por el consejo a Microsoft.VisualBasic.FileIO.TextFieldParser. Ir a CsvDataReader esta noche.


Algunos archivos CSV tienen comillas dobles alrededor de los valores junto con una coma. Por lo tanto, a veces puede dividir en este literal de cadena: ","


No hay una manera simple de hacerlo bien si desea contabilizar elementos cotizados con comas incorporadas, especialmente si están mezclados con campos no citados.

También es probable que desee convertir las líneas en un diccionario, marcado por el nombre de la columna.

Mi código para hacer esto es varios cientos de líneas de largo.

Creo que hay algunos ejemplos en la web, proyectos de código abierto, etc.


Obtenga una cadena [] de todas las líneas:

string[] lines = System.IO.File.ReadAllLines("yourfile.csv");

Luego recorra y divida esas líneas (este error es propenso porque no verifica las comas en los campos delimitados por comillas):

foreach (string line in lines) { string[] items = line.Split({'',''}}; }


Si quieres un manejo robusto de CSV, echa un vistazo a FileHelpers


String.Split simplemente no va a cortar, pero un Regex.Split puede - Pruebe este:

using System.Text.RegularExpressions; string[] line; line = Regex.Split( input, ",(?=(?:[^/"]*/"[^/"]*/")*(?![^/"]*/"))");

Donde ''entrada'' es la línea csv. Manejará los delimitadores entrecomillados y le devolverá una matriz de cadenas que representa cada campo en la línea.



string s = "1,2,3,4,5"; string myStrings[] = s.Split({'',''}};

Tenga en cuenta que Split () toma una matriz de caracteres para dividir.


CsvString.split('','');


Ya me estaba dividiendo en pestañas, así que esto me funcionó:

public static string CsvToTabDelimited(string line) { var ret = new StringBuilder(line.Length); bool inQuotes = false; for (int idx = 0; idx < line.Length; idx++) { if (line[idx] == ''"'') { inQuotes = !inQuotes; } else { if (line[idx] == '','') { ret.Append(inQuotes ? '','' : ''/t''); } else { ret.Append(line[idx]); } } } return ret.ToString(); }


http://github.com/claco/csvdatareader/ actualizado utilizando TextFieldParser sugerido por cfeduke.

A solo unos pocos pilares de exponer separadores / espacios trims / tipo ig solo necesitas código para robar.


string[] splitString = origString.Split('','');

(Después del comentario no agregado por el contestador original) Tenga en cuenta que esta respuesta aborda el caso ESPECÍFICO en el que se garantiza que NO hay comas en los datos.


string test = "one,two,three"; string[] okNow = test.Split('','');


string[] splitStrings = myCsv.Split(",".ToCharArray());


separationChar[] = {'';''}; // or ''/t'' '','' etc. var strArray = strCSV.Split(separationChar);