【问题标题】:Time format Validation in ClosedXMLClosedXML 中的时间格式验证
【发布时间】:2019-08-23 13:03:33
【问题描述】:

我正在使用 ClosedXMl 创建 Excel 文件,并希望在输入“HH:MM”以外的时间格式时设置警报消息。 我试过下面的代码,但在输入“1”后,它也没有显示错误消息,但同样适用于日期格式。

       ws.Cell("D7").Style.NumberFormat.Format = "hh-mm";
       ws.Cell("D7").DataValidation.Time.EqualOrGreaterThan(new TimeSpan(0, 0, 0));
       ws.Cell("D7").SetDataValidation().ErrorStyle = XLErrorStyle.Stop;
       ws.Cell("D7").SetDataValidation().ErrorMessage = "Date Format HH MM";

适用于日期的代码(输入 1 后弹出警报消息)

      ws.Cell("T5").Style.NumberFormat.Format = "dd-mmm-yyyy";
      ws.Cell("T5").SetDataValidation().Date.EqualOrGreaterThan(new DateTime(2000, 1, 1));
      ws.Cell("T5").SetDataValidation().ErrorStyle = XLErrorStyle.Stop;
      ws.Cell("T5").SetDataValidation().ErrorMessage = "Date Format DD MMM YYYY";

【问题讨论】:

  • 这在 Excel 中是否可行?
  • 是的,它适用于“日期”格式,但我也想要“时间”格式。
  • @Tejashree 你可以尝试使用 DateTime,比如 SetDataValidation().DateTime 来验证时间。

标签: closedxml


【解决方案1】:

DataValidation.Time.EqualOrGreaterThan(new TimeSpan(0, 0, 0)); 中的 Time 的 EqualOrGreaterThan 方法可能没有 Time 属性。但是试试下面的方法。

您可以做的一件事是,您可以在日期验证中将时间和日期放在一起。

  ws.Cell("T5").Style.NumberFormat.Format = "dd-MM-yyyy HH:mm:ss";
  ws.Cell("T5").SetDataValidation().Date.EqualOrGreaterThan(new DateTime(2008, 5, 1, 8, 30, 52)); // first 
  ws.Cell("T5").SetDataValidation().ErrorStyle = XLErrorStyle.Stop;
  ws.Cell("T5").SetDataValidation().ErrorMessage = "Date Format DD MMM YYYY HH mm ss";

【讨论】:

  • 非常感谢您的回答,但我的要求是单元格只包含时间。输入字符后,它显示错误消息,仅允许 HH:MM 格式,但不适用于整数值,它用 00:00 替换整数。
  • 可以使用单元格样式和NumberFormat,例如sheet.Column(1).Style.Numberformat.Format = "hh:mm";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-13
  • 2012-06-15
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
相关资源
最近更新 更多