Wenn ich ein Arbeitsblatt über eine DataTable
hinzufügen, würde ich erwarten, dass die Datumsformate dem Gebietsschema/Kultur der Anwendung folgen, aber es scheint, dass das vom Computer zu nehmen.ClosedXML Worksheet von DataTable folgt nicht Kultur
string culture = "en-GB";
var newCulture = new CultureInfo(culture);
Thread.CurrentThread.CurrentCulture = newCulture;
Thread.CurrentThread.CurrentUICulture = newCulture; //probably unnecessary?
CultureInfo.DefaultThreadCurrentCulture = newCulture;
// ... select myDateColumn, myIntCol, myString
workBook.AddWorksheet(myDataTableThatContainsQueryResults, tabName);
Nun, würden Sie die erste Spalte (myDateColumn
) erwarten das kurze Datumsformat des en-GB
locale-Format, die '31/10/2017'
sein sollte, aber es wird stattdessen als '10/31/2017'
herauskommen.
Ich überprüfte das Gebietsschema in der DataTable, sobald ich es aus dem SQLDataAdapter zurück und es ist korrekt, wie die geschachtelten Datumsformate sind. Beachten Sie, dass es mehrere Abfragen gibt, und ich weiß nicht, wo die Daten im Voraus sind.
Schätzen Sie jede Richtung, die jemand bieten kann!
Versuchen Sie, mehrere Kulturen pro Arbeitsmappe basierend auf den SQLAdapter-Ergebnissen zu verwenden? Ich weiß nicht, ob ClosedXml das unterstützt ... (würde mehr Code-Grabung benötigen) –
Nein, ich verwende eine einzige Kultur für das gesamte Arbeitsbuch. Es wird eingestellt, bevor wir die neue Arbeitsmappe instanziieren. –
@ArisBerard Haben Sie eine Problemumgehung für Ihr Problem gefunden? –