Excel / EPPlus数字格式是否与DateTimeFormat.ShortDatePattern兼容?

时间:2015-09-08 14:03:25

标签: asp.net .net excel excel-2013 epplus

我在ASP.Net中使用EPPlus创建一些Excel文件。一切都运作良好,除了在某些情况下,我需要显示一个短日期格式。使用EPPlus NumberFormat,我可以应用短日期格式:

ws.Column(1).Style.Numberformat.Format = "yyyy-MM-dd";

这会在我的电子表格中输出日期2015-07-21。虽然这是通用的,但如果可能,我更喜欢本地化(基于用户区域设置)格式。我可以使用以下命令检索用户区域设置的短日期格式:

String s = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

对于我来说,英国会返回dd/MM/yyyy。其他使用EPPlus的作者参考Open Office XML ECMA-376 spec(50MB)来应用数字格式。页面1768显示了这个:

enter image description here

但是这里的m都是小写的,在.Net中不是几个月而是几分钟,所以如果我这样做是错误/不相容的吗?

ws.Column(1).Style.Numberformat.Format = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

我没有资源来测试每种文化的日期格式,所以我想知道我的方法是否有问题?

或者,我应该根据规范强制使用ShortDatePattern ToLower来忽略大写MM吗? Excel(2013)本身使用小写自定义日期格式,所以我认为小写方法更好?我用两种格式进行了测试(使用大写/小写mm),结果是一样的,但跨文化的事情让我感到担忧。

1 个答案:

答案 0 :(得分:1)

我花了两天时间对此进行测试。似乎不应该使用DateTimeFormat.ShortDatePattern。相反,无论客户端浏览器上的区域设置/语言设置如何,请使用此方法(Phoenix installation)进行短日期。

ws.Column(1).Style.Numberformat.Format = "yyyy-MM-dd"

这是因为浏览器无法保证与计算机的区域设置相匹配(Firefox和Chrome可以很容易地修改,默认情况下Chrome会安装为en-US),而Excel则使用计算机区域设置。

MS Excel非常智能,可以根据Windows语言设置读取日期值并将其转换为正确的格式。所以,就我而言,如果我的Windows语言是英语英语,我会自动在Excel中看到en-GB格式的日期。

如果我关闭电子表格,将Windows切换为挪威语,重新登录并重新打开相同的电子表格,日期会自动以相应的挪威格式显示。