У меня Excel из клиента (который сгенерировал его из функции печати в Excel), странно то, что Excel содержит строку времени '06: 15: 00 'в ячейку с общим форматом. Я должен создать идентичный Excel из Delphi.
Может код:
FWorksheet.Cells.Item[4, 5].NumberFormat:='';
FWorksheet.Cells.Item[4, 5].NumberFormat:='06:15:00';
FWorksheet.Cells.Item[4, 5].NumberFormat:='';
Но это приводит к 0.260416666666667 в общем формате. Я могу наблюдать 2 странных сценария:
- Если я отформатирую ячейку как General, то напишу 6:15:00, в этом случае формат автоматически преобразуется в Custom и преобразование формата в General приводит к 0.26041666...
- Если я щелкаю мышью в ячейке (Общее: 6:15:00) клиентского Excel, то Excel преобразует формат ячейки в Пользовательский, а последующее преобразование в Общий текст также приводит к0.26 ...
Итак, я должен найти способ записать в ячейку General строку '06: 15: 00 'и в то же время сохранить формат General. Невозможно сгенерировать код Delphi из записанного кода макроса VBA, потому что я не могу найти способ составления визуальных команд Excel, чтобы прийти к этому состоянию.
Я использую OLE Excel Excel_TLB.
Я нашел последовательность команд в Excel, которая дает желаемый результат, эта последовательность может быть записана как макрос:
Range("O4").Select
Selection.NumberFormat = "@"
Range("O4").Select
ActiveCell.FormulaR1C1 = "06:15:00"
Range("O4").Select
Selection.NumberFormat = "General"
Range("O6").Select
Но мой перевод этого макроса в код Delphi:
FWorksheet.Cells.Item[4, 5].NumberFormat:='@';
FWorksheet.Cells.Item[4, 5].FormulaR1C1:='06:15:00';
FWorksheet.Cells.Item[4, 5].NumberFormat:='';
до сих пор производит 0,260 ...