我使用这个简单的命令从我的WinForms应用程序开始拖放
IDataObject data = new DataObject();
string textToExcel = "Hello\tWorld\t1\t2\nHello\tWorld\t1\t2\n"
data.SetData(DataFormats.Text, textToExcel);
当我拖放到Excel上时,我工作得很好,它以列和行的形式结束。问题是Excel不知道值为1和2的单元格是数值,当删除日期值时,情况会变得更糟。
我如何告诉Excel单个单元格的数据类型,当内容被拖放到Excel中时,Excel是否可以接受更丰富的类型。
发布于 2010-10-10 08:36:46
通过拖放到Excel中,您能够进行通信的只是字符串,如果可以,Excel会自动将其转换为日期或数字类型。如果您不希望它将可识别类型转换为数据类型,则应该以appostrophe (')字符开头,例如' 100,而不是100。
如果您希望拥有完全控制,则应订阅Excel.Worksheet.Change事件,该事件将在拖放操作结束时触发。在这一点上,您可以对自己的数据进行自定义转换。如果您一开始就将数据作为一种不会被Excel自动转换的自定义格式传输,这将会很方便。例如,不是发送2x2块值,例如:
100 Hello $1.25 2010年10月9日
您可以通过以下方式发送它:
100 Hello 1.25 2010.10.9
这些值将由单元格作为字符串接收。但是当Worksheet.Change事件触发时,它将告诉您哪些单元格已经更改,并且您的例程可以处理字符串,查找以"<DragDrop:"
开头的任何内容。然后,您可以将它们转换为字符串本身中指定的所需数据类型。
有关详细的示例,请参阅文章Adding Drag-and-Drop Functionality using the .NET Framework and Visual Studio 2005 Tools for Office Second Edition。在这篇文章中,他们使用了一个比"<DragDrop:"
更独特示例--他们在字符串的前面使用GUID来真正确保字符串是唯一的和可识别的。但基本策略如上所述。
希望这能帮上忙
麦克
https://stackoverflow.com/questions/3881301
复制相似问题