0

我想使用 EPPlus 验证 Excel 中的列,时间范围为下午 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 中进行验证:

在此处输入图像描述

4

1 回答 1

2

我尝试了很多使 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;
于 2017-03-10T16:51:20.523 回答