Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
WPF DataGrid复制到剪贴板:如何影响剪贴板中的数据格式?_Wpf_Excel_Datagrid_Clipboard - Fatal编程技术网

WPF DataGrid复制到剪贴板:如何影响剪贴板中的数据格式?

WPF DataGrid复制到剪贴板:如何影响剪贴板中的数据格式?,wpf,excel,datagrid,clipboard,Wpf,Excel,Datagrid,Clipboard,WPF DataGrid中有一个很好的默认特性,它将选定的单元格复制到剪贴板中,所以我们可以在其他应用程序中使用它。但看起来,复制过程在性能方面是可以改进的,而且还存在某种。。。我想,粘贴到excel时的错误需要修复 复制错误excel用法的步骤 A.1从WPF数据网格复制单元格,包含带或不带前导零的文本值,例如001;002; 1.12345; ABC;0ABC A.2将复制的数据粘贴到excel中。预计会保留前导零,但如果可能,excel会将数值转换为数字数据格式,默认情况下,单元格数据类型

WPF DataGrid中有一个很好的默认特性,它将选定的单元格复制到剪贴板中,所以我们可以在其他应用程序中使用它。但看起来,复制过程在性能方面是可以改进的,而且还存在某种。。。我想,粘贴到excel时的错误需要修复

复制错误excel用法的步骤

A.1从WPF数据网格复制单元格,包含带或不带前导零的文本值,例如001;002; 1.12345; ABC;0ABC

A.2将复制的数据粘贴到excel中。预计会保留前导零,但如果可能,excel会将数值转换为数字数据格式,默认情况下,单元格数据类型为General,这样做

复制错误纠正excel用法的步骤

B.1从WPF数据网格复制单元格,包含带或不带前导零的文本值,例如001;002; 1.12345; ABC;0ABC

B.2选择目标excel文件中的所有单元格,并将单元格数据类型更改为文本

B.3将复制的数据粘贴到excel中。预计前导零将保留,但它们也将消失

在excel中查看预期结果的步骤正确使用excel

C.1将相同的数据从记事本复制到剪贴板

C.2选择目标excel文件中的所有单元格,并将单元格数据类型更改为文本

C.3将复制的数据粘贴到excel中。预计前导零将被保留,现在这是真的。我们可以看到与源数据相同的数据。所见即所得

我开始查看剪贴板数据,以找出B.1和C.1之间的差异。我还从excel复制了相同的数据,并将其签出。。。。我在Microsoft的C剪贴板查看器示例的帮助下发现:

从记事本++复制的数据的剪贴板数据格式:

            - Text (native)

            - UnicodeText (native)

            - System.String (autoconvertable)

            - Locale (native)

            - OEMText (native)
从WPF DataGrid复制的数据的剪贴板数据格式:

            - HTML Format (native)

            - Csv (native)

            - Text (native)

            - UnicodeText (native)

            - System.String (autoconvertable)
从Excel复制的数据的剪贴板数据格式:

            - EnhancedMetafile (native)

            - System.Drawing.Imaging.Metafile (autoconvertable)

            - MetaFilePict (native)

            - Bitmap (native)

            - System.Drawing.Bitmap (autoconvertable)

            - System.Windows.Media.Imaging.BitmapSource (autoconvertable)

            - Biff12 (native)

            - Biff8 (native)

            - Biff5 (native)

            - SymbolicLink (native)

            - DataInterchangeFormat (native)

            - XML Spreadsheet (native)

            - HTML Format (native)

            - Text (native)

            - UnicodeText (native)

            - System.String (autoconvertable)

            - Csv (native)

            - Hyperlink (native)

            - Rich Text Format (native)

            - Embed Source (native)

            - Object Descriptor (native)

            - Link Source (native)

            - Link Source Descriptor (native)

            - Link (native)

            - Format129 (native)
那么,解决步骤B.3中问题的最佳方法是什么?我想知道目前有两种选择:

选择1

找出向wpf datagrid解释需要以特定格式将数据设置到剪贴板的方法

选择2

第二个选项是使用我自己的函数处理Ctrl+C,该函数将在选定的单元格中运行,与datagrid后面的视图对话,获取正确的数据,附加到字符串生成器,并将文本设置到剪贴板


对于上述B.3,您认为什么是最好的解决方案?

好的。既然我说的是从WPF数据网格复制到剪贴板。。。我研究了datagrid的源代码,我以前应该想到这个想法,而不是问这个问题

因此,源中复制处理程序的一部分是:

        // Supported default formats: Html, Text, UnicodeText and CSV
        Collection<string> formats = new Collection<string>(new string[] { DataFormats.Html, DataFormats.Text, DataFormats.UnicodeText, DataFormats.CommaSeparatedValue });

这将为所有情况提供很好的解决方案。

1。请提出一个明确的问题。2.您无法控制对象如何粘贴到Excel中。3.您可以将任何格式的数据存储到剪贴板中。。。请参阅MSDN.1上的页面。明确的问题是如何解决意外行为,这在B部分中有描述。项目B.3.2。显然我不知道,但我是通过编程的。A部分和B部分之间存在差异-您需要正确使用excel。在粘贴之前使用文本数据类型。所以我们可以控制这一切。3.谢谢,这进入了我脑海中的选项2,请不要发布任何附加链接,我知道如何将数据复制到剪贴板:-明确回答:除非你开发了Excel,那么正如我刚才提到的,你无法控制对象如何粘贴到Excel中。。。或任何其他应用程序。粘贴功能是在接收剪贴板数据的应用程序中实现的,因此您所能做的最好的事情是找出Excel可以接受的数据类型,然后使用我在上一篇评论中提供的链接手动将数据转换为该格式。亲爱的Sheridan。我不是在问excel。完全我问的是如何将数据从WPF DataGrid复制到剪贴板,复制方式与使用记事本相同。现在对你来说够清楚了吗?我还建议您复制第3节中描述的步骤。您将看到,可以按预期将数据复制并粘贴到excel中,而不丢失前导零=不需要在excel中进行更改。还有一件事:除非您开发了excel,否则正如我刚才提到的,您无法控制对象如何粘贴到excel中。。。或任何其他应用程序。这是真的,只有当你从一个单一的角度——程序员的角度来看待这个问题时。当然,从普通用户的角度来看,您可以控制如何将数据粘贴到excel中。此控件仅限于函数,公开给最终用户使用,其中一个是更改目标单元格数据类型。很好的主题。如果您在复制那些不是自动递增的PK列时遇到任何问题?对我来说,当我用这样的PK复制fullrow时,它会跳到另一行。
        protected virtual void OnExecutedCopy(ExecutedRoutedEventArgs args)