C#到Excel设置自定义date显示和值

给定某个date,我想设置一个DateTime对象的单元格的 ,但没有“时间”信息。 例如,今天的价值将只是“29/06/2012”,而不是“2012年6月29日16:54:36”

关于展览,今天的date,我希望它是这样写的(这是法语,我不知道它是如何用英语): “29 juin”而不是“29/06/2012”

我怎样才能做到这一点?

编辑 :我只是看看显示格式我需要在Excel中,它是“jmmmmmm”(“ddmmmm”在C#中)。 但是,单元格虽然取值,但不包含格式。 这是一段代码:

cell.Value = string.Format("{0:dd/MM/yyyy}", DateTime.Now); cell.NumberFormat = "jj mmmm"; 

我也试过:

  cell.Value = DateTime.Now; cell.NumberFormat = "jj mmmm"; 

在这种情况下,显示格式正常,但单元格值包含时间信息,这是不正确的。

只需将DateTime.Now更改为DateTime.Date ,时间将被清零

看到这个 StackOverflow的问题,我的答案。 它将允许你直接在excel表格中设置单元格的自定义格式,从那里你只需要研究不同的date格式string是什么。

这只有在你使用Excel自动化时才有帮助。

否则,格式化DateTime.ToString输出会更好。 再次研究不同的DateStringFormatting选项将对您有所帮助。

最终选项。 直接更改模板,不使用自动化。 转到单元格并手动更改单元格格式,直到显示器成为您想要的。 这不会改变实际的数据,只是它的显示。

UPDATE

有两个具体的问题需要处理。

问题一是确保excel认识到这是一个date。 为此,请确保date数据本身的格式为en-US。 为什么,因为微软是愚蠢的,不承认国际date格式。

问题二是单元格的显示格式。 对于月份的三个字母的缩写,使用stringd mmm 。 如果您想要整个月份名称,请使用d-mmmm

我正在testing,并指出,Excel拒绝把29/06/2012 16:54:36作为一个date,但它接受2012年6月29日16:54:36没有问题。 正如我所说,微软是愚蠢的。

DateTime有一个名为ToShortDateString的方法

 // Displays Fri 29 Aug Console.WriteLine(date1.ToString("ddd d MMM", CultureInfo.CreateSpecificCulture("fr-FR"))); 

这将是一个很好的资源: MSDN自定义date和时间格式string