Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel中的C#日期时间格式问题_C#_Excel_Datetime - Fatal编程技术网

Excel中的C#日期时间格式问题

Excel中的C#日期时间格式问题,c#,excel,datetime,C#,Excel,Datetime,我正在基于区域性(en GB)格式化我的datetime列,该区域性是从我的数据库中获取的。我正在将这些数据导出到excel。当我下载数据时,一些日期时间显示为“16/10/2013 16:34:14”(即24小时),这是正确的,而其他日期时间显示为“11/10/2013 12:47:01 PM”(即12小时),这是错误的。对于en GB,日期时间格式应为“dd/MM/yyyy HH:MM:ss”。 如何解决这个问题。请给我忠告。提前谢谢 下面是我用来将数据导出到Excel的代码 GridVie

我正在基于区域性(en GB)格式化我的datetime列,该区域性是从我的数据库中获取的。我正在将这些数据导出到excel。当我下载数据时,一些日期时间显示为“16/10/2013 16:34:14”(即24小时),这是正确的,而其他日期时间显示为“11/10/2013 12:47:01 PM”(即12小时),这是错误的。对于en GB,日期时间格式应为“dd/MM/yyyy HH:MM:ss”。 如何解决这个问题。请给我忠告。提前谢谢

下面是我用来将数据导出到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();

您应该将从数据库中获取的第一个日期时间格式化为以下格式: “年月日HH:MM:ss”


然后您可以将其导出到excel。

我认为在您的情况下,在格式化时出现了一些问题。因此,它没有格式化所有的datetime。是的,从DB中获取后,我将该列格式化为datetime为“dd/MM/yyyy HH:MM:ss”,然后将其转换为字符串。在完成所有这些之后,我会将其导出到Excel。但什么都没用。正如我在第一篇文章中提到的那样。请告诉我……?Excel是否在en GB文化中运行?如果不是,这可能解释了这种差异。一般来说,最好避免在交换格式中使用特定于区域性的格式,这基本上就是您正在做的事情。您是否可以使用“通用”日期时间格式,如“u”、“u”或“R”(请参阅)?请注意,即使原始日期是可读性较差的格式,Excel也可以以您喜欢的格式显示。没有“我的系统”是以美国格式运行的。它是在英国还是在美国运行都不是问题。我只是根据文化对其进行格式化。从DB中获取后,我将该列格式化为'dd/MM/yyyy HH:MM:ss',然后将其转换为字符串。在做了所有这些之后,我会将它导出到Excel。对。。。Excel会看到格式化的日期,并尝试以标准的en-US日期格式(可能是12小时格式)显示它。在您仍然看到en GB格式的情况下,Excel可能无法将该值识别为日期,并将其显示为文本(这意味着您仍然可以看到en GB格式)。这就是为什么我说在导出/导入日期时间值时应该避免特定于区域性的格式设置。(理想情况下,出于类似的原因,你也可以避开时区,只使用GMT时间。)@Santhosh29你找到解决办法了吗?这是我目前的问题。