我根據從我的數據庫中提取的文化(en-GB)格式化我的日期時間列。我將這些數據導出爲excel。當我下載我的數據時,某些日期時間顯示爲「2013年10月16日16:34:14」(即24小時),這是正確的,而其他日期時間顯示爲「2013年10月10日下午12時47分01秒「(即12小時),這是錯誤的。對於en-GB,日期時間格式應該是「dd/MM/yyyy HH:mm:ss」。 如何解決這個問題。請告訴我。提前致謝。Excel中的C#日期時間格式問題
下面是我用來將數據導出到Excel的代碼。
GridView gv = new GridView();
gv.DataSource = dtTemp; // Here is My data
gv.DataBind();
Response.Clear();
// 'set the response mime type for excel
string fileName = string.Empty;
fileName = "Online_Topup_Report_" + DateTime.Now.Date.ToString(DayFormat.Value.ToString().Replace("/", "-")).ToString() + ".xls";
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=" + fileName + "");
Response.ContentType = "application/vnd.ms-excel";
Response.ContentEncoding = System.Text.Encoding.Default;
Response.Charset = "UTF-8";
StringWriter stringWrite = new StringWriter();
// 'create an htmltextwriter which uses the stringwriter
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
// 'tell the datagrid to render itself to our htmltextwriter
gv.RenderControl(htmlWrite);
Response.Output.Write(stringWrite.ToString());
Response.End();
Excel是否在en-GB文化中運行?如果不是,那可能會解釋這種差異。一般來說,最好避免交換格式的文化特定格式,這基本上就是你在做什麼。您可以使用「通用」DateTime格式之一,如「u」,「U」或「R」(請參閱http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110)的.aspx)?請注意,即使原始日期的格式不易讀取,Excel也可以使用您的首選格式顯示它。 – JaredReisinger
沒有我的系統以美國格式運行。無論是在英國還是美國運行都不是問題。我只是根據文化來格式化它。從DB中提取後,我已將datetime格式化爲'dd/MM/yyyy HH:mm:ss',然後將其轉換爲字符串。做完所有這些後,我只會將它導出到Excel。 – Santhosh29
正確... Excel會查看格式化的日期,並嘗試以標準的en-US日期格式(可能是12小時格式)顯示它。在仍然看到en-GB格式的情況下,Excel可能不會將該值識別爲日期,並將其顯示爲文本(這意味着您仍然可以看到en-GB格式)。這就是爲什麼我說你在導出/導入日期時間值時應該避免使用文化特定的格式。 (理想情況下,出於類似的原因,您也避開時區,只使用GMT時間。) – JaredReisinger