将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中。
因此,我认为它与格式有关,我使用以下代码手动设置列的格式字符串:
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}";
但是这些代码行只会改变日期在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
我该怎么做才能解决这个问题?,这是一个错误吗?我一直在搜索他们的文档,但我仍然无法找到任何相关内容。
谢谢
2016年6月20日更新12:15
似乎这是RadGridView的正常功能,如此演示页http://docs.telerik.com/devtools/winforms/gridview/copy-paste-cut中所示 结果与本问题中描述的结果相同。
答案 0 :(得分:1)
我对这个问题没有真正的答案,但请看一下:
http://docs.telerik.com/devtools/wpf/controls/radgridview/clipboard/copying.html
您可以覆盖复制的值(您可以使用调试器检查telerik写入剪贴板的内容)。
很抱歉将此添加为答案,但我尚未发表评论。
干杯
托马斯
答案 1 :(得分:0)
我在多年前创建时间卡时遇到了类似的问题 - 没有人喜欢使用那种24小时时间格式转换 - 而上午12点/下午可能会引起那些没有注意的人,特别是在复制/粘贴时从24小时到双12小时的格式 - 将数据输入时间转换为基本公式示例中的可计算公式 - 一旦我将12-合并到公式中,我开始公式:= IF(C8> D8,12-C8 + D8,D8-C8然后再将其乘以负值1,之后它自行解决。
答案 2 :(得分:0)
检查客户端电脑的区域设置上的日期时间设置是否正确。只是作为一个建议,如果没有其他工作
答案 3 :(得分:0)
我认为RadGridView生成的日期时间总是像" 2016-06-16 13:57 PM"但是excel通过其内置功能对其进行格式化。这可能是由于缺少" PM"以便Excel添加它并将其转换为默认的日期时间格式。您只需将单元格属性更改为" Text"在复制之前,应始终将数据视为字符串。
答案 4 :(得分:0)
我能够解决问题,但我不得不操纵被添加到剪贴板的数据对象。
当它转变时唯一的问题是在DateTime值的末尾附加了句号,所以为了修复它,我使用以下代码删除了所有日期时间值中的所有句点。
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);
通过这样做,日期时间被粘贴为格式良好的24小时格式,并由excel检测到。
我能够创建另一个临时解决方案,但涉及我们的SSRS服务器。我使用与RadGridView相同的参数创建了一个简单的报表,报表输出可以作为excel电子表格轻松下载,而不必担心WinFroms控件操纵或翻译数据。
感谢大家的时间和答案。