遅延バインディングを使用して、数値を文字列(Cell.Value:= '2,5')としてExcel2007に送信しています。実際のコードは次のようになります。
var CellVal: OLEVariant;
...
CellVal := FloatToStr(2.5); // Regionally formatted.
Cell.Value := CellVal;
私のExcel97バージョンでは、この値はデフォルトで「一般」としてフォーマットされ、数値として表示されます。Excel 2007を使用しているお客様は、セルが「標準」としてフォーマットされ、Excelはそれを文字列として表示します(右揃えではありません)。地域設定を使用して数値をフォーマットしており、Excelが使用しているように見えることに注意してください。デフォルトの地域設定も同様です。
顧客がセルに2,5と入力するだけで数値として受け入れられ、クリップボードからセルに文字列「2,5」のコピーを作成すると、それも数値として受け入れられます。自動化インターフェイスを介してExcelに送信された文字列値が非数値になる理由を誰かが知っていますか?
提案をありがとう!顧客の地域の小数点を指定するように編集されたのは'、'です。