ECMA-376、第2版、パート1-基本およびマークアップ言語リファレンスによると、SpreadsheetMLは、3つの可能な互換性設定とさまざまな範囲で日付シリアル値をサポートします。
- 1900日付ベースシステムでは、下限は1月1日-9999で、シリアル値は-4346018です。この日付ベースシステムの基準日は1899年12月30日で、シリアル値は0です。
- 1900下位互換性の日付ベースシステムでは、下限は1900年1月1日で、シリアル値は1です。この日付ベースシステムの基準日は1899年12月31日で、シリアル値は0です。
- 1904下位互換性の日付ベースシステムでは、下限は1904年1月1日で、シリアル値は0です。この日付ベースシステムの基準日は1904年1月1日で、シリアル値は0です。
ただし、Microsoft Office Excel2010を使用して日付シリアルが1の*.xlsxファイルを生成すると、*。xlsxファイルにはdateCompatibility
属性セット(「1900日付ベースシステム」を示す)がなく、日付シリアルに関連付けられた日付が設定されます。 1は1900年1月1日です(「1900下位互換性」を示します)。
workbookPr要素はこれであり、編集されておらず、dateCompatibility
属性はありません。
<x:workbookPr defaultThemeVersion="124226" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" />
そして、これは1の日付シリアルとそれを日付としてフォーマットしたテキスト結果を示すデータの行です。
<x:row r="3" spans="1:2">
<x:c r="A3">
<x:v>1</x:v>
</x:c>
<x:c r="B3" t="str">
<x:f t="shared" si="0" />
<x:v>1900-01-01 00:00:00.0</x:v>
</x:c>
</x:row>
数式は日付の書式設定であり、ワークシートの前半で参照されています。
<x:f t="shared" ref="B1:B42" si="0">TEXT(A1, "yyyy-mm-dd HH:mm:ss.0")</x:f>
この式は、以下のスクリーンショットに示されているように、日付のシリアル番号に日付形式のパターンを適用した場合と同じ結果になります。
また、負の日付をフォーマットするとエラーが発生します。これは、にdateCompatibility
属性がないにもかかわらず、Excelが実際に下位互換性のある日付システムを使用していることを示すもう1つの指標ですworkbookPr
。
ワークブックのオプションには、1904日付システムのチェックされていないチェックボックスのみが表示されます。1900年の日付ベースと1900年の下位互換性のオプションが表示されません。
仕様を間違って読んでいますか?またはSpreadsheetML?または、他の何か?