In deutschen Sprache sind Dezimaltrennzeichen, und Werttrennzeichen sind ";" . In Englisch/anderen Sprachen sind Dezimaltrennzeichen. und Wertetrenner sind ",".Schreiben einer .csv-Datei - unabhängig von der Kultur
Ich möchte eine CSV-Datei unabhängig von der aktuellen Kultur erstellen. Ich meine immer, dass die CSV-Datei "." hat Dezimaltrennzeichen und "," hat Werttrennzeichen.
Der Code hierfür ist unten angegeben.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Globalization;
namespace CSV_FILE_FORMAT
{
class Program
{
static void Main(string[] args)
{
string aFileName = "result.csv";
FileStream aFileStream = new FileStream(aFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
StreamWriter m_StreamWriter = new StreamWriter(aFileStream);
double[] values = new double[] { 10.5, 20.3, 30.2 };
for(int i = 0; i < values.Length;i++)
{
m_StreamWriter.Write(values[i].ToString(CultureInfo.InvariantCulture));
m_StreamWriter.Write(",");
}
}
}
}
Das Problem mit diesem Code ist, wenn OS in Deutsch ist. Die Dezimaltrennzeichen werden "," anstelle von "." Angezeigt.
Bitte lassen Sie mich wissen, der Code fehlt etwas.
_ "Das Problem mit diesem Code ist, wenn OS in Deutsch ist. Die Dezimaltrennzeichen werden angezeigt", "statt". "." _ Das sollte durch die Verwendung von "CultureInfo.InvariantCulture" verhindert werden. Also muss es etwas anderes geben, dass ich noch übersehen werde. –
m_StreamWriter.Write (Werte [i] .ToString (CultureInfo.InvariantCulture)); Ich benutze culture.invariantculture. aber ich bin immer noch nicht in der Lage, den richtigen Wert zu bekommen. – Raghav55
Der mitgelieferte Code funktioniert gut (außer zum Schließen der Ressourcen ;-)) auf einem deutschen Betriebssystem (Windows 7) und die Doubles sind mit einem Punkt "." wie von den Kommentaren erwartet. Selbst wenn die Kultureinstellungen auf "," eingestellt sind. –