From ddd70d742ad3d3bf997c303b092e757c86e27d2f Mon Sep 17 00:00:00 2001 From: Michele Bastione Date: Fri, 15 May 2026 20:56:35 +0200 Subject: [PATCH] Fixed issue 627 Corrected oversight that prevented text cells to be linked to a style and added regression test --- .../ExcelOpenXmlSheetWriter.DefaultOpenXml.cs | 5 +++- .../MiniExcelIssueAsyncTests.cs | 23 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs index 7b0f18d5..e3ea394e 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.DefaultOpenXml.cs @@ -183,7 +183,10 @@ private Tuple GetCellValue(int rowIndex, int cellIndex, return Tuple.Create(RegularCellStyleIndex, StringDataType, string.Empty); if (value is string str) - return Tuple.Create(RegularCellStyleIndex, StringDataType, ExcelOpenXmlUtils.EncodeXML(str)); + { + var styleIndex = columnInfo?.ExcelFormatId is { } fmt and not -1 ? fmt.ToString() : RegularCellStyleIndex; + return Tuple.Create(styleIndex, StringDataType, ExcelOpenXmlUtils.EncodeXML(str)); + } var type = GetValueType(value, columnInfo); diff --git a/tests/MiniExcelTests/MiniExcelIssueAsyncTests.cs b/tests/MiniExcelTests/MiniExcelIssueAsyncTests.cs index 1a82c6aa..ec961eba 100644 --- a/tests/MiniExcelTests/MiniExcelIssueAsyncTests.cs +++ b/tests/MiniExcelTests/MiniExcelIssueAsyncTests.cs @@ -1888,4 +1888,27 @@ WITH test('Id', 'Name') AS ( Assert.All(rows, x => Assert.Single(x)); Assert.Equal("Name", rows[0].A); } + + [Fact] + public async Task TestIssue627() + { + var data = new[] { new { LongNumber = "1550432695793487872" } }; + + var config = new OpenXmlConfiguration + { + DynamicColumns = [ + new DynamicExcelColumn("LongNumber") { Format = "@" } + ] + }; + + await using var ms = new MemoryStream(); + await ms.SaveAsAsync(data, configuration: config); + ms.Seek(0, SeekOrigin.Begin); + + using var package = new ExcelPackage(ms); + var cell = package.Workbook.Worksheets[0].Cells["A2"]; + + Assert.Equal("1550432695793487872", cell.GetValue()); + Assert.Equal("@", cell.Style.Numberformat.Format); + } }