Я отправляю число в Excel 2007 в виде строки (Cell.Value: = '2,5'), используя позднюю привязку. Фактический код больше похож на:
var CellVal: OLEVariant;
...
CellVal := FloatToStr(2.5); // Regionally formatted.
Cell.Value := CellVal;
В моей версии Excel 97 это значение по умолчанию будет отформатировано как «Общий» и будет отображаться как число. Клиент с Excel 2007 получает ячейку, отформатированную как «Стандарт», и Excel видит ее как строку (она не выровнена по правому краю). Обратите внимание, что я использую региональные настройки для форматирования числа, и что Excel, похоже, использует региональные настройки по умолчанию.
Если клиент просто вводит 2,5 в ячейку, он принимает ее как число, и если он копирует строку «2,5» из буфера обмена в ячейку, она также принимается как число. Кто-нибудь знает, почему строковое значение, отправленное через интерфейс автоматизации в Excel, оказывается нечисловым?
Спасибо за любые предложения! Отредактировано, чтобы указать региональный десятичный разделитель для клиента ",".