2012-06-29 23 views
2

给出一个确定的日期,我想设置一个DateTime对象细胞的,但没有“时间”的信息。例如,对于今天的价值将只是“29/06/2012”而不是“29/06/2012 16:54:36”C#到Excel中设置自定义日期显示和值

至于我希望它这样写的显示,为今天的日期(这是法国人,我不知道怎么会是英文):“29朱安”,而不是“29/06/2012“

我该如何做到这一点?

编辑:我只是看看我需要在Excel中显示格式,它是“jj mmmm”(在C#中的“dd mmmm”)。但是,该单元虽然取得了该值,但并未采用格式。下面是一段代码:

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

我也试过:

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

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

+0

所以,你要设置为某一天的单元格,并设置显示格式为“DD MMM”或“MMMM DD” “FR-FR”的文化? – Jodrell

+0

@Jodrell简单的说,我想要的值是“dd/MM/YYYY”,并且显示为法国文化中的“dd MMMM”(甚至英语,这可能有帮助) – GianT971

+1

@ GianT971 - 只需更改“DateTime。现在“到”DateTime.Date“,时间将被清零。 –

回答

0

只是改变DateTime.NowDateTime.Date和时间将zero'd出

0

的DateTime有一个名为ToShortDateString

+0

我知道,但这只适用于单元格的值。我还需要一个自定义的显示格式 – GianT971

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

方法这将是你一个很好的资源:msdn custom date and time format strings

+0

感谢您的链接,但问题不是dateTime格式,但在Excel中的单元格的值和格式的区别 – GianT971

+0

@ GianT971 Gotcha,在我看来像手动更改在你的Excel文件中列的模板然后(?)祝你好运,对不起,Excel是..它是什么。 – Jordan

1

this StackOverflow上的问题,我的答案。它将允许您直接在Excel表格中设置单元格的自定义格式,从那里您只需研究不同的日期格式字符串是什么。

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

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

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

UPDATE

有对付两个具体问题。

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

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

我在测试并注意到excel拒绝把29/06/2012 16:54:36作为日期,但它接受了2012年6月29日16:54:36没有问题。正如我所说,微软是愚蠢的。

+0

自从开始以来,我一直在修改单元格的NumberFormat属性,但它似乎不起作用。我不知道为什么 – GianT971

+0

Excel很愚蠢,并且不容易识别国际日期格式。 Windows,如果您的区域设置正确,可能。 – Nevyn

+0

事实上,当Excel将数据识别为日期时,NumberFormat工作并且显示正常(对此为+1)。但是我怎样才能摆脱时间信息?这实际上是主要问题 – GianT971

相关问题