DataTable 中的 ClosedXML 工作表不遵循文化

Ari*_*ard 6 c# datatable excel closedxml

当我通过 a 添加工作表时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);
Run Code Online (Sandbox Code Playgroud)

现在,您希望第一列 ( myDateColumn) 使用区域设置的短日期格式进行格式化en-GB,这应该是'31/10/2017',但它却出现了'10/31/2017'

从 SQLDataAdapter 取回 DataTable 后,我检查了 DataTable 中的区域设置,它与嵌套日期格式一样正确。请注意,有多个查询,我不会提前知道日期在哪里。

感谢某人可以提供的任何方向!

Ale*_*țea 3

我没有资格发表评论...

通过查看 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();
    }
Run Code Online (Sandbox Code Playgroud)

从你的问题中我不清楚你的代码中是否存在这种情况。

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