从Excel工作表中获取时间值

时间:2014-05-13 22:59:04

标签: c# excel vba office-interop

      Microsoft.Office.Interop.Excel.Application app = 
                                new Microsoft.Office.Interop.Excel.Application();

      Workbook wb = app.Workbooks.Open(fname);
      Worksheet ws = wb.Worksheets[1];

      // read some data                    
      var Monday = ws.get_Range("D11");
      var Tuesday = ws.get_Range("D13");

我正在使用Microsoft.Office.Interop.Excel从Excel工作表中检索工时。我的代码似乎工作正常,但我不断获得COM ObjectMonday的值Tuesday

为什么不从电子表格中返回单元格D11和D13中的实际值?

对于COM Objectws,我也得到相同的wb值,不确定这是否有任何相关性,我想将其扔出去。

1 个答案:

答案 0 :(得分:2)

MS Excel将日期存储为浮点值。整数部分表示天数,小数部分表示小时,分钟和秒。

检查此代码,提取小时数以及分钟和秒数,也许您需要它们:

float excelValue = 0.4f;

int miliseconds = (int)Math.Round(excelValue*86400000);
int hour = miliseconds/( 60/*minutes*/*60/*seconds*/*1000 );
miliseconds = miliseconds - hour*60/*minutes*/*60/*seconds*/*1000;
int minutes = miliseconds/( 60/*seconds*/*1000 );
miliseconds = miliseconds - minutes*60/*seconds*/*1000;
int seconds = miliseconds/1000;