当我使用Excel阅读器时,除了时间戳之外,它读取的所有内容都很好。例如,它将15:59:35转变为.67290509259259268
如何阻止这种情况发生?
object[,] valueArray = (object[,])excelRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);
这是我的数组,其中包含从Excel工作表中读取的值。不确定是不是这个原因。
答案 0 :(得分:2)
原因是Excel将所有日期时间存储为浮点数。小数部分是时间分量,而整数部分代表日期。
您可以使用Range.Text
值来获取正确格式化的文本。我认为你不能以与上面相同的方式使用它(尝试自己做同样的事情,所以还没有实际的方法)。另外要小心,它可能会慢慢阅读文本(阅读数字格式是v.slow)。
或者尝试使用库,FlexCel是我们使用的非常好的,或Apose是一个更完整的解决方案。
Itterative Approach (这几乎肯定比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的示例。)
答案 1 :(得分:2)
尝试DateTime.FromOADate
- 但是,您在问题中提到的数值实际上与您提到的时间不符。