XLSX/XLS: whole numbers render as "1.0" when the column contains a blank cell
Author: ManoharPaturiCreated Sep 13, 2026Updated Sep 13, 2026
Description
In XLSX/XLS conversion, a single blank cell forces pandas to read its column as float64, so every whole number in that column renders with a .0 suffix, inconsistent with clean columns beside it:
# sheet: A1='count', A2=1, A3 blank, A4=2
from markitdown import MarkItDown, StreamInfo
...
'| count |',
'| 1.0 |',
'| NaN |',
'| 2.0 |',
Expected the integer rendering of clean columns: 1, 2.
Reproduction
import io
from openpyxl import Workbook
from markitdown import MarkItDown, StreamInfo
wb = Workbook(); ws = wb.active
ws['A1'] = 'count'; ws['A2'] = 1; ws['A3'] = None; ws['A4'] = 2
buf = io.BytesIO(); wb.save(buf); buf.seek(0)
print(MarkItDown().convert_stream(buf, stream_info=StreamInfo(extension='.xlsx')).markdown)
No network or fixture needed.
Notes
Distinct from the NaN-noise discussion in #2124 / #2286: simulating their patch still renders 1.0 for a numeric-header/data-only sheet, so the float64 promotion is a separate defect.
Environment
markitdown main (cc0ca9e), Python 3.12
Source: microsoft/markitdown