2016-03-04 64 views
0

我想驗證使用EPPlus時間範圍內像日下午1:00在Excel中列的11:00的範圍Excel時驗證。使用EPPlus

時間必須是 「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中是這樣的:

enter image description here

+0

任何努力來解決問題了嗎?順便說一下你的'下午1:00'不是'hh:mm tt'格式。 –

+1

請顯示您的代碼 – user2148124

回答

2

我嘗試了很多,使DataValidations.AddDateTimeValidation工作,但它並沒有爲我工作。因此,我不想在C#中尋找解決方案,而是試圖弄清楚excel如何處理時間。

Excel存儲時間小數。所以代替使用DataValidations.AddDateTimeValidation的,我用 DataValidations.AddDecimalValidation, 我轉換在Excel中的開始時間和結束時間爲十進制用10位精度的數字。

所以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;