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


Автор: kwotz 17.3.2007, 08:47
1. В процессе работы проги получаются числа типа «1236,603462489653». После сохранения в Эксель получается 
«123 660 346 248 969». Как сделать так, чтобы в ячейке Экселя было также как и в Делфи? (Выгружаю в Эксель такой строкой:
Код

Excel.ActiveWorkBook.WorkSheets[1].Cells[Rows+Rows_i,4]:=Edit1.Text;
)
2. Как проверить существует ли файл по пути 'c:\1.xls'? 
3. Я открываю файл
Код

Excel:=CreateOleObject('Excel.Application');
Excel.WorkBooks.Open('c:\1.xls');

Но если файл уже открыт, то вылетает сообщение, что файл существует и предлагает его заменить. Как сделать так, чтобы прога автоматически закрывала этот файл с сохранением (даже если не она его открывала) или просто занесла в этот открытый файл изменения и сохранила его?   smile 

Автор: Неопытный 17.3.2007, 09:24
У Меня тоже вопрос по данной теме.
Получаем число типа Float, н-р 123657,1212384 
Как в его отформатировать, чтобы в ячейке Excell оно выглядело 123 657, 12, то есть имело формат
0.00, с разделением тысяч

Автор: Insert 17.3.2007, 10:16
Посмотри здесь http://forum.vingrad.ru/topic-84634.html
и здесь http://forum.vingrad.ru/topic-47840.html

Автор: Albinos_x 17.3.2007, 12:53
1. Установить в Эксель формат ячейки текстовый. Но надёжней, чтоб при форматировании ячейки он не возвращал обять числовой формат сделать так:
Код

Excel.ActiveWorkBook.WorkSheets[1].Cells[Rows+Rows_i,4]:=''''+Edit1.Text;

этот код добавит перед числом знау апострофа, эксель его не покажет, т.к. распознает это как текстовый формат ячейки, но зато число отобразится как нужно...
2. 
Код

if FileExist() then
   begin
   // есть файл
   end
   else
   begin
   // нет файла
   end;

3. Открывать эксель не новым сервером, а присединяться к запущенному серверу. там проверять все открытые книги.

Добавлено @ 13:05 
Цитата(Неопытный @  17.3.2007,  09:24 Найти цитируемый пост)
Как в его отформатировать, чтобы в ячейке Excell оно выглядело 123 657, 12, то есть имело формат

Код

ExcelApplication1.Range['C'+inttostr(rr+2),EmptyParam].NumberFormat:='#,##0.00';

Цитата(Albinos_x @  17.3.2007,  12:53 Найти цитируемый пост)
Установить в Эксель формат ячейки текстовый.

как сделать, есть в здесь: http://forum.vingrad.ru/topic-84634.html
Код

ExcelApplication1.Range['C1',EmptyParam].NumberFormat:='@';

Автор: Неопытный 19.3.2007, 17:14
А как процентный формат установить

Добавлено @ 17:22 

 
Цитата


 ExcelApplication1.Range['C'+inttostr(rr+2),EmptyParam].NumberFormat:='#,##0.00'; 

Нельзя установить свойство NumberFormat класса ... 
- не работает

Автор: Неопытный 19.3.2007, 17:37
Есть число типа float, н-р 0,000000000134.
После записи его в ячейку Excell, оно выглядит как 0(и значение 0) - почему.
Нужно чтобы значение ячейки не было изменено, а имело формат, например, 0.00 
Подскажите пожалуйста как быть. (Ухищрения со строками не желательны)

Автор: Albinos_x 19.3.2007, 18:37
Цитата(Неопытный @  19.3.2007,  17:14 Найти цитируемый пост)
- не работает

сделай так:
Код
...
ExcelApplication1.Range['C'+inttostr(rr+2),EmptyParam].NumberFormat:='# ##0.00'; 
...


это просто некоторые особенности при работе в разных версиях Excel, этот должен работать... по идее... для стандартных настроек...

или используй функцию с www.delphikingdom.com 
Код

function XL_GetNumberFormat(XLApp: ExcelApplication): String;
begin
Result := Format('#%s##0%s%s', [XLApp.International[xlThousandsSeparator, lcid], XLApp.International[xlDecimalSeparator, lcid],
                                                         StringOfChar('0', Integer(XLApp.International[xlCurrencyDigits, lcid]))]);
end;

Автор: Неопытный 20.3.2007, 19:07
Указал формат # ##,000000000000, Записал в ячейку 
Затем изменил формат ячейки на # ##,0000, значение изменилось на 0.00
B еще почему 0 в целой части не отображается: ,03 - 0,03. Как сделать, чтобы отображалось?

Автор: ilya198293 16.8.2007, 15:38
А вед действительно не работает: 
Код
 
    Report.Range['D9','F20'].NumberFormat:='0.00'; 

Вроде по макросам в Excel идёт текст:
Код

    Range("D9:F20").Select
    Selection.NumberFormat = "0.00"


говорит что "Нельзя установить свойство NumberFormat класса Range".

Автор: ilya198293 17.8.2007, 06:44
Как говорится утро вечера мудренее...
Оказывается формат нужно указывать с учётом региональных настроек
вместо
Код

Report.Range['D9','F20'].NumberFormat:='0.00'; 

нужно писать 
Код

Report.Range['D9','F20'].NumberFormat:='0,00'; 

ну или у кого что
хотя сам VB отображает формат с точкой при настройках с запятой.

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