来自DataTable的ClosedXML工作表不在文化之后

时间:2017-10-31 19:30:43

标签: c# excel datatable closedxml

当我通过DataTable添加工作表时,我希望日期格式遵循应用程序的区域设置/文化,但它似乎从计算机中获取。

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

现在,您希望第一列(myDateColumn)使用en-GB语言环境的短日期格式进行格式化,该格式应该是'31/10/2017'但是它是{s}以'10/31/2017'代替。

一旦我从SQLDataAdapter取回它,我就检查了DataTable中的语言环境,并且它与嵌套日期格式一样正确。请注意,有多个查询,我不知道提前约会的位置。

欣赏某人可以提供的任何指示!

1 个答案:

答案 0 :(得分:1)

我没有评论的声誉......

通过查看ClosedXML github repo上的一些测试,看起来该库期望在实例化工作簿之前设置文化。 (https://github.com/ClosedXML/ClosedXML/blob/c2d408b127844ea3d4a5f6b060c548c953b6bcf3/ClosedXML_Tests/Excel/CalcEngine/LookupTests.cs#L17

RealmResults<Ticket> tickets = realm.where(Ticket.class)
                                .equalTo("messages.read", false)
                                .findAll();

我的问题不清楚你的代码是否属于这种情况。

如果已经是这种情况,你应该在Github上打开一个bug @ ClosedXML。

相关问题