错误的date时间格式从RadGridView复制/粘贴到Excel中时

从Telerik的RadGridView复制行到excel时,我有一个奇怪的问题,问题必须与一个DateTime列。

RadGridView中的列具有正确的格式:

06/17/2016 02:30 PM 

但是,当用户复制行并将其粘贴到Excel中时,格式会被搞乱:

 2016-06-16 14:30 PM //24hr format with PM period lol 

我已经注意到,问题只发生在小于12的值上,例如,如果值是06/17/2016 08:54 AM ,它将被粘贴到excel格式正确。

所以认为它与格式我手动设置列的格式string与下面的代码:

 dgv_history.Columns["Repair Date"].FormatString = "{0:MM/dd/yyyy HH:mm}"; 

我也试过了

 dgv_history.Columns["Repair Date"].FormatString = "{0:MM/dd/yyyy hh:mm tt}"; 

但是这些代码行只会改变date在RadGridView中的显示方式,如果我尝试复制/粘贴到Excel中,问题依然存在。

这是一旦粘贴到excel中的样子:

 2016-06-16 13:57 PM 2016-06-16 13:31 PM 6/16/2016 12:55 6/16/2016 12:33 6/16/2016 12:22 6/16/2016 11:48 6/16/2016 11:19 

我能做些什么来解决这个问题呢?这是一个错误吗?我一直在search他们的文档,但我仍然找不到任何相关的东西。

谢谢

更新06/20/2016 12:15

看起来,这是RadGridView的一个正常function,正如在这个演示页面http://docs.telerik.com/devtools/winforms/gridview/copy-paste-cut中所看到的,结果和这个问题中描述的一样。

我对这个问题没有真正的答案,但看看:

http://docs.telerik.com/devtools/wpf/controls/radgridview/clipboard/copying.html

您有可能覆盖复制的值(您可以使用debugging器检查telerik正在写入剪贴板的内容)。

对不起,添加这个答案,但我还没有被允许发表评论。

干杯

托马斯

几年前创build时间卡时,我遇到了类似的问题 – 没有人喜欢使用这种24小时时间格式转换 – 而上午12点/下午可以抛出不重视的人,特别是从24小时复制/粘贴到双12小时格式 – 将数据input时间转换为基本公式示例中的可计算公式 – 一旦我将12-纳入公式中,我开始公式:= IF(C8> D8,12-C8 + D8,D8- C8,然后乘以它回到一个负1后,它解决了自己。

检查客户端PC区域设置上的date时间设置是否正确。 就像一个build议,如果没有别的作品

我认为RadGridView生成的date时间总是像“2016-06-16 13:57 PM”,但是excel通过其内置function对其进行了格式化。 这可能是由于缺less“PM”引起的,所以Excel添加它并将其转换为默认的date时间格式。 您可以在复制之前将单元格属性更改为“文本”,这应该始终将数据视为string。

我能解决这个问题,但我不得不操纵数据对象被添加到剪贴板。

因为它变成唯一的问题是时间被附加在DateTime值的末尾,所以为了解决它我使用下面的代码中删除所有date时间值中的所有时期。

 DataObject dataobject = dgv_history.GetClipboardContent(); //Gets the data object as a CSV string string dos = dataobject.GetText(TextDataFormat.CommaSeparatedValue); //Replaces all the occurrences of AM & PM with an empty string dos = dos.Replace(" AM", string.Empty); dos = dos.Replace(" PM", string.Empty); //Sets the modified CSV string as the DataObject dataobject = new DataObject(dos); //Adds the DataObject to the clipboard Clipboard.SetDataObject(dataobject, true); 

通过这样做,date时间被粘贴为格式良好的24小时格式,并通过excel进行检测。

还有另一个临时解决scheme,我能够创build,但涉及我们的SSRS服务器。 我使用与RadGridView相同的参数创build了一个简单的报告,报告输出可以很容易地下载为Excel电子表格,而不必担心由WinFroms控件操作或翻译数据。

谢谢大家的时间和答案。