2010-12-29 23 views
1

ExcelでOpenXMLを使用するライブラリを作成しています。私はセルのテキストを読むことができ、数字はうまくいきますが、日付については問題があります。 セルには「日付」の型がありますが、Excel 2007ではその型の日付は保存されないため、読み込んでいる値が日付であるかどうかはわかりません。代わりにスタイルが使用されているようです。OpenXMLを使用してExcelファイルから日付を読み取る

私はそれが日付であるかどうかを検出し、その文字列表現を返します(例:29-12-2010)。

答えて

4

Excelは日付を浮動小数点数として格納します。整数部分は1/1/1900(またはカレンダーが使用されているかどうかに応じて1/1/1904)からの日数で、小数部は割合(つまり時間部分)... 1900年がうるう年とみなされているという事実によって、やや厄介なものになった。

データを数値と区別する唯一のものは、数値書式マスクです。書式マスクを読むことができれば、その値を数値ではなく日付として識別し、基準日から日付値/書式を計算することができます。

+0

ただし、日付の属性「s」は常に「1」の値ではありませんか?私はそれがスタイルを定義していることは知っていますが、 ;) – brovar

+2

s属性はstyles.xml内のスタイルxfエントリを参照し、日付のエントリ1であるとは限りません。すべてがワークブックで使用されているスタイルの数によって異なります。スタイルxfは数値書式のマスクを参照します。日付を含むセルを識別するには、スタイルxf - > numberformatルックアップを実行し、そのnumberformatマスクが日付/時刻のnumberformatマスク(たとえば、パーセンテージまたは会計番号フォーマットマスクではなく)であるかどうかを確認する必要があります –

+0

今私は最終的に何かを知っている、大きな感謝。 – brovar

関連する問題