Как указать типы данных при перетаскивании содержимого в Excel - PullRequest
0 голосов
/ 07 октября 2010

Я инициирую перетаскивание из моего приложения 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 принимает, когда содержимое помещается в него.

1 Ответ

1 голос
/ 10 октября 2010

Все, что вы можете общаться с 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...