DataTable
でワークシートを追加すると、日付形式がアプリケーションのロケール/カルチャに従うことが予想されますが、コンピュータから取得するようです。DataTableのClosedXMLワークシートがCultureに従っていません
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);
さて、あなたは'31/10/2017'
をする必要がありますen-GB
ロケールの短い日付形式を使用してフォーマットする最初の列(myDateColumn
)を期待するが、それは代わりに'10/31/2017'
として出てきています。
DataTableのロケールをSQLDataAdapterから取得したら、それをチェックしたところ、ネストされた日付フォーマットと同じです。複数のクエリがあることに注意してください。日付があらかじめわかっている場所はわかりません。
誰かが提供できる任意の方向を気に入ってください! ClosedXMLのgithubのレポ上のいくつかのテストを見ることによって、私がコメントするの評判を持っていない
SQLAdapterの結果に基づいてワークブックごとに複数のカルチャを使用しようとしていますか? ClosedXmlがそれをサポートするかどうかは分かりません...(もっとコードを掘る必要があります) –
いいえ、ワークブック全体で単一のカルチャを使用しています。新しいブックをインスタンス化する前に設定されています。 –
@ArisBerardあなたの問題の回避策を見つけることができましたか? –