[英]Excel time validation for a range using EPPlus
我想使用EPPlus在Excel中验证1:00 PM到11:00 AM之类的列的时间。
时间必须为“ 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中进行验证:
我做了很多尝试来使DataValidations.AddDateTimeValidation工作,但对我而言却无效。 因此,我没有在C#中寻找解决方案,而是试图弄清excel如何处理时间。
Excel将时间存储为十进制数字。 因此,我没有使用DataValidations.AddDateTimeValidation,而是使用DataValidations.AddDecimalValidation,将Excel中的开始时间和结束时间转换为10位精度的十进制数。
因此12:00:00变为0.00,而11:59:59 pm变为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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.