使用EPPlus对Excel范围进行Excel时间validation

我想要使​​用EPPlus在Excel中validation列的时间范围,如下午1:00到11:00。

时间必须是“hh:mm AM / PM”格式。

我解决了这个问题。 这里是代码:

var validationEndTime = workSheet.DataValidations.AddTimeValidation("H:H"); validationEndTime.ShowInputMessage = true; validationEndTime.Prompt = "Add end time in hh:mm AM/PM format as example 9:00 AM or 12:30 PM"; validationEndTime.ErrorStyle = ExcelDataValidationWarningStyle.stop; validationEndTime.ShowErrorMessage = true; validationEndTime.Error = "Insert valid time"; validationStartDate.Operator = ExcelDataValidationOperator.between; var timeEnd = validationStartDate.Formula.Value; timeEnd.Hour = 00; timeEnd.Minute = 00; var timeEnd2 = validationStartDate.Formula2.Value; timeEnd2.Hour = 23; timeEnd2.Minute = 59; validationEndTime.Formula.Value = timeEnd; validationEndTime.Formula2.Value = timeEnd2; 

这将在excel中进行validation,如下所示:

在这里输入图像说明

我尝试了很多,使DataValidations.AddDateTimeValidation工作,但它并没有为我工作。 因此,我不想在C#中寻找解决scheme,而是试图弄清楚excel如何处理时间。

Excel以十进制数存储时间。 所以,而不是使用DataValidations.AddDateTimeValidation,我使用DataValidations.AddDecimalValidation,我把Excel中的开始时间和结束时间转换为十位精度的十进制数。

所以12:00:00就变成了0.00,11:59:59变成了0.999305555555556。

我的C#代码看起来像这样

  var validdateTime = sheet1.DataValidations.AddDecimalValidation("H:H"); validdateTime.ShowInputMessage = true; validdateTime.Prompt = "Add end time in hh:mm AM/PM format as example 9:00 AM or 12:30 PM"; validdateTime.AllowBlank = false; validdateTime.ShowErrorMessage = true; validdateTime.Error = "The time entered is not valid"; validdateTime.ErrorStyle = ExcelDataValidationWarningStyle.stop; validdateTime.Operator = ExcelDataValidationOperator.between; validdateTime.Formula.Value = 0.0; validdateTime.Formula2.Value = 0.999305555555556;