Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Проблема с заданием строкового формата ячейки


Автор: Pavelvp 6.2.2015, 10:08
Доброго.
 Delphi XE2, Excel 2007.
 Коллеги бьюсь второй день и ничего понять не могу. Задача: экспортировать данные и чтобы эксель их автоматом в даты не преобразовывал решил ставить формат ячеек при экспорте в текстовый. Пишу так:

Код

    ExcelApp := CreateOleObject('Excel.Application');
    ExcelApp.WorkBooks.Add;
    ExcelApp.Workbooks[1].Sheets.Item[1].Cells[1,1].NumberFormat := '@';//вот так
    ExcelApp.Workbooks[1].Sheets.Item[1].Cells[1,1].NumberFormat :=  #64;//и так один результат



Формат ячейки при этом не меняется, в качестве формата у ячейки появляется просто число 64 и получается тип формата: все форматы. 
 При том если попробовать сделать числовой формат, всё нормально:
Код

    ExcelApp.Workbooks[1].Sheets.Item[1].Cells[1,1].NumberFormat := '0,00';//всё нормально, числовой формат


Не могу сообразить в чем дело, почему в качестве формата передаётся просто код собаки, а именно число "64"? Куда копать, как ещё проверять? Если выполнять код через макросы самого экселя, то всё нормально - формат ячейки меняется на текстовый.

Автор: Pavelvp 6.2.2015, 11:00
Бывает ведь, только написал и всё решилось само собой.

Вот так работает:
Код

s1 := '@';
ExcelApp.Workbooks[1].Sheets.Item[1].Cells[1,1].NumberFormat := s1;


Пришёл к этому после ряда запросов к экселю, но блин не понимаю почему?? По факту ничего вообще не изменилось.

Автор: Albinos_x 13.2.2015, 18:12
если заносите число и хотите, чтоб excel воспринимал это как текстовую ячейку - перед цифрой ставьте символ апострофа - excel не покажет апостроф - распозная, что пришедшее число является тектом, например:
Код

i: integer;
...
i:=5
ExcelApp.Workbooks[1].Sheets.Item[1].Cells[1,1].Value2 := ''''+i;
...

Автор: Pavelvp 3.3.2015, 12:47
Я заношу набор чисел, а Excel воспринимает их как дату. Переношу данные используя Memo и CopyToClipboard. Пробовал ставить апострофы, не получалось. Возможно именно потому, что процесс вставки выглядит так:    ExcelApp.Workbooks[1].Sheets.Item[1].Paste;



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)