Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 23
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Generischer Converter für CSV Dateien


Autor: Rainer Schuster
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 7846
  
Kick it on dotnet-kicks.de  

Beschreibung:

Konvertiert eine CSV-Datei mit n-Spalten.

Der Funktion wird der Separator, der Dateiname, die Filterfunktion (Filter über Zeilennummer möglich) und das Zielformat als Lambda-Expression übergeben.

Dabei ruft der Converter Zeilenweise die Projection auf um die konvertierung durchzuführen.

Beispiel:

XElement result = new XElement( "root",
ConvertCsvTo ( "felder_mit_beschreibung.txt", '\t',
row => row > 0,
columns => new XElement ( "bereich",
new XAttribute ( "name", columns[ 0 ] ),
new XElement ( "feld",
new XElement ( "name", columns[ 2 ] ),
new XElement ( "beschreibung", columns[ 1 ] )))));


In diesem Beispiel wird die Ergebnissmenge in einen Wurzelknoten (root) gepackt. Transformiert wird eine CSV-Datei mit 3 Spalten, die durch einen Tabulator getrennt ist. Der Header interessiert dabei nicht, daher die Filterbedingung row > 0. Zum Schluss werden die Spalten in einem gewüschten Format in Form gebracht. Hier XML.
Genauso denkbar wäre eine Projektion auf XAML, Excell-Tabelle,vielleicht HTML, oder was auch immer.


Abgelegt unter: CSV, Predicate, Convert, LINQ, LinqToCSV.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/// <summary>
/// Converts a CSV-File to any desired Format. The File is read line by line 
/// and splitted with the separator
/// </summary>
/// <typeparam name="TTarget">The type of the target.</typeparam>
/// <param name="filename">The filename.</param>
/// <param name="separator">The separator.</param>
/// <param name="predicate">The predicate determining wether a can row should be parsed</param>
/// <param name="projection">The projection.</param>
/// <returns></returns>
public static IEnumerable<TTarget> ConvertCsvTo<TTarget> (
	string filename,
	char separator, 			
	Predicate<int> predicate, 
	Func<string[], TTarget> projection ) 
{
	int rowCount = 0;			
	return from row in File.ReadAllLines ( filename )
		where predicate ( rowCount++ )
		let columns = row.Split ( separator )
		select projection ( columns );			
}

Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Eventlog Eintrag finden
[C#] CSV Dateien schreiben
[C#] CSV und XML-Datei Datenbank-Import (incl. valid-check)
[VB.NET] ASP.Net Gridview to Excel
[C#] CSV Datei in DataTable einlesen
[C#] DataTable in CSV Datei speichern
[C#] CSV Datei in Datatable einlesen
[C#] arbeiten mit einem struct-Typ. Auflisten, zählen
[C#] Prüfen ob ein Text eine Zahl ist
[C#] byte[] -> base64 und base64 -> byte[]
[C#] MultiConverter (DEZ-HEX-OKT-BIN)
[VB.NET] Convert DataGridViewRow nach DataRow
[VB.NET] Convert DataGridViewRow nach Objekt-Typ
[C#] Integer nach Excel Spalten Bezeichnung
[C#] Excel Spalten Bezeichnung nach Integer
[VB.NET] String in Byte Array und zurück wandeln
[VB.NET] Listen, Arrays, Strings konvertieren
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Double in String umwandeln (mit InvariantCulture)
[C#] String in Double umwandeln (mit InvariantCulture)
[C#] UrlDecode
[C#] Eine allgemeine Liste (IEnumerable) in ein Array umwandeln
[C#] Export Office Dokument nach PDF / XPS
[C#] Another Bin-Watch (Console)
[VB.NET] Dezimalzahl in Zahl der Basis b < 37 konvertieren
[C#] Dateien suchen mit LINQ
[C#] LINQ kumulierte Summe
[C#] LINQ Rang im Ergebnis
[C#] LINQ-Erweiterung für eindeutige Liste
[C#] Search Plugin-DLLs with one line
[C#] Intellisense Unterstützung für XML Dateien für LINQ
[VB.NET] DataGridView Databinding mit LINQtoSQL
[VB.NET] Master-Detail Ansicht auf SQL Server-Daten mit LINQ-to-SQL
[C#] Controls gleichen Typs von einem Container in Winform holen
[C#] LINQ to Twitter via kostenloser 3rd Party Library
[C#] SQL Server Daten in Exel-Datei exportieren mit LINQ
[C#] LINQ to Flickr via kostenloser 3rd Party Library nutzen
[VB.NET] ChangeConflicts in LINQ-To-SQL behandeln
[C#] Sequential GUID
[C#] LINQ-Ergebnis in DataTable kopieren
[C#] Listen effektiv in ein Datenbankfeld speichern
[C#] Auf Daten eines SAP-Systems in Silverlight zugreifen
[C#] Kleinsten key in einem Dictionary mit LINQ abfragen
[C#] Daten aus SAP-System als ADO.NET Data Service bereitstellen
[C#] Dateisystem Abfragen mit LINQ erstellen
[C#] XML generieren mit Linq to XML
[C#] Mit LINQ und Join Collections zusammenführen
[C#] Dateien mit bestimmter Extension rekursiv in Array einlesen
[C#] Mit LINQ to SQL auf eine Datenbank zugreifen
[C#] Mit LINQtoXML XML Dateien erzeugen bzw. abfragen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.