5

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);

これまでのところ、さまざまな値で動作しています。

4

1 に答える 1

7

これが私の簡略化されたコードです(Siddharth Routからの提案の後):

string myString = String.Format("{0}", workSheet.Cells[1,1].Text);
TimeSpan ts = TimeSpan.Parse(myString);

これまでのところ、さまざまな値で動作しています。

于 2013-12-17T11:50:20.460 に答える