C# Excel Reader 将时间戳转换为十进制数



当我使用Excel阅读器时,除了时间戳之外,它可以很好地读取所有内容。例如,它将 15:59:35 转换为 .67290509259259268

如何阻止这种情况发生?

object[,] valueArray = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);

这是我的数组,它保存从 excel 工作表中读入的值。不知道这是否是原因。

尝试DateTime.FromOADate - 但是,您在问题中提到的数值实际上与您提到的时间并不对应。

这样做的原因是Excel将所有的DateTimes存储为浮点数。小数部分是时间部分,而整数部分表示日期。

您可以使用Range.Text值来获取文本,该文本的格式应正确。我认为你不能以与上面完全相同的方式使用它(尝试自己做同样的事情,所以还没有实际的方法)。还要注意阅读文本可能会很慢(阅读数字格式是 v.slow)。

或者尝试使用库,FlexCel 是我们使用的非常好的库,或者 Apose 以获得更完整的解决方案。

迭代方法(这几乎可以肯定比返回对象 [,]get_Value慢得多)。

if (excelRange!= null)
{
   int nRows = excelRange.Rows.Count;
   int nCols = excelRange.Columns.Count;
   for (int iRow = 1; iRow <= nRows; iRow++)
   {
      for (int iCount = 1; iCount <= nCols; iCount++)
      {
         excelRange= (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[iRow, iCount];
         String text = excelRange.Text;
      }
   }
}

(编辑:删除了实际用于 SharePoint 的其他示例。

最新更新