Excel C # COM аддон, возвращающий массив с датами и двойниками - PullRequest
0 голосов
/ 18 декабря 2011

Мой аддон C # Excel превращает временной ряд в другой временной.

Временной ряд определяется как диапазон из двух столбцов, причем первый столбец является датой, а второй столбец - числом с плавающей запятой.

Хотя мой код C # возвращает значение DateTime для даты, Excel преобразует его в дату Excel, представленную целым числом, и отображаемое значение является целым числом, например 39000, а не форматом даты, например 14/12/2012.

Таким образом, пользователь должен нажать CTRL + #, чтобы превратить его в даты.

Есть ли способ как-нибудь вернуть выходные данные аддона C # excel, уже Excel в формате Date?

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

В дополнение к ответу Адама с):
Если у вас есть переменная Date / Time и вы вернете ее в ячейку из Sub с помощью Range.Value, она отформатирует ячейку как дату (проверено с использованием VBA, а не C #: не уверен, что .Value доступно с помощью interop?)
Если вы используете Range.Value2, он НЕ будет форматировать ячейку как дату.
Если вы попытаетесь сделать это из UDF, UDF НЕ изменит форматирование ячейки.

1 голос
/ 18 декабря 2011

а) Отформатируйте ячейки из кода, который возвращает значения.Например, если у вас есть дескриптор объекта диапазона, вы можете сделать что-то вроде range.NumberFormat="yyyy-mm-dd".

b) Предварительно отформатируйте ячейки в формате даты перед запуском кода, который импортирует данные.Это будет работать, если каждый раз используется один и тот же лист, а не пустой или произвольный лист.

c) Это ужасный хак, но попробуйте вернуть значения даты в виде строк, отформатированных как "mm / dd /гггг».Это должно заставить Excel интерпретировать значения как даты.AFAIK Настройки локали машины в этом случае не влияют на перевод.

...