diff options
author | Eike Rathke <erack@redhat.com> | 2019-10-16 18:47:40 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2019-10-17 17:18:16 +0200 |
commit | bd8b2a95e2c88cdab80c514c0d6364bad91d9177 (patch) | |
tree | 6140a3dddd06a397f26fc29cffcbea3547802bbb /svl | |
parent | 18d8ba49dcddfc7b01751d278f404a7eaebe5591 (diff) |
Resolves: tdf#126773 Excel uses lowercase date and time format code keywords
... so do the same when exporting to prevent surprises with iOS
and OSX viewers or maybe other tools.
This made it necessary to adapt
ScExportTest::testExtendedLCIDXLSX() that checks calendar and date
relevant exported format strings.
Change-Id: I243d536e2a42562ec46375923facfa222ecbb29b
Reviewed-on: https://gerrit.libreoffice.org/80920
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/numbers/zforlist.cxx | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index 053e195cd82a..7fc999501780 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -787,12 +787,50 @@ void SvNumberFormatter::FillKeywordTableForExcel( NfKeywordTable& rKeywords ) // Replace upper case "GENERAL" with proper case "General". rKeywords[ NF_KEY_GENERAL ] = GetStandardName( LANGUAGE_ENGLISH_US ); + + // Excel or OOXML do not specify format code keywords case sensitivity, + // but given and writes them lower case. Using upper case even lead to an + // odd misrepresentation in iOS viewer and OSX Quicklook viewer that + // strangely use "D" and "DD" for "days since beginnning of year", which is + // nowhere defined. See tdf#126773 + // Use lower case for all date and time keywords where known. See OOXML + // ECMA-376-1:2016 18.8.31 numFmts (Number Formats) + rKeywords[ NF_KEY_MI ] = "m"; + rKeywords[ NF_KEY_MMI ] = "mm"; + rKeywords[ NF_KEY_M ] = "m"; + rKeywords[ NF_KEY_MM ] = "mm"; + rKeywords[ NF_KEY_MMM ] = "mmm"; + rKeywords[ NF_KEY_MMMM ] = "mmmm"; + rKeywords[ NF_KEY_MMMMM ] = "mmmmm"; + rKeywords[ NF_KEY_H ] = "h"; + rKeywords[ NF_KEY_HH ] = "hh"; + rKeywords[ NF_KEY_S ] = "s"; + rKeywords[ NF_KEY_SS ] = "ss"; + /* XXX: not defined in OOXML: rKeywords[ NF_KEY_Q ] = "q"; */ + /* XXX: not defined in OOXML: rKeywords[ NF_KEY_QQ ] = "qq"; */ + rKeywords[ NF_KEY_D ] = "d"; + rKeywords[ NF_KEY_DD ] = "dd"; + rKeywords[ NF_KEY_DDD ] = "ddd"; + rKeywords[ NF_KEY_DDDD ] = "dddd"; + rKeywords[ NF_KEY_YY ] = "yy"; + rKeywords[ NF_KEY_YYYY ] = "yyyy"; + /* XXX: not defined in OOXML: rKeywords[ NF_KEY_AAA ] = "aaa"; */ + /* XXX: not defined in OOXML: rKeywords[ NF_KEY_AAAA ] = "aaaa"; */ + rKeywords[ NF_KEY_EC ] = "e"; + rKeywords[ NF_KEY_EEC ] = "ee"; + rKeywords[ NF_KEY_G ] = "g"; + rKeywords[ NF_KEY_GG ] = "gg"; + rKeywords[ NF_KEY_GGG ] = "ggg"; + rKeywords[ NF_KEY_R ] = "r"; + rKeywords[ NF_KEY_RR ] = "rr"; + /* XXX: not defined in OOXML: rKeywords[ NF_KEY_WW ] = "ww"; */ + // Remap codes unknown to Excel. - rKeywords[ NF_KEY_NN ] = "DDD"; - rKeywords[ NF_KEY_NNN ] = "DDDD"; + rKeywords[ NF_KEY_NN ] = "ddd"; + rKeywords[ NF_KEY_NNN ] = "dddd"; // NNNN gets a separator appended in SvNumberformat::GetMappedFormatString() - rKeywords[ NF_KEY_NNNN ] = "DDDD"; - // Export the Thai T NatNum modifier. + rKeywords[ NF_KEY_NNNN ] = "dddd"; + // Export the Thai T NatNum modifier. This must be uppercase for internal reasons. rKeywords[ NF_KEY_THAI_T ] = "T"; } |