質問する

Revision history [back]

click to hide/show revision 1
最初のバージョン

解決策不明のメモ書き。

  1. LibreOfficeを起動し、メインメニューのTools->Optionsと辿り、左側ツリーのLanguage Settings->Languagesと辿った右側、Locale SettingをJapaneseにして、念のため、LibreOfficeを再起動。
  2. Calcを起動し、A1セルに 2017-11-06を入力する。文字列ではなく日付として認識されるため、右詰めで表示される。
  3. このセルのコンテキストメニューからFormat Cellsを選択。
  4. NumbersタブにはFormat Codeがある。ここにYYYY/MM/DDを入力、OKボタンでこのダイアログを閉じる。
  5. A1の表示が2017/11/06になる。
  6. このファイルをtest.xlsxとして保存。
  7. このファイルをExcel 2016で開く。
  8. A1には11/06/2017と表示されている。保存しないで終了。(LibreOfficeの責任かExcelの責任かわからなくなる)
  9. さて、このtest.xlsxのバックアップを取った上で、test.zipなどとリネームし、展開。
  10. xlフォルダにstyles.xmlというファイルがあるので、これをテキストエディタで開く。
  11. numFmt要素の一つに以下のような属性を見つける。 (Excelの影響を受けていないのでLibreOfficeの責任) formatCode="MM/DD/YYYY"
  12. 属性値をYYYY/MM/DDに書き換える。
  13. 書き換えたものをもう一度圧縮し直し、もとのようにリネームする。
  14. Excel 2016でこのファイルを開き、YYYY/MM/DDの順になっていることを確認。例によって保存はしない。
  15. この属性を設定しているコード、及びその値がどこから来ているかをopengrok上で頑張って探す。 https://opengrok.libreoffice.org/xref/core/sc/source/filter/excel/xestyle.cxx?r=05fbb253#1345 https://opengrok.libreoffice.org/xref/core/svl/source/numbers/zforscan.cxx?r=a4bf4aa8#2904
  16. 再現条件を考える。「ハードコードされているen_US」と「年月日の標準的な並び順が異なるロケール(確認してないけど多分日本語も!)」において、変更前の日付各部の区切り子がハイフンでないときに再現する? 例えばロケールが最初からen_USなら再現しないとか?(代わりに「元号」とかに影響が出ることもあるのかも。未検証。)
  17. まで考えて、エンジニアサイドではなくエンドユーザーサイドの解決策とはいえず、難度も手間もかかるため、質問者によっては無言で質問を閉じられたりする状況を想像して回答するか躊躇ったり、恐れおののいたりする。いつものように。

一応、LibreOfficeでxlsx形式で保存してExcelで読んだとき、元のフォーマットと異なる形で表示されるケースを、検討してみたが、

ローカル情報が オランダ語
ローカル情報が インド語

Excel 2016上で確認する方法が分からなかった。見当ハズレであれば申し訳ない。

解決策不明のメモ書き。

  1. LibreOfficeを起動し、メインメニューのTools->Optionsと辿り、左側ツリーのLanguage Settings->Languagesと辿った右側、Locale SettingをJapaneseにして、念のため、LibreOfficeを再起動。
  2. Calcを起動し、A1セルに 2017-11-06を入力する。文字列ではなく日付として認識されるため、右詰めで表示される。
  3. このセルのコンテキストメニューからFormat Cellsを選択。
  4. NumbersタブにはFormat Codeがある。ここにYYYY/MM/DDを入力、OKボタンでこのダイアログを閉じる。
  5. A1の表示が2017/11/06になる。
  6. このファイルをtest.xlsxとして保存。
  7. このファイルをExcel 2016で開く。
  8. A1には11/06/2017と表示されている。保存しないで終了。(LibreOfficeの責任かExcelの責任かわからなくなる)
  9. さて、このtest.xlsxのバックアップを取った上で、test.zipなどとリネームし、展開。
  10. xlフォルダにstyles.xmlというファイルがあるので、これをテキストエディタで開く。
  11. numFmt要素の一つに以下のような属性を見つける。 (Excelの影響を受けていないのでLibreOfficeの責任) formatCode="MM/DD/YYYY"
  12. 属性値をYYYY/MM/DDに書き換える。
  13. 書き換えたものをもう一度圧縮し直し、もとのようにリネームする。
  14. Excel 2016でこのファイルを開き、YYYY/MM/DDの順になっていることを確認。例によって保存はしない。
  15. この属性を設定しているコード、及びその値がどこから来ているかをopengrok上で頑張って探す。 https://opengrok.libreoffice.org/xref/core/sc/source/filter/excel/xestyle.cxx?r=05fbb253#1345 https://opengrok.libreoffice.org/xref/core/svl/source/numbers/zforscan.cxx?r=a4bf4aa8#2904
  16. 再現条件を考える。「ハードコードされているen_US」と「年月日の標準的な並び順が異なるロケール(確認してないけど多分日本語も!)」において、変更前の日付各部の区切り子がハイフンでないときに再現する? 例えばロケールが最初からen_USなら再現しないとか?(代わりに「元号」とかに影響が出ることもあるのかも。未検証。)
  17. まで考えて、エンジニアサイドではなくエンドユーザーサイドの解決策とはいえず、難度も手間もかかるため、質問者によっては無言で質問を閉じられたりする状況を想像して回答するか躊躇ったり、恐れおののいたりする。いつものように。

一応、LibreOfficeでxlsx形式で保存してExcelで読んだとき、元のフォーマットと異なる形で表示されるケースを、検討してみたが、

ローカル情報が オランダ語
ローカル情報が インド語

Excel 2016上で確認する方法が分からなかった。見当ハズレであれば申し訳ない。

Version: 6.0.0.0.alpha1+ (x64)
Build ID: dae6ba564fcf20299b7a560aeb346efc84364d41
CPU threads: 4; OS: Windows 10.0; UI render: GL;
TinderBox: Win-x86_64@42, Branch:master, Time: 2017-11-01_01:54:14
Locale: ja-JP (ja_JP); Calc: CL

解決策不明のメモ書き。

  1. LibreOfficeを起動し、メインメニューのTools->Optionsと辿り、左側ツリーのLanguage Settings->Languagesと辿った右側、Locale SettingをJapaneseにして、念のため、LibreOfficeを再起動。
  2. Calcを起動し、A1セルに 2017-11-06を入力する。文字列ではなく日付として認識されるため、右詰めで表示される。
  3. このセルのコンテキストメニューからFormat Cellsを選択。
  4. NumbersタブにはFormat Codeがある。ここにYYYY/MM/DDを入力、OKボタンでこのダイアログを閉じる。
  5. A1の表示が2017/11/06になる。
  6. このファイルをtest.xlsxとして保存。
  7. このファイルをExcel 2016で開く。
  8. A1には11/06/2017と表示されている。保存しないで終了。(LibreOfficeの責任かExcelの責任かわからなくなる)
  9. さて、このtest.xlsxのバックアップを取った上で、test.zipなどとリネームし、展開。
  10. xlフォルダにstyles.xmlというファイルがあるので、これをテキストエディタで開く。
  11. numFmt要素の一つに以下のような属性を見つける。 (Excelの影響を受けていないのでLibreOfficeの責任) (Excelの影響を受けていないのでLibreOfficeの責任)
    formatCode="MM/DD/YYYY"
  12. 属性値をYYYY/MM/DDに書き換える。
  13. 書き換えたものをもう一度圧縮し直し、もとのようにリネームする。
  14. Excel 2016でこのファイルを開き、YYYY/MM/DDの順になっていることを確認。例によって保存はしない。
  15. この属性を設定しているコード、及びその値がどこから来ているかをopengrok上で頑張って探す。 https://opengrok.libreoffice.org/xref/core/sc/source/filter/excel/xestyle.cxx?r=05fbb253#1345 https://opengrok.libreoffice.org/xref/core/svl/source/numbers/zforscan.cxx?r=a4bf4aa8#2904
  16. 再現条件を考える。「ハードコードされているen_US」と「年月日の標準的な並び順が異なるロケール(確認してないけど多分日本語も!)」において、変更前の日付各部の区切り子がハイフンでないときに再現する? 例えばロケールが最初からen_USなら再現しないとか?(代わりに「元号」とかに影響が出ることもあるのかも。未検証。)
  17. まで考えて、エンジニアサイドではなくエンドユーザーサイドの解決策とはいえず、難度も手間もかかるため、質問者によっては無言で質問を閉じられたりする状況を想像して回答するか躊躇ったり、恐れおののいたりする。いつものように。

一応、LibreOfficeでxlsx形式で保存してExcelで読んだとき、元のフォーマットと異なる形で表示されるケースを、検討してみたが、

ローカル情報が オランダ語
ローカル情報が インド語

Excel 2016上で確認する方法が分からなかった。見当ハズレであれば申し訳ない。

Version: 6.0.0.0.alpha1+ (x64)
Build ID: dae6ba564fcf20299b7a560aeb346efc84364d41
CPU threads: 4; OS: Windows 10.0; UI render: GL;
TinderBox: Win-x86_64@42, Branch:master, Time: 2017-11-01_01:54:14
Locale: ja-JP (ja_JP); Calc: CL

解決策不明のメモ書き。

  1. LibreOfficeを起動し、メインメニューのTools->Optionsと辿り、左側ツリーのLanguage Settings->Languagesと辿った右側、Locale SettingをJapaneseにして、念のため、LibreOfficeを再起動。
  2. Calcを起動し、A1セルに 2017-11-06を入力する。文字列ではなく日付として認識されるため、右詰めで表示される。
  3. このセルのコンテキストメニューからFormat Cellsを選択。
  4. NumbersタブにはFormat Codeがある。ここにYYYY/MM/DDを入力、OKボタンでこのダイアログを閉じる。
  5. A1の表示が2017/11/06になる。
  6. このファイルをtest.xlsxとして保存。
  7. このファイルをExcel 2016で開く。
  8. A1には11/06/2017と表示されている。保存しないで終了。(LibreOfficeの責任かExcelの責任かわからなくなる)
  9. さて、このtest.xlsxのバックアップを取った上で、test.zipなどとリネームし、展開。
  10. xlフォルダにstyles.xmlというファイルがあるので、これをテキストエディタで開く。
  11. numFmt要素の一つに以下のような属性を見つける。 (Excelの影響を受けていないのでLibreOfficeの責任)
    formatCode="MM/DD/YYYY"
  12. 属性値をYYYY/MM/DDに書き換える。
  13. 書き換えたものをもう一度圧縮し直し、もとのようにリネームする。
  14. Excel 2016でこのファイルを開き、YYYY/MM/DDの順になっていることを確認。例によって保存はしない。
  15. この属性を設定しているコード、及びその値がどこから来ているかをopengrok上で頑張って探す。 https://opengrok.libreoffice.org/xref/core/sc/source/filter/excel/xestyle.cxx?r=05fbb253#1345 https://opengrok.libreoffice.org/xref/core/sc/source/filter/excel/xestyle.cxx?r=05fbb253#1345
    https://opengrok.libreoffice.org/xref/core/svl/source/numbers/zforscan.cxx?r=a4bf4aa8#2904
  16. 再現条件を考える。「ハードコードされているen_US」と「年月日の標準的な並び順が異なるロケール(確認してないけど多分日本語も!)」において、変更前の日付各部の区切り子がハイフンでないときに再現する? 例えばロケールが最初からen_USなら再現しないとか?(代わりに「元号」とかに影響が出ることもあるのかも。未検証。)
  17. まで考えて、エンジニアサイドではなくエンドユーザーサイドの解決策とはいえず、難度も手間もかかるため、質問者によっては無言で質問を閉じられたりする状況を想像して回答するか躊躇ったり、恐れおののいたりする。いつものように。

一応、LibreOfficeでxlsx形式で保存してExcelで読んだとき、元のフォーマットと異なる形で表示されるケースを、検討してみたが、

ローカル情報が オランダ語
ローカル情報が インド語

Excel 2016上で確認する方法が分からなかった。見当ハズレであれば申し訳ない。

Version: 6.0.0.0.alpha1+ (x64)
Build ID: dae6ba564fcf20299b7a560aeb346efc84364d41
CPU threads: 4; OS: Windows 10.0; UI render: GL;
TinderBox: Win-x86_64@42, Branch:master, Time: 2017-11-01_01:54:14
Locale: ja-JP (ja_JP); Calc: CL