2017-10-31 3 views
0

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!

Antwort

0

Ich habe nicht den Ruf haben, Kommentar ...

von auf dem ClosedXML GitHub Repo bei einigen Tests suchen, scheint es, dass die Bibliothek der Kultur vor der Instanziierung die Arbeitsmappe gesetzt werden erwartet. (https://github.com/ClosedXML/ClosedXML/blob/c2d408b127844ea3d4a5f6b060c548c953b6bcf3/ClosedXML_Tests/Excel/CalcEngine/LookupTests.cs#L17)

private XLWorkbook workbook; 

    [OneTimeSetUp] 
    public void Init() 
    { 
     // Make sure tests run on a deterministic culture 
     System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
     workbook = SetupWorkbook(); 
    } 

Es ist mir unklar, aus Ihrer Frage, ob das der Fall in Ihrem Code ist.

Wenn dies bereits der Fall ist, sollten Sie einen Fehler @ ClosedXML auf Github öffnen.

+0

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) –

+0

Nein, ich verwende eine einzige Kultur für das gesamte Arbeitsbuch. Es wird eingestellt, bevor wir die neue Arbeitsmappe instanziieren. –

+0

@ArisBerard Haben Sie eine Problemumgehung für Ihr Problem gefunden? –