2013-04-30 77 views
4

我有一個CSV文件,其中有一個DateTime列,我使用php進行更改以便以此格式顯示,02/18/2013 03:53:48 PM在excel中打開CSV文件更改我的格式

但是,當該文件在Excel中打開了所有的格式更改爲此格式, 2013年2月18日15:53

現在,這不會是一個問題,我看還是應付不過我希望最終用戶不必在Excel中以24小時格式查看時間。我如何讓excel在打開csv後不更改我的格式,並允許最終用戶對此DateTime列進行排序而不會出現任何問題。我知道我可以通過格式化單元格來改變日期的格式,一旦我打開文件,但我不希望最終用戶甚至不得不採取這一步。

我也想指出,當我選擇一個單元格的公式欄將以我想要的格式顯示我的DateTime列讓我感到困惑。

回答

5

CSV文件沒有格式,只包含數據。

MS Excel將檢查該數據,並嘗試爲其設置適當的格式。例如,它對數字值進行右對齊。它可以識別包含人類可讀日期/時間值的字符串,並將其轉換爲其自己的內部時間戳值(表示爲浮點數),然後將適當的日期/時間掩碼應用於該單元格,以使其樣式爲日期或時間,但不一定使用CSV文件中的字符串表示。

解決方案#1,用帶有=符號的格式化日期字符串作爲前綴並將其包裹在引號中,以便將其視爲字符串。

解決方案#2,寫一個實際的Excel文件,您可以控制單元格的格式。

+1

那麼,如果我將日期更改爲字符串,我無法正確地從最新到最舊排序(這可能是最終用戶想要使用excel的原因)。 – 2013-04-30 12:49:15

+0

這就是缺點,它將解決方案#2作爲您的選項 - 對其具有更多的好處,例如可以使用格式化(例如粗體標題行,凍結窗格,條件格式等) – 2013-04-30 12:54:54

+0

選項2可能是唯一的解。謝謝您的意見。 – 2013-04-30 13:03:50

1

如果您想要控制最終Excel文件的格式,您需要將數據輸出爲該格式並使用PHP Excel庫進行相應修改。我不能告訴你如何做到這一點,因爲我不知道你可能決定使用哪個庫。

我用http://phpexcel.codeplex.com/到某種程度的成功

的如果你只是輸出CSV Excel稍後將進行格式化用戶的默認設置,這可能是你想要的東西不同的打開它。

+0

我會看看這個。 – 2013-04-30 13:04:27

0

這些時間顯示的方式是Windows中的設置或Office中的設置(如果用戶將其設置爲不同)。如果您希望Excel應用程序在打開時看起來像日期/時間不是格式化的,那麼您不應該首先將其設置爲日期/時間。

Excel將看到什麼是由一個單一的直引號爲文本rpeceded,這樣可以存儲您的日期/時間值"'02/18/2013 03:53:48 PM"

+0

是的,我知道這個和你的答案,但我不想在Excel中執行任何操作,只是希望它留在我有它的格式。顯然這是不可能的。 – 2013-04-30 12:51:16

+0

對不起,我已經改變了我的答案符合你實際尋找的 – 2013-04-30 12:56:24