Все, что вы можете общаться с Drag-Drop в Excel, это строки, которые Excel автоматически преобразует в дату или числовой тип, если это возможно. Если вы не хотите, чтобы он преобразовывал идентифицируемые типы в тип данных, тогда вы должны начинать значение с символа апостроф ('), например,' 100 вместо 100.
Если вы хотите получить полный контроль, вы должны подписаться на событие Excel.Worksheet.Change, которое будет запущено в конце действия Drag-Drop. На этом этапе вы можете сделать собственное преобразование ваших собственных данных. Это будет облегчено, если вы начнете передавать свои данные в произвольном формате, который не будет автоматически преобразован в Excel. Например, вместо отправки блока значений 2x2, таких как:
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>
Эти значения будут получены ячейками в виде строк. Но когда сработает событие Worksheet.Change, оно сообщит вам, какие ячейки были изменены, и ваша подпрограмма может обработать строки, ища все, что начинается с "<DragDrop:"
. Затем вы можете преобразовать их в требуемые типы данных, как указано в самих строках.
Подробный пример см. В статье Добавление функции перетаскивания с помощью инструментов .NET Framework и Visual Studio 2005 для Office, второе издание . В этой статье они используют пример, который является гораздо более уникальным, чем "<DragDrop:"
- они используют GUID в начале строки, чтобы действительно убедиться, что строка уникальна и идентифицируема. Но основная стратегия такая, как я описал выше.
Надеюсь, это поможет,
Mike