diff --git a/src/EPPlus/Data/PowerQuery/ExcelPowerQueryMetaDataEntry.cs b/src/EPPlus/Data/PowerQuery/ExcelPowerQueryMetaDataEntry.cs index c0872575c..1ebf15ee7 100644 --- a/src/EPPlus/Data/PowerQuery/ExcelPowerQueryMetaDataEntry.cs +++ b/src/EPPlus/Data/PowerQuery/ExcelPowerQueryMetaDataEntry.cs @@ -153,11 +153,11 @@ public string GetValueAsText(CultureInfo culture) } if (Value is int i) { - return "l" + i.ToString(); + return "l" + i.ToString(CultureInfo.InvariantCulture); } if (Value is DateTime dt) { - return "d" + dt.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); + return "d" + dt.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ", CultureInfo.InvariantCulture); } if (Value is bool b) { @@ -165,11 +165,11 @@ public string GetValueAsText(CultureInfo culture) } if (Value is double d) { - return "f" + d.ToString(); + return "f" + d.ToString(CultureInfo.InvariantCulture); } else { - return "s" + Value.ToString(); //You shoul never end up here. + return "s" + Value.ToString(); //You should never end up here. } } /// diff --git a/src/EPPlusTest/Data/ConnectionTests.cs b/src/EPPlusTest/Data/ConnectionTests.cs index 6fc695598..12499eddb 100644 --- a/src/EPPlusTest/Data/ConnectionTests.cs +++ b/src/EPPlusTest/Data/ConnectionTests.cs @@ -3,7 +3,9 @@ using OfficeOpenXml.Data.Connection; using System; using System.Data.Common; +using System.Globalization; using System.Text; +using System.Threading; using System.Xml; namespace EPPlusTest.Data @@ -193,10 +195,26 @@ public void ReadEPPWebPowerQuery() SaveAndCleanup(p); } } + [TestMethod] - public void AddPivotTableWithConnection() + public void GetValueAsText_DateTime_ShouldUseInvariantCulture() { + var cc = Thread.CurrentThread.CurrentCulture; + try + { + Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fi-FI"); + var entry = new ExcelPowerQueryMetaDataEntry("FillLastUpdated", + new DateTime(2026, 2, 19, 8, 15, 36, DateTimeKind.Utc)); + var result = entry.GetValueAsText(CultureInfo.GetCultureInfo("fi-FI")); + Assert.IsTrue(result.Contains(":"), + $"Expected colon as time separator but got: {result}"); + } + finally + { + Thread.CurrentThread.CurrentCulture = cc; + } } + [ClassCleanup] public static void Cleanup() { diff --git a/src/EPPlusTest/Issues/PackageIssues.cs b/src/EPPlusTest/Issues/PackageIssues.cs index 4aa0d722d..92389dc46 100644 --- a/src/EPPlusTest/Issues/PackageIssues.cs +++ b/src/EPPlusTest/Issues/PackageIssues.cs @@ -1,6 +1,12 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using OfficeOpenXml; +using System; +using System.ComponentModel; using System.Drawing; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Threading; namespace EPPlusTest.Issues {