CSVSharp est un composant que j'ai développé l'an passé mais qui a dormi pendant un an, le temps que je remette de l'ordre et me décide à le publier !
Le but est comme son nom le sous-entend de fournir les services nécessaires à la lecture et l'écriture de fichiers CSV de la même façon que les flux traditionnaux, c'est à dire au travers de 2 classes CSVReader et CSVWriter.
Tout est écrit en C# mais le code compilé est bien sur compatible avec les autres langages .NET.
Source / Exemple :
// Exemple d'utilisation (fourni dans le zip) :
try
{
CSVSharp.CSVSharp.Separators separator = CSVSharp.CSVSharp.Separators.Semicolumn;
CSVWriter writer = new CSVWriter("export.csv", separator);
writer.HeaderToCapitalLetters = true;
// Insert a character like the separator you chosen to test that property
writer.CheckTableContentSeparatorConflicts = true;
#region DataTable Setting
DataTable dt = new DataTable("CSV");
dt.Columns.Add("MembreID", Type.GetType("System.Int32"));
dt.Columns.Add("Nom", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr[0] = 1;
dr[1] = "Eric";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 2;
dr[1] = "Marion";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = 3;
dr[1] = "Amélie";
dt.Rows.Add(dr);
Console.WriteLine("Export running...");
#endregion
writer.CreateCSVFromDataTable(dt, true);
CSVReader reader = new CSVReader("export.csv", separator, true);
dt = reader.CreateDataTableFromCSV();
#region Display of the content
Console.Write("\nHEADER: ");
if (reader.FirstRowIsHeader)
Console.WriteLine("There are headers.\n");
else
Console.WriteLine("There are no headers.\n");
Console.WriteLine("Dataset columns list:\n");
foreach (DataColumn d in dt.Columns)
{
Console.WriteLine("\t" + d.ColumnName);
}
Console.WriteLine("\nDataset columns list:\n");
foreach (DataRow d in dt.Rows)
{
Console.WriteLine("\t{0} - {1}", d[0], d[1]);
}
Console.WriteLine("\nImport done!");
#endregion
}
catch (CSVDataTableConflictsException ex)
{
Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
}
finally
{
Console.ReadKey();
}
Conclusion :
Je serais intéressé par des feed-backs en tous genres. Critiques, améliorations, erreurs trouvées...
De même si vous l'utilisez, cela me ferait plaisir de le savoir car dans ce cas la publication n'aurait pas servi à rien :-)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.