2012-06-29 57 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

相關問題