読み込むExcelファイルの中で、セルの形式が日付型のデータが入っていると、しばしばシリアル値に変換されてデータセットに格納されてしまいます。例)2003/2/25(Excel)→37678(データセットに格納された値)まったく同じファイルを読み込んでも、そのときによってシリアル値になったりならなかったりと結果はまちまちです。調べ方が甘いためか、その方法を見つけられませんでした。お手数おかけしますが、なにとぞご助言をよろしくお願いします。以下参考にさせて頂いたソースコードです。掲載されたソースには問題はなさそうに見えます。ご質問の状況を再現できません。11:36:17)VB.NETですが紹介してみます。同じファイルを読み込んでも、そのときによってシリアル値になったりならなかったりと結果はまちまちです。取得できないことがあるそうです。Imex=1を指定しても、標準書式と日付書式が混在する列で標準書式のセル数の方が多いと?本来日付書式のセルの値が標準書式(シリアル値)で取得してしまう、ということなのかもしれません。これはADO.NETの仕様ということになるのでしょうか。参考になれば幸いです。取得できないことがあるそうです。この情報をもとに、同じ列に標準書式のデータを1つ追加したら再現しました。注目しているセル以外のセルを変更することで、再現したりしなかったりするってことかも知れないですね。これはADO.NETの仕様ということになるのでしょうか。以下、蛇足情報(回答に非ず)。これはADO.NETの仕様ということになるのでしょうか。ドライバの仕様となります。系のドキュメントにも書かれている動作です。ドライバでも同様の問題が発生します。用マネージプロバイダでは、異なる動作になりえますけれどね。返信ということで、自分で、取得したデータのフォーマットをチェックして1900年1月1日からの通算日として、変換しちゃった方が早そうです。自分にはそれしか解決策がうかばない。1900年1月1日からの通算日として、変換しちゃった方が早そうです。自分にはそれしか解決策がうかばない。計算する場合は、Excelが1900年を閏年として扱うことに注意してください。SP1)では再現しませんでした。こちらの環境では、「37678」ではなく、「37677」になってしまいます。?)環境の違いだとしたら、厄介ですね...。計算する場合は、Excelが1900年を閏年として扱うことに注意してください。年から計算する」モードに設定されていた場合、さらなる値のズレが発生する場合があります。SP1)では再現しませんでした。こちらの環境では、「37678」ではなく、「37677」になってしまいます。?)いや、1900年の閏年の件までは検証していませんでした。今やってみたら、私も「37677」です。動かしてて気づいたのですが、対象ファイルをEXCELで開いてるとシリアル値になって開いていないとシリアル値にはならないですね。その変のことを考慮して、運用に合わせて仕様を決めるしかないでしょう。その変のことを考慮して、運用に合わせて仕様を決めるしかないでしょう。>別の方法を検討したほうがいいような気が。別の方法を検討したほうがいいような気が。オブジェクトを使って頑張るとか...でもこの方法もいまいちだしなぁ(悩まぁ、それも含めて仕様を決めればいいと思います。自分なら、排他書き込みで、そのファイルをオープンしてみて失敗したら、ファイルが他で使用されています・・・のようなメッセージを表示して使用者にクローズさせますね。編集(投稿者)たくさんのアドバイス大変参考になりました。日付の件ですが私の表記がまちがっていました。再度検証してみたところ"2003/2/25"は"37677"でした。いたずらに場を混乱させてしまい、申し訳ありませんでした。皆様のアドバイスを基に、仕様は以下のようにしようと考えています。�@対象ファイルが開かれていたら、ユーザーに閉じてもらう。�Aもしシリアル値が読み込まれた場合は日付変換を行う。今回「1904年から計算する」モードはないだろうと想定し、規定モードでの日付変換でいこうと思います。皆様本当にありがとうございました。