Hallo,
ich würde gerne folgendes mittels einer C# Consolen Anwendung lösen:
Ich habe eine .CSV Datei mit mehreren Spalten. In der Spalte C steht eine Nummer z.B. 185032.
Jetzt würde ich gerne alle Zeilen in dieser CSV Datei löschen bei denen die Nummer in Spalte C kleiner als z.B. 185000 ist.
Ich habe mich schon über Regex informiert, bin aber nicht ganz sicher ob es nicht eventuell eine einfachere Lösung gibt?
LG RevangeXX
Gibt doch tausende an CSV-Bibliotheken - und dann eben noch selbst geschriebener Code.
Probier doch erst mal was aus - Du bist doch Entwickler 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo,
ich hab schon nach Lösungen gesucht die aber bisher leider nicht wirklich funktioniert haben.
LG
Dann bin ich ehrlich und direkt und sage, dass Du nicht richtig geschaut hast.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi RevangeXX,
was hast du denn schon probiert, und was hat dabei nicht funktioniert wie gewünscht?
Weeks of programming can save you hours of planning
Dann erklär mir doch bitte, nach was ich genau suchen soll?
Bei den meisten Treffern geht es nur um VBA oder um was komplett anderes.
Wie ich Zeilen aus einer CSV Datei lösche hab ich schon gefunden und ist auch nicht so schwer, nur wie ich den Wert einer bestimmten Spalte auslese hab ich bisher nicht gefunden / verstanden.
Wenn ich Beispielsweise nach "c# csv spalte wert auslesen" Suche kommen bei mir keine Treffer, die mir weiterhelfen.
LG
Hallo,
lese die CSV Datei in eine intelligent gewählte Datenstruktur (je nach vollständigem Aufbau und ggf. Änderungen eine Klasse oder direkt ein DataTable) ein. Dafür suchst du nach "C# read CSV File". Anschließend durchsuchst du die Daten.
Danach löschst du eben alle Einträge die weg sollen und schreibst die CSV-Datei zurück auf das Filesystem.
Wissen ist nicht alles. Man muss es auch anwenden können.
PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |
Wenn ich Beispielsweise nach "c# csv spalte wert auslesen" Suche kommen bei mir keine Treffer, die mir weiterhelfen.
Wenn ich danach suche, dann würde ich auch nichts finden - so funktioniert aber halt auch Google nicht wirklich. - vor allem in der Software Entwicklung nicht, in der man eher Englisch spricht 😉
Eine Suche nach übertragen "wie lese ich eine spalte mit c# aus, die aus einer CSV kommt" ist halt auch nicht hilfreich.
Eine CSV ist nichts anderes Menge von Zeilen mit mehreren Spalten.
Ergo, wenn man kurz nachdenkt und gedanklich überträgt, liest man eine CSV eben auch als Liste mit Werten ein - alles andere sind C# Grundlagen, wie man mit Listen und Variablen umgeht.
Hilfe zur Selbsthilfe:
Was Du wissen willst ist also eine Suche nach "c# read csv" - alles andere ist einfach Programmieren. Mit grundlegenden C# Bausteinen: Abfragen, Variablen, Schleifen.
Deswegen bist Du Entwickler: um selbst ein wenig nachzudenken und auch selbst Code zu schreiben.
Wenn Dir jetzt jemand den Code gibt, dann ist Dir auch nicht geholfen.
Dann hast Du Code, den Du nicht verstehst und beim nächsten Mal stehst Du wieder fragend vor dem nächsten Problem.
Edit: genau das von LaTino ist nun evtl. die Lösung, aber nicht hilfreich.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
using (var reader = new StreamReader(File.OpenRead("input.csv")))
using (var writer = new StreamWriter(File.OpenWrite("output.csv")))
{
string currentLine;
while ((currentLine = reader.ReadLine()) != null)
{
if (CsvModel.FromLine(currentLine).IsValid(185000))
{
writer.WriteLine(currentLine);
}
}
}
public class CsvModel
{
private readonly int _valueOfInterest;
private CsvModel(int valueOfInterest)
{
_valueOfInterest = valueOfInterest;
}
public bool IsValid(int check) => check >= _valueOfInterest;
public static CsvModel FromLine(string line)
{
int valueOfInterest = ??? //...denk dir was aus, du bist der Programmierer
return new CsvModel(valueOfInterest);
}
}
Mal eingedampft auf dein eigentliches Problem. Um den Wert aus einer einzelnen Zeile zu extrahieren, hast du ungefähr drölf Fantastilliarden Möglichkeiten. Such dir eine aus.
Viel Spaß,
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
War nicht kürzlich ein Thema, wie komplex man einem blutigen Anfänger antworten sollte?
Ich erlaube mir etwas verständlicheres zu bringen um zunächst überhaupt zu verstehen was da passieren muss. (Sorry... und um auf das eigentliche Problem einzugehen, statt auf ein Grundgerüst das um die Lösung herumgebaut werden kann aber nicht muss)
string[] lines = File.ReadAllLines(...);
List<string> remainingLines = new List<string>;
foreach (string line in lines)
{
string[] elements = String.Split(...); < anschauen !!!
if (elements[...] erfüllt Bedingung)
remainingLines.Add(line);
}
File.WriteAllLines(...);
Nunja, "das eigentliche Problem" hast du insofern näher umrissen, dass du string.Split() vorschlägst. Das drumherum ist völlig nebensächlich - ob man jetzt direkt auf der Zeichenkette arbeitet oder im vorauseilenden Gehorsam auf zukünftige weitere Anforderungen die Zeile in ein Objekt parst...ich hab letzteres gewählt, weil ersteres potenziell Spaghetti wird. Gemein ist den Lösungen, dass RevangeXX sie getrost ignorieren kann, weil sie nicht das eigentliche Problem ansprechen (CSV-Zeile -> auswerten). (Und wieso so spitz? Der Code ist nicht wirkich komplex.
@RevangeXX:
Für das Drumherum - Datei lesen, CSV-Zeilen lesen, Datei schreiben - gibt's wieder zig Möglichkeiten. Frag zwei Programmierer, und du kriegst drei Möglichkeiten.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
Spitz? Wollte ich nicht sein tut mir leid. Ich versuche immer mich selbst vorzustellen, als ich die Programmierer Denkweise noch nicht verinnerlicht hatte. Da hätte ich mir sicher gedacht.
Oh eine extra Klasse. Ich hätte ein if genommen, geht das denn nicht? Man braucht eine ganze Klasse dafür... warum wohl?
Ein => in einer Methode? Nein das sieht nicht aus wie eine Methode? Was ist es dann? Soll ich das jetzt tatsächlich auch noch hier fragen? Die glauben ja ich weiß gar nichts.
Wie ich den Wert aus csv herausbekomme weiß ich noch immer nicht aber der ganze Rest den ich mir vorstellte war auch noch falsch. Lieber Himmel ...
Wär doch schade.