est-il un moyen de lire un fichier csv dans une matrice, de sorte que chaque carré dans le fichier sera une cellule dans la matrice?lire le fichier csv C#
Répondre
Il existe de nombreux lecteurs CSV open source, et il est également facile de coder les vôtres.
Pour commencer à prendre, regardez codeplex.com: http://kbcsv.codeplex.com/
Ou tutoriels CodeProject: http://www.codeproject.com/KB/database/CsvReader.aspx
Pour être complet, voici ma propre classe utilitaire pour lire une ligne à partir d'un fichier CSV:
/// <summary>
/// Defines CSV reader states
/// </summary>
enum State
{
Initial,
Quote,
Data,
NestedQuote
}
/// <summary>
/// Initializes a new instance of the <see cref="CsvReader"/> class.
/// </summary>
/// <param name="inputStream">The input stream.</param>
public CsvReader(Stream inputStream)
{
if (inputStream == null)
throw new ArgumentNullException("inputStream");
reader = new StreamReader(inputStream);
}
/// <summary>
/// Reads a single line of CSV data.
/// </summary>
/// <returns>Array of CSV fields</returns>
public string[] Read()
{
var line = reader.ReadLine();
var retval = new List<string>();
if (line == null)
return null;
var state = State.Initial;
var text = new StringBuilder();
foreach (var ch in line)
switch (state)
{
case State.Initial:
if (ch == '"')
state = State.Quote;
else if (ch == ',')
retval.Add(string.Empty);
else
{
text.Append(ch);
state = State.Data;
}
break;
case State.Data:
if (ch == ',')
{
retval.Add(text.ToString());
text.Length = 0;
state = State.Initial;
}
else
text.Append(ch);
break;
case State.Quote:
if (ch == '"')
state = State.NestedQuote;
else
text.Append(ch);
break;
case State.NestedQuote:
if (ch == '"')
{
text.Append('"');
state = State.Quote;
break;
}
state = State.Data;
goto case State.Data;
}
retval.Add(text.ToString());
return retval.ToArray();
}
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
/// </summary>
public void Dispose()
{
reader.Dispose();
}
Pour faire la matrice (non testé):
var data = new List<string[]>();
string[] line;
using(reader = new CsvReader(stream))
while((line = reader.Read()) != null)
data.Add(line);
result = data.Select(row => row.Select(cell => int.Parse(cell)).ToArray()).ToArray();
Est-ce que cela gère les lignes qui contiennent des retours chariot entre guillemets? – cjk
c'est ce que je veux faire: int [] [] mat = LIRE DEPUIS CSV FILE ...; mon fichier csv contient int ... – aharon
non, malheureusement les retours chariot entraînent le début d'une nouvelle ligne: var line = reader.ReadLine(); - J'ai essayé avec Excel (2010), et il n'a pas permis les sauts de ligne entre guillemets, mais je ne connais pas exactement les spécifications – sukru
Il existe plusieurs façons. En commençant par un lecteur byte by byte. Cela dépend de votre format de fichier csv (avec/sans en-tête, les fins de ligne, "ou «) J'ai écrit ma propre classe
Un bon lecteur pour commencer:..
Il est un lecteur de texte dans l'espace de noms Visual Basic qui peut être utilisé en C# et gère même horribles fichiers CSV très bien.
il suffit d'ajouter une référence à Microsoft.VisualBasic
dans votre projet
CSV analyse syntaxique des expressions régulières: http://www.hotblue.com/article0000.aspx?a=0006
Pour élargir le concept avec des séparateurs personnalisés, voir ce post: How do I write a regex to match a string that doesn't contain a word?
- 1. lire le fichier csv dans php
- 2. Comment lire le fichier CSV en utilisant C#
- 3. lire le fichier csv sans pour
- 4. comment lire le fichier csv dans le jeu de données?
- 5. Comment lire un fichier csv avec python
- 6. comment utiliser subsonic pour lire le fichier csv
- 7. Lire un fichier CSV dans un tableau
- 8. lire le fichier index.dat C#
- 9. C# lire le fichier excel
- 10. Lire le fichier CSV dans sqlite3 sur l'iPhone
- 11. accès: lire le fichier CSV dans la table
- 12. ruby mechanize: comment lire le fichier csv binaire téléchargé
- 13. Tronquer le fichier CSV en C#
- 14. Lire xts à partir du fichier CSV dans R
- 15. Comment lire un fichier .txt ou un fichier .csv du programme C?
- 16. C++ Lire le fichier dans hash_map
- 17. lire une URL et récupérer un fichier csv
- 18. Charger et lire un fichier csv avec php
- 19. lire et écrire sur un même fichier csv
- 20. Lire/Ecrire/Trouver/Remplacer un énorme fichier CSV
- 21. Lire uniquement des champs particuliers du fichier CSV dans vb.net
- 22. Lire des fichiers CSV avec OleDbCommand/OleDbDataAdapter
- 23. Lire et vérifier le fichier .csv, puis le télécharger sur le serveur sql 2008 r2
- 24. Analyse d'un problème de fichier CSV C#
- 25. réparation de données dans le fichier csv
- 26. afficher le fichier csv en pièce jointe vb.net ou C#
- 27. Lire un CSV avec file_get_contents en PHP
- 28. Lire fichier .dat en C#
- 29. PHP Lire CSV et filtre par date
- 30. caractères alphanumériques à partir du fichier csv en C#
qu'entendez-vous par la matrice? une grille dans une interface utilisateur? si oui, quel cadre d'interface utilisateur? Si non, quel type de structure de données? –
@James - Je pense qu'il veut dire un tableau dans un format matriciel. 'chaîne [,]' –
droite! juste que je veux une matrice int, mais le moulage n'est pas un problème ici ... – aharon