From c8a4d1f907ed14a81d327e0aa064ce7fb819d1a0 Mon Sep 17 00:00:00 2001 From: izanhzh Date: Thu, 6 Feb 2025 14:28:36 +0800 Subject: [PATCH 1/2] adjust the location of the `CustomFormatter` execution --- .../OpenXml/ExcelOpenXmlSheetWriter.Async.cs | 18 +++++++++--------- .../OpenXml/ExcelOpenXmlSheetWriter.cs | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs index 9790fe5a..d62ec1a3 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs @@ -325,15 +325,6 @@ private async Task WriteCellAsync(MiniExcelAsyncStreamWriter writer, string cell private async Task WriteCellAsync(MiniExcelAsyncStreamWriter writer, int rowIndex, int cellIndex, object value, ExcelColumnInfo p, ExcelWidthCollection widthCollection) { - var columnReference = ExcelOpenXmlUtils.ConvertXyToCell(cellIndex, rowIndex); - var valueIsNull = value is null || value is DBNull; - - if (_configuration.EnableWriteNullValueCell && valueIsNull) - { - await writer.WriteAsync(WorksheetXml.EmptyCell(columnReference, GetCellXfId("2"))); - return; - } - if (p.CustomFormatter != null) { try @@ -346,6 +337,15 @@ private async Task WriteCellAsync(MiniExcelAsyncStreamWriter writer, int rowInde } } + var columnReference = ExcelOpenXmlUtils.ConvertXyToCell(cellIndex, rowIndex); + var valueIsNull = value is null || value is DBNull; + + if (_configuration.EnableWriteNullValueCell && valueIsNull) + { + await writer.WriteAsync(WorksheetXml.EmptyCell(columnReference, GetCellXfId("2"))); + return; + } + var tuple = GetCellValue(rowIndex, cellIndex, value, p, valueIsNull); var styleIndex = tuple.Item1; diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.cs index 96e16955..312b7d1a 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.cs @@ -325,15 +325,6 @@ private void PrintHeader(MiniExcelStreamWriter writer, List pro private void WriteCell(MiniExcelStreamWriter writer, int rowIndex, int cellIndex, object value, ExcelColumnInfo columnInfo, ExcelWidthCollection widthCollection) { - var columnReference = ExcelOpenXmlUtils.ConvertXyToCell(cellIndex, rowIndex); - var valueIsNull = value is null || value is DBNull; - - if (_configuration.EnableWriteNullValueCell && valueIsNull) - { - writer.Write(WorksheetXml.EmptyCell(columnReference, GetCellXfId("2"))); - return; - } - if (columnInfo?.CustomFormatter != null) { try @@ -346,6 +337,15 @@ private void WriteCell(MiniExcelStreamWriter writer, int rowIndex, int cellIndex } } + var columnReference = ExcelOpenXmlUtils.ConvertXyToCell(cellIndex, rowIndex); + var valueIsNull = value is null || value is DBNull; + + if (_configuration.EnableWriteNullValueCell && valueIsNull) + { + writer.Write(WorksheetXml.EmptyCell(columnReference, GetCellXfId("2"))); + return; + } + var tuple = GetCellValue(rowIndex, cellIndex, value, columnInfo, valueIsNull); var styleIndex = tuple.Item1; // https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-3.0.1 From 0b2e275ced2b0749fa8e29e6f4f8628bde3390dc Mon Sep 17 00:00:00 2001 From: izanhzh Date: Thu, 6 Feb 2025 14:45:46 +0800 Subject: [PATCH 2/2] fix bug --- src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs index d62ec1a3..2d16d021 100644 --- a/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs +++ b/src/MiniExcel/OpenXml/ExcelOpenXmlSheetWriter.Async.cs @@ -325,7 +325,7 @@ private async Task WriteCellAsync(MiniExcelAsyncStreamWriter writer, string cell private async Task WriteCellAsync(MiniExcelAsyncStreamWriter writer, int rowIndex, int cellIndex, object value, ExcelColumnInfo p, ExcelWidthCollection widthCollection) { - if (p.CustomFormatter != null) + if (p?.CustomFormatter != null) { try {