EPPlusパッケージを使用して .xlsx ファイルから読み取ります。セルから TimeSpan オブジェクトを読み取る必要があります。Excel セルには、"hh:mm" 形式のデータが含まれます。たとえば、引用符なしで "09:00" または "18:30" とします。
これが私のコードです:
string myString = workSheet.Cells[1,1].Value.ToString();
double d = double.Parse(myString);
DateTime dt = DateTime.FromOADate(d);
TimeSpan ts = new TimeSpan(dt.Hour, dt.Minute, dt.Second);
Excel ファイルの "09:00" または "08:30" データの場合、myString にはそれぞれ "0.375" または "0.354166666666667" が含まれ、ts は期待どおりに計算できます。しかし、Excel ファイルの "10:00" の場合、myString には "30/12/1899 10:00:00 AM" が含まれ、double 値の解析が失敗するため、ts を計算できません。
なぜこれが矛盾して起こっているのか、私にはわかりません。Excel セル (より正確には、一般的な形式のセル) から double 値を一貫して読み取るにはどうすればよいですか? 助けてください。
これが私の簡略化されたコードです(Siddharth Routからの提案の後):
string myString = workSheet.Cells[1,1].Text.ToString();
TimeSpan ts = TimeSpan.Parse(myString);
これまでのところ、さまざまな値で動作しています。