Я отправляю число в 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, не является числом?
Спасибо за любые предложения! Отредактировано, чтобы указать региональный десятичный разделитель для клиента ','.