diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlStyles.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlStyles.cs
index fc00794d..b2062268 100644
--- a/src/MiniExcel/OpenXml/ExcelOpenXmlStyles.cs
+++ b/src/MiniExcel/OpenXml/ExcelOpenXmlStyles.cs
@@ -154,7 +154,7 @@ public object ConvertValueByStyleFormat(int index, object value)
{ 14, new NumberFormatString("d/m/yyyy",typeof(DateTime?)) },
{ 15, new NumberFormatString("d-mmm-yy",typeof(DateTime?)) },
{ 16, new NumberFormatString("d-mmm",typeof(DateTime?)) },
- { 17, new NumberFormatString("mmm-yy",typeof(TimeSpan)) },
+ { 17, new NumberFormatString("mmm-yy",typeof(DateTime?)) },
{ 18, new NumberFormatString("h:mm AM/PM",typeof(TimeSpan?)) },
{ 19, new NumberFormatString("h:mm:ss AM/PM",typeof(TimeSpan?)) },
{ 20, new NumberFormatString("h:mm",typeof(TimeSpan?)) },
diff --git a/tests/MiniExcelTests/MiniExcelIssueTests.cs b/tests/MiniExcelTests/MiniExcelIssueTests.cs
index 1ee11af5..7124391a 100644
--- a/tests/MiniExcelTests/MiniExcelIssueTests.cs
+++ b/tests/MiniExcelTests/MiniExcelIssueTests.cs
@@ -4919,4 +4919,37 @@ public void TestIssue915()
Assert.Equal(7.4, result[1].Altitude);
Assert.Equal(8.6, result[2].Altitude);
}
+
+ // https://github.com/mini-software/MiniExcel/issues/1034
+ [Theory]
+ [InlineData(14)]
+ [InlineData(15)]
+ [InlineData(16)]
+ [InlineData(17)]
+ [InlineData(22)]
+ public void QueryReadsBuiltInDateFormatsAsDateTime(int numFmtId)
+ {
+ using var path = AutoDeletingPath.Create();
+ MiniExcel.SaveAs(path.ToString(), new[] { new { Value = "control" } });
+ Helpers.ReplaceStylesXml(path.ToString(), $"""
+
+
+
+
+
+
+
+ """);
+ Helpers.ReplaceFirstSheetXml(path.ToString(), """
+
+
+
+ 46327
+
+ """);
+
+ var row = MiniExcel.Query(path.ToString()).Single();
+
+ Assert.Equal(new DateTime(2026, 11, 1), (object)row.A);
+ }
}
diff --git a/tests/MiniExcelTests/Utils/Helpers.cs b/tests/MiniExcelTests/Utils/Helpers.cs
index a183493d..b0e8c1c8 100644
--- a/tests/MiniExcelTests/Utils/Helpers.cs
+++ b/tests/MiniExcelTests/Utils/Helpers.cs
@@ -91,6 +91,21 @@ internal static void ReplaceFirstSheetXml(string path, string worksheetXml)
writer.Write(worksheetXml);
}
+ internal static void ReplaceStylesXml(string path, string stylesXml)
+ {
+ using var stream = File.Open(path, FileMode.Open, FileAccess.ReadWrite);
+ using var archive = new ZipArchive(stream, ZipArchiveMode.Update, false, Encoding.UTF8);
+ var styles = archive.Entries.Single(w =>
+ w.FullName.Equals("xl/styles.xml", StringComparison.OrdinalIgnoreCase) ||
+ w.FullName.Equals("/xl/styles.xml", StringComparison.OrdinalIgnoreCase));
+ var entryName = styles.FullName;
+ styles.Delete();
+
+ var replacement = archive.CreateEntry(entryName);
+ using var writer = new StreamWriter(replacement.Open(), new UTF8Encoding(false));
+ writer.Write(stylesXml);
+ }
+
internal static string? GetFirstSheetDimensionRefValue(string path)
{
var ns = new XmlNamespaceManager(new NameTable());