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
C# 如何在将内容拖动到Excel时指定数据类型_C#_Excel_Drag And Drop - Fatal编程技术网

C# 如何在将内容拖动到Excel时指定数据类型

C# 如何在将内容拖动到Excel时指定数据类型,c#,excel,drag-and-drop,C#,Excel,Drag And Drop,我使用这个简单的 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单个单元格的数据类型,当内容被放入单元

我使用这个简单的

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通信的全部是字符串,如果可以,Excel将自动将其转换为日期或数字类型。如果不希望它将可标识类型转换为数据类型,则应以appostrophe(')字符开头,例如“100”,而不是100

如果希望拥有完全控制权,则应订阅Excel.Worksheet.Change事件,该事件将在拖放操作结束时触发。此时,您可以对自己的数据进行自定义转换。如果您首先以自定义格式传输数据,而Excel不会自动转换数据,这将非常方便。例如,不发送2x2的值块,例如:

您可以通过以下方式发送:

100你好
1.25 2010.10.9

这些值将作为字符串由单元格接收。但是,当启动sheet.Change事件时,它将告诉您哪些单元格已被更改,并且您的例程可以处理字符串,查找以
开头的任何内容“谢谢,我担心我需要做一些自定义excel黑客。你不知道如何将日期/时间格式化为字符串,以便excel检测到日期格式。excel会将多种字符串解释为日期。我会小心地使用一个明确的字符串,例如“2010年10月11日”,而不是“2010年10月11日”,在美国系统上,它将被解释为2010年10月11日,但在其他区域性中运行的Excel系统可能被解释为2010年11月10日。通过使用“DateTime.Parse”方法转换字符串,然后将日期时间分配给Excel,可以将转换保持在.NET中。您还可以使用“Range.NumberFormat”方法更改Excel在单元格中显示日期的方式,例如“MM/DD/YYYY”。
100 Hello
$1.25 10/9/2010
<DragDrop:Double>100</Double> <DragDrop:String>Hello</String>
<DragDrop:Currency>1.25</Currency> <DragDrop:Date>2010.10.9</Date>