当我通过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'
但它显示为'10/31/2017'
。
从 SQLDataAdapter 取回数据表中的区域设置后,我检查了它,它是正确的,嵌套日期格式也是如此。请注意,有多个查询,我不会提前知道日期在哪里。
欣赏某人可以提供的任何方向!
我没有评论的声誉...
通过查看 ClosedXML github 存储库上的一些测试,似乎库希望在实例化工作簿之前设置区域性。(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();
}
从您的问题中我不清楚您的代码中是否是这种情况。
如果已经是这种情况,你应该在Github上打开一个错误@ClosedXML。