Spreadsheetgear:转换为日期时间时出错
Spreadsheetgear: Error converting to Datetime
我正在尝试解析 excel sheet 中的单元格值并使用以下 code.But 将其转换为 Datetime 我收到错误消息:
'arguments.CurrentWorksheet.Workbook.NumberToDateTime(inpDate)' threw
an exception of type 'System.ArgumentOutOfRangeException'
base: {"Specified argument was out of the range of valid values.\r\nParameter name: Invalid date-time serial number."}
ActualValue: null
Message: "Specified argument was out of the range of valid values.\r\nParameter name: Invalid date-time serial number."
代码:
double inpDate = arguments.GetNumber(2);
startDate = arguments.CurrentWorksheet.Workbook.NumberToDateTime(inpDate);
其中 sheet 中的 inpDate 是 20170113。
请问有什么建议吗?
谢谢。
您的 inpDate
不是有效的 "Excel date." Dates/times 存储在 SpreadsheetGear 中,Excel 作为 double
表示 date/time 序列号。整数代表天数,值 1 是 1900 年 1 月 1 日,数字的小数部分代表时间(即 0.5 是中午)。因此,例如,值 42793.0 表示 2017 年 2 月 27 日(上午 12:00)。您可以在以下信息页面上阅读有关 Excel 日期的更多信息:
http://www.cpearson.com/excel/datetime.htm
IWorkbook.NumberToDateTime(...) 需要这种序列日期,但是您输入的“20170113”(我假设应该代表 2017 年 1 月 13 日)被解释为日期未来的方式,比如接近 57,160 年(从 1900 年 1 月 1 日算起的 20,170,113 天)的某个地方,这太远了,不可能成为 Excel/SpreadsheetGear 中的有效日期。
对于您的具体情况,使用 DateTime.ParseExact(...) 似乎更合适,例如:
DateTime dateTime = DateTime.ParseExact("20170113", "yyyyMMdd", CultureInfo.CurrentCulture);
我正在尝试解析 excel sheet 中的单元格值并使用以下 code.But 将其转换为 Datetime 我收到错误消息:
'arguments.CurrentWorksheet.Workbook.NumberToDateTime(inpDate)' threw an exception of type 'System.ArgumentOutOfRangeException' base: {"Specified argument was out of the range of valid values.\r\nParameter name: Invalid date-time serial number."} ActualValue: null Message: "Specified argument was out of the range of valid values.\r\nParameter name: Invalid date-time serial number."
代码:
double inpDate = arguments.GetNumber(2);
startDate = arguments.CurrentWorksheet.Workbook.NumberToDateTime(inpDate);
其中 sheet 中的 inpDate 是 20170113。
请问有什么建议吗?
谢谢。
您的 inpDate
不是有效的 "Excel date." Dates/times 存储在 SpreadsheetGear 中,Excel 作为 double
表示 date/time 序列号。整数代表天数,值 1 是 1900 年 1 月 1 日,数字的小数部分代表时间(即 0.5 是中午)。因此,例如,值 42793.0 表示 2017 年 2 月 27 日(上午 12:00)。您可以在以下信息页面上阅读有关 Excel 日期的更多信息:
http://www.cpearson.com/excel/datetime.htm
IWorkbook.NumberToDateTime(...) 需要这种序列日期,但是您输入的“20170113”(我假设应该代表 2017 年 1 月 13 日)被解释为日期未来的方式,比如接近 57,160 年(从 1900 年 1 月 1 日算起的 20,170,113 天)的某个地方,这太远了,不可能成为 Excel/SpreadsheetGear 中的有效日期。
对于您的具体情况,使用 DateTime.ParseExact(...) 似乎更合适,例如:
DateTime dateTime = DateTime.ParseExact("20170113", "yyyyMMdd", CultureInfo.CurrentCulture);