xlsx: built-in date format 14 should use the locale short date

Geschlossen
#1,185 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Ein zugehöriger Pull Request wurde bereits gemerged.

  • #1212 von @andiwand — gemerged

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
74/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Bereich
localization

Rechercherichtung

Start in src/odr/internal/ooxml/spreadsheet/ooxml_spreadsheet_style.cpp at the table mapping built-in numFmtId values, where 14 currently becomes mm-dd-yy; then trace how the document locale (or system regional settings) reaches the renderer, since ECMA-376 Part 1 §18.8.30 makes formats 14-17 and 22 locale-dependent. Reproduce with an xlsx cell carrying numFmtId="14" and value 41640, and confirm done when en-US renders 1/1/2014 and the v7.4.0→v7.5.0 reference-output check passes.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug formatting

An xlsx cell with the built-in number format 14 shows its date as 01-01-14. Excel and LibreOffice show the short date of the locale, for example 1/1/2014 in en-US.

src/odr/internal/ooxml/spreadsheet/ooxml_spreadsheet_style.cpp maps format 14 to mm-dd-yy, the code that ECMA-376 Part 1, 18.8.30 lists. But the spec also says that formats 14 to 17 and 22 follow the regional settings of the system. So the renderer must use the short date of the document locale, not the fixed code.

Steps:

  1. Open an xlsx with a cell that has numFmtId="14" and the value 41640.
  2. Render it.

Expected: 1/1/2014 (for en-US). Actual: 01-01-14.

In v7.4.0, the cell showed the raw serial 41640, so this is not a regression. The v7.4.0 → v7.5.0 reference-output check found it.

🤖 Generated with Claude Code

Vorherrschende Sprache
C++
Sterne
41
Forks
10
Ø Merge
10 Std. 30 Min.
Gemergte PRs (30 T.)
342

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus opendocument-app/OpenDocument.core

Alle Issues in opendocument-app/OpenDocument.core

Ähnliche Issues

Weitere Issues zu C++

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.