Header in csv einfügen
Ich habe ein Programm, welches Daten aus einer csv abgleicht und unter bestimmten Bedingungen in eine neue csv einfügt.
Leider bekomme ich es nicht hin, dass der neuen csv ein Header geschrieben wird.
Der Quellcode sieht wie folgt aus:
Leider bekomme ich es nicht hin, dass der neuen csv ein Header geschrieben wird.
Der Quellcode sieht wie folgt aus:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace CsvMerge
{
public static class Program
{
public static void Main()
{
// ignorierte Artikelnummer holen
string filteredArticles = File.ReadAllLines("Artikelfilter.txt",Encoding.Default);
// alle verfügbaren (Bild-)Dateien vom FTP-Server holen
List<string> availableImages = Program.GetFtpFiles().ToList();
// die Zeilen aus allen CSV-Dateien laden
IEnumerable<List<string>> allCsvRows = Program.GetCsvRows();
// alle Zeilen durchlaufen und der Ergebnisliste hinzufügen, wenn es ein Bild zum Artikel gibt
List<List<string>> result = new List<List<string>>();
foreach (List<string> row in allCsvRows)
{
string artikelNr = row[1];
if (availableImages.Contains(artikelNr + ".jpg", StringComparer.InvariantCultureIgnoreCase))
row[21] = "http://coxx.it/pictures/" + artikelNr + ".jpg";
// nur Zeilen übernehmen mit Bild und nicht rausgefilterten Artikelnummern
if (!String.IsNullOrEmpty(row[21]) && !filteredArticles.Contains(artikelNr))
result.Add(row);
}
// wieder CSV-Zeilen erstellen
string resultLines = result
.Select(cells => String.Join(";",cells.Select(value => "\"" + value.Replace("\"","\\\"") + "\"").ToArray()))
.ToArray();
// CSV-Datei erstellen
string fileName = "merged.csv";
File.Delete(fileName);
File.WriteAllLines(fileName,resultLines,Encoding.Default);
// CSV-Datei hochladen
WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("Login1","Password");
webClient.UploadFile("FTP-Server"+fileName,fileName);
}
private static IEnumerable<string> GetFtpFiles()
{
WebRequest webRequest = WebRequest.Create("FTP-Server");
webRequest.Credentials = new NetworkCredential("Login2","Password");
webRequest.Method = WebRequestMethods.Ftp.ListDirectory;
using (WebResponse webResponse = webRequest.GetResponse())
using (Stream responseStream = webResponse.GetResponseStream())
using (StreamReader streamReader = new StreamReader(responseStream))
while (!streamReader.EndOfStream)
yield return streamReader.ReadLine();
}
private static IEnumerable<List<string>> GetCsvRows()
{
foreach (string file in Directory.GetFiles(@"E:\FTP","*.csv"))
{
string content = File.ReadAllLines(file,Encoding.Default);
foreach (string line in content)
yield return Regex.Matches(line,@"""(?<cell>.*?)(?<!\\)"",?").Cast<Match>().Select(match => match.Groups["cell"].Value).ToList();
}
}
}
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 196272
Url: https://administrator.de/contentid/196272
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
1 Kommentar