Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Вниз

Сменить запятую на точку   Найти похожие ветки 

 
ffo ©   (2006-08-19 20:14) [0]

Как при запуске имеющегося файла Excel из моей программы программно установить в этом файле разделителем целой и дробной части точку (по умолчанию стоит как мы знаем в Excel2003 запятая). Ну то есть надо программно выполнить команду (в Excel) Сервис - параметры - международные - убрать галочку "использовать системные разделители" - посавить вместо запятой точку. Да...вот еще что... надо после окончания работы с программой вернуть все обратно (запятую)


 
Anatoly Podgoretsky ©   (2006-08-19 20:15) [1]

(по умолчанию стоит как мы знаем в Excel2003 запятая).

Мы этого не знаем.


 
AntiUser ©   (2006-08-19 20:29) [2]

Мы этого не знаем. Потому, что по умолчанию она берется из системы, а не в excel"е

Макрос для смены:
With Application
       .DecimalSeparator = ":"
       .ThousandsSeparator = "."
       .UseSystemSeparators = False
End With
Делай выводы.


 
AntiUser ©   (2006-08-19 20:31) [3]

P.S.
Но это не есть гуд, заниматься такой фигней. В будущем возникнет КУЧА проблем из-за этого, так как у других разделители будут ПРАВИЛНЫЕ, в отличии от твоих.


 
ffo ©   (2006-08-19 21:30) [4]


> Но это не есть гуд, заниматься такой фигней. В будущем возникнет
> КУЧА проблем из-за этого, так как у других разделители будут
> ПРАВИЛНЫЕ, в отличии от твоих.
<Задача еще и в том, чтоб при выходе из моей программы вернуть все в исходное (поставить запятую)/I>


 
ffo ©   (2006-08-19 21:32) [5]


> Как при запуске имеющегося файла Excel из моей программы
> программно установить в этом файле разделителем целой и
> дробной части точку (по умолчанию стоит как мы знаем в Excel2003
> запятая). Ну то есть надо программно выполнить команду (в
> Excel) Сервис - параметры - международные - убрать галочку
> "использовать системные разделители" - посавить вместо запятой
> точку. Да...вот еще что... надо после окончания работы с
> программой вернуть все обратно (запятую)


Я в Delphi5 работаю !!!


 
ffo ©   (2006-08-19 21:36) [6]


> Мы этого не знаем. Потому, что по умолчанию она берется
> из системы, а не в excel"еМакрос для смены:With Application
>        .DecimalSeparator = ":"        .ThousandsSeparator
> = "."        .UseSystemSeparators = FalseEnd WithДелай выводы.
>


Меняю системные настроки перед запуском Excel:
if DecimalSeparator = "," then
begin
 if MessageDlg("Внимание !!!"+ #13+#13+
 "Для нормальной работы программы необходимо, чтобы разделителем целой и дробной части чисел была точка."+#13+
 "Менять запятую на точку? ",mtWarning,[mbYes,mbNo],0)=mrNO then Abort;
  DecimalSeparator := ".";
 //DateSeparator:=".";
 //ShortDateFormat:="dd.mm.yyyyy";
 //ShortTimeFormat:="hh:mm:ss";
end;
end;

Не помогает!!!!!!11


 
AntiUser ©   (2006-08-19 21:42) [7]

А можно поинтересоваться "Для нормальной работы программы необходимо, чтобы разделителем целой и дробной части чисел была точка", это как?


 
AntiUser ©   (2006-08-19 21:43) [8]

Что эта программа делает?


 
ffo ©   (2006-08-19 22:00) [9]


> А можно поинтересоваться "Для нормальной работы программы
> необходимо, чтобы разделителем целой и дробной части чисел
> была точка", это как?


Программа расчета расхода топива самолета. Проблема здесь

SHEET:=Excel.Workbooks[1].Sheets[1];// ссылка на второй лист
SHEET.Columns.Clear;//очистить предыдущие записи
SHEET.PageSetup.PrintGridLines:=TRUE;// разрешили печать сетки
SHEET.CELLS[2,2]:="Контрольное значение ";
SHEET.CELLS[3,2]:="1965";

//Здесь выдается сообщение об ошибке
//В Excel надо установить: Сервис -> Настройка -> Международные -> точка
SHEET.CELLS[3,2].NumberFormat:="000.00";
//Надо так
// SHEET.CELLS[3,2].NumberFormat:="000,00";

Если заранее установить в Excel разделителем точку, то проблем нет, но я не знаю кто будет дальше работать с программой...каждому не объяснишь что и где там надо предварительно настроить.


 
AntiUser ©   (2006-08-19 22:22) [10]

Извините, не понял. А почему бы перед вводом не поменять точку на запятую или я чего-то не понимаю?


 
AntiUser ©   (2006-08-19 22:58) [11]

Вообще, если я все-таки понял Ваши далеко пространственные объяснения, то Вам, наверное, нужно вот это:

var
 s:string;
 Excel:OleVariant;
 WorkBook, Sheet: Variant;
begin
 s:=ExtractFilePath(ParamStr(0))+"fff.xls";
 Excel := CreateOleObject("Excel.Application");
 WorkBook := Excel.Application.WorkBooks.Add;
 Sheet := WorkBook.WorkSheets[1];
 Excel.ActiveWorkBook.Saveas(s ,xlNormal,"","",FALSE, FALSE);
 try
   SHEET.CELLS[2,2]:="Контрольное значение ";
   SHEET.CELLS[3,2]:="1965";
   Sheet.Columns[2].Select; // Для всей 2 колонки
   SHEET.CELLS[3,2].Select; // Для ячейки
   Excel.Selection.NumberFormat:="0,00";


   Excel.Application.ActiveWorkbook.Save;
   Application.MessageBox(PChar(s),"Окончено.", MB_OK + MB_ICONINFORMATION);
 finally
   Excel.WorkBooks.Close;
 end;
end;


 
ffo ©   (2006-08-19 23:39) [12]


> Вообще, если я все-таки понял Ваши далеко пространственные
> объяснения, то Вам, наверное, нужно вот это:


Не то. Мне нужно в Excel-е изменить международные параметры. Смотрите как бы я это делал без моей программы. Я бы запустил Excel, потом нажал Сервис -параметры-международные, потом убрал-бы галочку ИСПОЛЬЗОВАТЬ СИСТЕМНЫЕ РАЗДЕЛИТЕЛИ и в ячейке РАЗДЕЛИТЕЛИ ЦЕЛОЙ И ДРОБНОЙ ЧАСТИ поставил-бы точку, нажал ОК. Вот и все.

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


 
AntiUser ©   (2006-08-20 11:55) [13]

Ну всё, я пас. Разговор глухо и слепего.
Я понимаю, что Вы хотите сменить системный разделитель, я не понимаю ДЛЯ ЧЕГО. Если Вы программно заполняете xls-документ, то нет такой задачи, для которой бы было НЕОБХОДИМО сменить разделитель, т.к. тот же разделитель можно поменять в программе. Я пытаюсь Вам объяснить, что у Вас ошибка в определении задачи, Вы поставили перед собой не правильную задачу для решения возникшей у Вас проблемы (сужу исключительно по Вашим постам).
Вы привели некий пример, в котором, даже не вводится дробное число.
Однако предположим, что Вам надо ввести число:
SHEET.CELLS[3,2]:="1965,45";
Тогда, да мы получим его сохраненным в ячейке как текст. Однако, если мы сделаем так:
SHEET.CELLS[3, 2] := StringReplace("1965,45", ",", ".", [rfReplaceAll]);
то тогда все будет чики-пуки. И никаких смен системных разделителей.
Продолжим. Если Вы хотите, что бы при вводе
SHEET.CELLS[3,2]:="1965";
Число в ячейке отобразилость как 1965,00, тогда надо сделать так
SHEET.CELLS[3, 2].NumberFormat := "0,00";
SHEET.CELLS[3, 2] := "1965";

Т.е. сначала назначить NumberFormat, а уже затем вставлять число.

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

================

О-о-о-о!!!! Меня осенило!!!! Вы хотите, чтобы при открыти Вашего документа, вместо запятых отображались точки, так?

Вообщем, телепатия какая-то.


 
Anatoly Podgoretsky ©   (2006-08-20 12:00) [14]

ffo ©   (19.08.06 23:39) [12]
Не то. Мне нужно в Excel-е изменить международные параметры.

А пользователю это нужно?


 
ffo ©   (2006-08-20 14:18) [15]


> Разговор глухо и слепего.

Во блин... Попробую еще проще.
Программа делалась давно и прекрасно работала в Win98 c Офисом-98(2000). Там при установке Офиса по умолчанию в Excel-е разделителем является точка.

Теперь пользователи перешли на Офис2003 (XP). Звонят мне и говорят, что из моей программы перестал запускаться Excel. Совсем перестал... виснет программа и все. Я стал разбираться в чем дело.
Вначале решил проверить запускается ли моей программой Excel2003(XP) без вывода туда данных. Для этого на базе основной программы сделал отладочную прораммку просто открытия файла IShR_ExcelA4.xls, лежащего в каталоге программы:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Excel97,OleServer,ComObj,AppEvnts, StdCtrls, Grids, Buttons, ExtCtrls,Clipbrd, ComCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
    Excel:Variant;
 end;
var
 Form1: TForm1;
implementation
USES  ShellAPI;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
CONST
Msg="Вы пытаетесь установить связь с сервером "Microsoft ExcelXP". Этот процесс может занять значительное время."+#13+" Продолжить?";
VAR
SHEET:Variant;
n:OleVariant;
BegTime:TDateTime;
BEGIN
IF APPLICATION.MessageBox(Msg,"Загрузка Microsoft ExcelXP",MB_YesNO + MB_ICONEXCLAMATION)= IDNO THEN Exit;
BegTime:=Time;//Контроль времени загрузки ExcelXP

//Определяем путь к файлу IShR_ExcelA4.xls, который надо открыть для редактирования (он сущечтвует и у него три листа)
n:=APPLICATION.ExeName;
n:=ExtractFilePath(n);
n:=n+"IShR_ExcelA4.xls";

try
Excel:=CreateOleObject("Excel.APPLICATION")
except
ShowMessage("Нет доступа к серверу "ExcelXP"");
Exit;
END;
Screen.Cursor:=crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// добавляем новую книгу с одним листом
Excel.Workbooks.Open(n,0);

//****************** Добавляем записи в "ЛИСТ1" *******
SHEET:=Excel.Workbooks[1].Sheets[1];//РАСЧЕТ МАРШРУТА И ТОПЛИВА
SHEET.Columns.Clear;//очистить предыдущие записи
SHEET.PageSetup.PrintGridLines:=TRUE;// разрешили печать сетки

//ТУТ БУДЕМ ВЫВОДИТЬ ДАННЫЕ

//************************* Добавляем записи в "ЛИСТ2" ******************
SHEET:=Excel.Workbooks[1].Sheets[2];
SHEET.Columns.Clear;//очистить предыдущие записи
// SHEET.CELLS[6,22]:="Неизменный вес";
// SHEET.CELLS[7,22]:="Груз";

//ТУТ БУДЕМ ВЫВОДИТЬ ДАННЫЕ

Screen.Cursor:=crDefault;
Excel.VISIBLE:=TRUE; //Показываем Excel
Label1.Caption:="Время загрузки  "+TimeToStr(Time-BegTime);
END;
end.

Так вот этот прмер мне показал, что Excel прекрасно запускается и видимо причина в тех данных, которые выводятся в файл Excel после его запуска.

Я стал проверять дальше. То есть попробовал выводить данные

Пока проверяете (если хотите конечно) работу этого примера я отойду не на долго, а потом продолжу расказ о своих опытах. О том как я вычислил в чем причина.


 
Anatoly Podgoretsky ©   (2006-08-20 14:22) [16]

Программа делалась давно и прекрасно работала в Win98 c Офисом-98

Такого офиса в природе не существует, претензии к пиратам.


 
ffo ©   (2006-08-20 14:45) [17]


>  Разговор глухо и слепего.


Добавил я данные:

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Excel97,OleServer,ComObj,AppEvnts, StdCtrls, Grids, Buttons, ExtCtrls,Clipbrd, ComCtrls;
type
 TForm1 = class(TForm)
   Button1: TButton;
   Label1: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
    Excel:Variant;
 end;
var
 Form1: TForm1;
implementation
USES  ShellAPI;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
CONST
Msg="Вы пытаетесь установить связь с сервером "Microsoft ExcelXP". Этот процесс может занять значительное время."+#13+" Продолжить?";
VAR
SHEET:Variant;
n:OleVariant;
BegTime:TDateTime;
BEGIN
IF APPLICATION.MessageBox(Msg,"Загрузка Microsoft ExcelXP",MB_YesNO + MB_ICONEXCLAMATION)= IDNO THEN Exit;
BegTime:=Time;//Контроль времени загрузки ExcelXP

//Определяем путь к файлу IShR_ExcelA4.xls, который надо открыть для редактирования
n:=APPLICATION.ExeName;
n:=ExtractFilePath(n);
n:=n+"IShR_ExcelA4.xls";

try
Excel:=CreateOleObject("Excel.APPLICATION")
except
ShowMessage("Нет доступа к серверу "ExcelXP"");
Exit;
END;
Screen.Cursor:=crHourGlass;
//Excel.SheetsInNewWorkbook:=1;// добавляем новую книгу с одним листом
Excel.Workbooks.Open(n,0);

//****************** Добавляем записи в "ЛИСТ1" *******
SHEET:=Excel.Workbooks[1].Sheets[1];//(РАСЧЕТ МАРШРУТА И ТОПЛИВА)
SHEET.Columns.Clear;//очистить предыдущие записи
SHEET.PageSetup.PrintGridLines:=TRUE;// разрешили печать сетки

SHEET.CELLS[2,2]:="Контрольное значение ";
SHEET.CELLS[3,2]:="19.65";

SHEET.CELLS[3,2].NumberFormat:="000.00";

//************************* Добавляем записи в "ЛИСТ2" ******************
SHEET:=Excel.Workbooks[1].Sheets[2];// ссылка на лист
SHEET.Columns.Clear;//очистить предыдущие записи

SHEET.CELLS[6,22]:="67.777";
SHEET.CELLS[6,22].NumberFormat:="000.00";

Screen.Cursor:=crDefault;
Excel.VISIBLE:=TRUE; //Показываем Excel
Label1.Caption:="Время загрузки  "+TimeToStr(Time-BegTime);
END;

end.

И тут при работающем Delphi вылезла ошибка НЕЛЬЗЯ УСТАНОВИТЬ СВОЙСТВО КЛАССА NumberFormat КЛАССА Page

Значит дело в формате...
Я в программе заменил все выражения типа
SHEET.CELLS[3,2].NumberFormat:="000.00";

на

SHEET.CELLS[3,2].NumberFormat:="000,00";

Ошибка пропала.

И все бы ничего, но ведь кто то там далеко не перешел на Офис 2003(XP)...
значит теперь ему это не подойдет.

Вот и решил я, что не зависимо от того, что там у них является разделителем моя программа должна сделать разделителем точку, поработать, а при выключении вернуть то, что уних там было (точку или запятую).

Думалось мне, что это можно сделать добавив при загрузке программы
строку команды смены разделителя в системе:
procedure TForm1.FormCreate(Sender: TObject);
begin
if DecimalSeparator = "," then
begin
 if MessageDlg("Внимание !!!"+ #13+#13+
 "Для нормальной работы программы необходимо, чтобы разделителем целой и дробной части чисел была точка."+#13+
 "Менять запятую на точку? ",mtWarning,[mbYes,mbNo],0)=mrNO then Abort;
  DecimalSeparator := ".";
 //DateSeparator:=".";
 //ShortDateFormat:="dd.mm.yyyyy";
 //ShortTimeFormat:="hh:mm:ss";
end;
end;

Не помогает. Вот и решил я спросить у знающих Хлопцев в интернете.

Кстати, если оставить  SHEET.CELLS[3,2].NumberFormat:="000.00",
а в Excele предварительно установить разделителем точку (Сервис- параметры-международные-поставить точку), то все тип-топ.
Ну не писать же мне инструкцию по применеию программы ... хотя возможно придется ... а всего-то надо научиться менять в Excel запятую на точку программно, так же как "Сервис- параметры-международные-поставить точку".


 
Anatoly Podgoretsky ©   (2006-08-20 14:49) [18]

Формат должен соответствовать региональным настройкам, и это касается не только Экселя, но и других приложений. Ты же сам нарушаешь все требования ОС, а код то твой, кто мешает правильно писать.


 
ffo ©   (2006-08-20 14:49) [19]


> Программа делалась давно и прекрасно работала в Win98 c
> Офисом-98

Извиняюсь...думаю вы поняли. что 97


 
ffo ©   (2006-08-20 14:54) [20]


> Anatoly Podgoretsky

Опытом проверено, что сколько у компьютера пользователей, столько и настроек... поэтому программа должна сделать какие надо, а после завершения все вернуть на место...то есть быть независимой от них.. этого я и добиваюсь


 
AntiUser ©   (2006-08-20 15:01) [21]

ffo ©   (20.08.06 14:45) [17]
И тут при работающем Delphi вылезла ошибка НЕЛЬЗЯ УСТАНОВИТЬ СВОЙСТВО КЛАССА NumberFormat КЛАССА Page

Во-первых класса Rage и это правильно, а во-вторых я сейчас ухожу и приду вечером, если будет возможность посмотрю.


 
Галинка ©   (2006-08-20 15:15) [22]

А нельзяли как то опросить системный разделитель, и при выгрузке в ексель им пользоваться? Т.е. программа считает так, как нравится ей, а в эксель грузится все, так как ему нравится.


 
Галинка ©   (2006-08-20 15:16) [23]

Ну и версию самого экселя узнавать. Если младше 2003, то не транслировать, если он или старше - транслировать...


 
Anatoly Podgoretsky ©   (2006-08-20 15:25) [24]

ffo ©   (20.08.06 14:49) [19]
Нет не понял, я за свое время насмотрелся и на дельфи 5.5 и на Виндоус 96


 
Anatoly Podgoretsky ©   (2006-08-20 15:29) [25]

ffo ©   (20.08.06 14:54) [20]
Программа такого делать ни в коем случае не должна, подобного программиста надо сразу увольнять.


 
Anatoly Podgoretsky ©   (2006-08-20 15:32) [26]

Галинка ©   (20.08.06 15:16) [23]
Конечно и информация о поддержке содержится в реестре, тот же самый excel.application.x и если поддержаны несколько то можно использовать любой.
Одно делать нельзя - нельзя менять пользовательские настройки, региональные настройки и т.д. за это надо рублем наказывать.


 
ffo ©   (2006-08-20 18:09) [27]


> Галинка

Пробую вместо DecimalSeparator := "." послать SendMessage
Вернее не пробую, а разыскиваю параметрвы необходимого сообщения системе


 
ffo ©   (2006-08-20 18:27) [28]


> Галинка


Ну давайте тогда стандартные настройки Excel-я установим, поработаем с нашей программой, а потом вернем все в исходное, как было (у пользователей).Только как? В том-то и вопрос.
Мало ли кто и что меняет при работе с Excel. Там люди может под свои нужды подстроили и забыли. На то и дана такая возможность - ставить точку или запятую в окне Международных настроек. Это только Anatoly Podgoretsky всех рублем за это предлогает наказывать, а разработчики Excel как видите думают иначе, позволяя делать так как кому нужно. И это правильно. Стандарты тоже дело наживное... раньше точка была, теперь запятая ... на то мы и астрономы, чтобы думать. Я же не предлогаю делать только как я хочу. Я предлогаю поработать, а потом вернуть в исходное.

Пока думаю так... либо сообщение надо искать в систему на смену системного разделителя перед запуском Excel (а потом сообщение на возврат всего в исходное не зависимо от того, что там было), либо надо инструкцию к программе писать....


 
vrem   (2006-08-20 18:39) [29]

[28] ffo ©   (20.08.06 18:27)
Вопрос в другом - такие действия, как описываешь - изменять/восстанавливать настройки действительно необходимо для реализации алгоритма программы твоей? Может программа твоя зарвалась и требует лишнего? как в магазине продавцы пристанут - а трезвы ли вы, а может в трубку подышать. пока соблюдаешь соцправила поведения в магазине можешь хоть смертельно пьяным быть - продавцы должны молчать.


 
Virgo_Style ©   (2006-08-20 18:40) [30]

собственно, а зачем надо менять?


 
ffo ©   (2006-08-20 18:49) [31]


> Может программа твоя зарвалась и требует лишнего?


Лишнего не требует...наоборот надо бы ее расширить, да все времени нет


 
guav ©   (2006-08-20 18:51) [32]


> ffo ©  


> SHEET.CELLS[3,2].NumberFormat:="000.00";


Таки непонятно, что мешает писать SHEET.CELLS[3,2].NumberFormat:=Format("000%s00", [XLSeparator]);  , где XLSeparator взять из того св-ва которое отображает соответствующую настройку экселя ?


 
guav ©   (2006-08-20 18:54) [33]

> SHEET.CELLS[3,2]:="19.65";

Если это число а не текст, то почему не пишется как число ?
SHEET.CELLS[3,2]:=19.65;


 
ffo ©   (2006-08-20 19:04) [34]


> Таки непонятно, что мешает писать SHEET.CELLS[3,2].NumberFormat:
> =Format("000%s00", [XLSeparator]);


[XLSeparator] у меня нет. Я в Delphi5 работаю. Перешел бы на более познюю версию, да привязан в этой программе к нескольким серьезным комонентам.


 
guav ©   (2006-08-20 19:14) [35]

> [XLSeparator] у меня нет.

Я не достаточно понятно выразился ?
XLSeparator - переменная строкового или символьного типа которое берётся из св-ва Excel.DecimalSeparator !

Если пользователь екселя требует точку давай точку, если требует запятую давай запятую, подставляя соответствующий разделитель в данные своей программы при необходимости.


 
ffo ©   (2006-08-20 20:17) [36]


> XLSeparator


Что я наделал...

Procedure ...
var
XLSeparator:variant;
begin
XLSeparator:= Excel.DecimalSeparator;
SHEET.CELLS[3,2]:="19.65";
SHEET.CELLS[3,2].NumberFormat:=Format("000%s00", [XLSeparator]);
end;

Получил ошибку Format % invalid or incompatible with argument


 
Anatoly Podgoretsky ©   (2006-08-20 20:24) [37]

ffo ©   (20.08.06 18:27) [28]
Разработчики думают иначе чем ты, поэтому и вынесли данную настройку в пользовательскик, а программиста, который себя ставит выше пользователя надо наказывать.
Тем более что это глобальные вещи, которые влияют на все экземпляры Экселя.


 
ffo ©   (2006-08-20 20:33) [38]


> Anatoly Podgoretsky

Просмотрел все твои ссылки и не нашел ни одной дельной. Одни разглагольствования и призывы к наказанию. Аnatoly Podgoretsky. Не занимал бы ты эфир


 
Anatoly Podgoretsky ©   (2006-08-20 20:40) [39]

Ну чтож у тебя есть возможность не писать, я даже не буду давать характеристики этой писанине.
Но поговорка Юпитер ты сердишься, значит ты не прав очень верна в твоем случае.
Второй вариант обратиться в персональную службу поддержки, а не в публичный форум.
И не тебе судить о моих ссылках, интеллекта не хватит.


 
guav ©   (2006-08-20 20:43) [40]

> [36] ffo ©   (20.08.06 20:17)


> XLSeparator - переменная строкового или символьного типа

var
XLSeparator:string;
begin
XLSeparator:= Excel.DecimalSeparator;
SHEET.CELLS[3,2]:=19.65;
SHEET.CELLS[3,2].NumberFormat:=Format("000%s00", [XLSeparator])
end;


 
AntiUser ©   (2006-08-20 20:47) [41]

Ну вот, пока ходил, Вам тут уже все, похоже расписали.

ffo ©   (20.08.06 20:17) [36]
> XLSeparator
Что я наделал...


Федор (извините за некоторую фамильярность), но как же так можно? Вам же guav © уже ВСЁ расписал и разжевал.
Напишите у себя:

SHEET.CELLS[3, 2].NumberFormat := Format("000%s00", [Excel.DecimalSeparator]);

И будет не зависимо от версии Excel"я


 
Anatoly Podgoretsky ©   (2006-08-20 20:54) [42]

Не в коня корм


 
ffo ©   (2006-08-20 21:12) [43]

guav и AntiUser! Большое спасибо за советы.
Все работает.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.037 c
2-1155816088
fast2
2006-08-17 16:01
2006.09.10
Как сделать, чтоб при нажатии на Enter, не зависимо от того, где


2-1156349211
B.T.R.
2006-08-23 20:06
2006.09.10
Form1 and Form2


1-1154115688
Gnoll
2006-07-28 23:41
2006.09.10
компонент типо Мемо с возможность вставки анимированных картинок.


5-1139301255
Priest
2006-02-07 11:34
2006.09.10
Делегирование реализации интерфейсов


15-1155588168
ronyn
2006-08-15 00:42
2006.09.10
Автозагрузка в Win2000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский