Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.06;
Скачать: CL | DM;

Вниз

Работа с Excel`em   Найти похожие ветки 

 
pave1 ©   (2003-01-15 13:53) [0]

Хотел спросить, можно ли с помощью Дельфи начертить рамку вокруг ячейки в книге Excel, а так же, поменять тип ячейки?
За ранее спасибо


 
Кулюкин Олег ©   (2003-01-15 15:32) [1]

У ячейки есть свойство Border, дальше не помню, экспериментировать надо.
Подробности есть в хелпе по VBA


 
Blondin ©   (2003-01-15 15:40) [2]

V:Variant;
//
V.Cells[1,1].BorderAround(1);
V.Cells[1,1].NumberFormat:={константа формата}


 
TTCustomDelphiMaster ©   (2003-01-15 17:34) [3]

procedure SetEdge(Range: OleVariant);
begin
Range.Borders[xlEdgeLeft].LineStyle := xlContinuous;
Range.Borders[xlEdgeLeft].Weight := xlMedium;
Range.Borders[xlEdgeTop].LineStyle := xlContinuous;
Range.Borders[xlEdgeTop].Weight := xlMedium;
Range.Borders[xlEdgeBottom].LineStyle := xlContinuous;
Range.Borders[xlEdgeBottom].Weight := xlMedium;
Range.Borders[xlEdgeRight].LineStyle := xlContinuous;
Range.Borders[xlEdgeRight].Weight := xlMedium;
if Range.Columns.Count > 1 then
begin
Range.Borders[xlInsideVertical].LineStyle := xlContinuous;
Range.Borders[xlInsideVertical].Weight := xlThin;
end;
if Range.Rows.Count > 1 then
begin
Range.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
Range.Borders[xlInsideHorizontal].Weight := xlThin;
end;
end;



Range.NumberFormat := "#"+ThousandSeparator+"##0"+DecimalSeparator+"00";
Range.NumberFormat := "@";


 
gsu ©   (2003-01-15 17:49) [4]

>> TTCustomDelphiMaster ©
спец по Excel+D - похоже починил NumberFormat ? (-:|~


 
TTCustomDelphiMaster ©   (2003-01-15 18:06) [5]


> gsu © (15.01.03 17:49)


Осталось только с датой разобраться.
Кстати формат даты для русского Excel
Range.NumberFormat := "ДД"+DateSeparator+"ММ"+DateSeparator+"ГГГГ";


 
gsu ©   (2003-01-15 18:10) [6]

>> TTCustomDelphiMaster ©
А где нашел ?


 
TTCustomDelphiMaster ©   (2003-01-15 18:16) [7]

Что нашел?


 
gsu ©   (2003-01-15 18:19) [8]

инфу по NumberFormat


 
Ketmar ©   (2003-01-15 18:29) [9]

>gsu © (15.01.03 18:19)
хэлп читать надо. и мозги при этом включать. если лень - посмотреть непосредственно в excel.

Satanas Nobiscum! 15-Jan-XXXVIII A.S.


 
TTCustomDelphiMaster ©   (2003-01-15 18:39) [10]

А мне "наколочку" здесь дали.


 
gsu ©   (2003-01-15 19:16) [11]

>> Ketmar ©
на почитай, раз такой умный
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1042478097&n=0


 
TTCustomDelphiMaster ©   (2003-01-15 19:22) [12]

И еще вопрос по этой проблеме
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1042565963&n=0


 
Ketmar ©   (2003-01-15 20:00) [13]

>gsu © (15.01.03 19:16)
такой умный, почитал. у меня на решение аналогичной проблемы ушло минут 10. из них 5 я матюкался, поняв, в чем дело. вопрос: нафига разводить немеряный трёп, если можно просто ПОДУМАТЬ?

Satanas Nobiscum! 15-Jan-XXXVIII A.S.


 
gsu ©   (2003-01-15 20:09) [14]

>> Ketmar ©
ты, наверное, очень гордый и высокомерный, но мне твои нападки ||


 
Ketmar ©   (2003-01-15 20:11) [15]

>gsu © (15.01.03 20:09)
нападать? на вас? благородный дон не страдает мегаломанией?

Satanas Nobiscum! 15-Jan-XXXVIII A.S.


 
gsu ©   (2003-01-15 20:18) [16]

ха-ха


 
TTCustomDelphiMaster ©   (2003-01-15 20:22) [17]


> Ketmar © (15.01.03 20:00)
> >gsu © (15.01.03 19:16)
> такой умный, почитал. у меня на решение аналогичной проблемы
> ушло минут 10. из них 5 я матюкался

Не все же такие умные :)


 
Ketmar ©   (2003-01-15 20:29) [18]

>TTCustomDelphiMaster © (15.01.03 20:22)
или догадливые. а все потому, что лень думать, легче в форуме спросить %-(

Satanas Nobiscum! 15-Jan-XXXVIII A.S.


 
TTCustomDelphiMaster ©   (2003-01-15 20:32) [19]

Эт точно


 
pave1 ©   (2003-01-16 08:59) [20]

Я как понял Дельфи использует функции VBA.
Хотелось бы узнать более расширено про типы ячейки, .т.е. я как понял символ "@" означает Текстовый формат, а как обозначаются другие форматы Числовой, Дата и т.д.?








 
pave1 ©   (2003-01-16 13:09) [21]

У меня опрос по поводу "
Range.NumberFormat := "#"+ThousandSeparator+"##0"+DecimalSeparator+"00";

У меня почему-то не полная разрядность, т.е. если ввожу сумму до миллиона то нормально, отображается вот так 234 456 , но больше миллиона эта ячейка отображает сумму вот так 1234 456.
Если сможите то объясните почему так происходит?


 
Ketmar ©   (2003-01-16 13:51) [22]

а что тут объяснять? мне щаз лень смотреть, на "на вскидку" - как написано, так и делаем...

Satanas Nobiscum! 16-Jan-XXXVIII A.S.


 
TTCustomDelphiMaster ©   (2003-01-16 15:42) [23]


> pave1 © (16.01.03 13:09)
> У меня опрос по поводу "
> Range.NumberFormat := "#"+ThousandSeparator+"##0"+DecimalSeparator+"00";


Range.NumberFormat := "###"+ThousandSeparator+"###"+ThousandSeparator+"##0"+DecimalSeparator+"00";


 
pave1 ©   (2003-01-19 00:41) [24]

Спасибо за помощь, вроде потихоньку разаобрался. Осталось только одно, хотел в Книге Excelя ввести формулу, формулу в ячейку ввожу, но после ввода она не работает, пишет ИМЯ, если же нажмешь F2 и нажмешь Enter то формула работает. Ни кто не сталкивался с формулами в Excel? Может кто знает как ввести формулу в Excel.


 
Романов Р.В. ©   (2003-01-19 10:41) [25]

Ты хоть бы написал как делаешь.


 
pave1 ©   (2003-01-19 12:09) [26]

to Романов Р.В.

Это отрывок из программы

try
ExcelApplication:=CreateOleObject ("Excel.Application");
ExcelApplication.visible:=false;
ExcelApplication.Workbooks.Add(-4167);
ExcelApplication.Workbooks[1].WorkSheets[1].Name:="Отчёт";
ExcelApplication.Columns[1].WrapText := True;
ExcelApplication.Columns[1].ColumnWidth := 40;
ExcelApplication.Columns[2].ColumnWidth:=18;
ExcelApplication.Columns[3].ColumnWidth:=12;
ExcelApplication.Columns[4].ColumnWidth:=12;
ExcelApplication.Columns[5].ColumnWidth:=12;
// for i:=1 to Table1.RecordCount do
while not Table1.Eof do
begin
ExcelApplication.Cells[Table1.RecNo,1].value := Table1.FieldByName("g2").AsString;
ExcelApplication.Cells[Table1.RecNo,1].BorderAround(1,2);

ExcelApplication.Cells[Table1.RecNo,2].NumberFormat := "0";
ExcelApplication.Cells[Table1.RecNo,2].value := Table1.FieldByName("g3").AsString;
ExcelApplication.Cells[Table1.RecNo,2].BorderAround(1,2);

ExcelApplication.Cells[Table1.RecNo,3].NumberFormat := "# ##0"+DecimalSeparator+"00;[Красный]-# ##0"+DecimalSeparator+"00";
ExcelApplication.Cells[Table1.RecNo,3].value := Table1.FieldByName("g4").AsInteger/1000;
ExcelApplication.Cells[Table1.RecNo,3].BorderAround(1,2);

ExcelApplication.Cells[Table1.RecNo,4].NumberFormat := "# ##0"+DecimalSeparator+"00;[Красный]-# ##0"+DecimalSeparator+"00";
ExcelApplication.Cells[Table1.RecNo,4].value := Table1.FieldByName("g5a").AsInteger/1000;
ExcelApplication.Cells[Table1.RecNo,4].BorderAround(1,2);

ExcelApplication.Cells[Table1.RecNo,5].NumberFormat := "# ##0"+DecimalSeparator+"00;[Красный]-# ##0"+DecimalSeparator+"00";
ExcelApplication.Cells[Table1.RecNo,5].value := "=C"+IntToStr(Table1.RecNo)+"/6";
ExcelApplication.Cells[Table1.RecNo,5].BorderAround(1,2);
Table1.Next;
end
finally

//ExcelApplication.Cells[Table1.RecordCount+1,3].NumberFormat := "# ##0"+DecimalSeparator+"00;[Красный]-# ##0"+DecimalSeparator+"00";
ExcelApplication.Cells[Table1.RecordCount+1,3].Formula := "=СУММ(C1:C10)";
ExcelApplication.Cells[Table1.RecordCount+1,3].BorderAround(1,2);


ExcelApplication.visible:=true;
ExcelApplication.Quit;


в этой строке я указал формулу статически для проверки ExcelApplication.Cells[Table1.RecordCount+1,3].Formula := "=СУММ(C1:C10)";
в программе у меня формула будет формироватся динамически. Вот эта формула у меня в Excelе выводит в ячейке #ИМЯ? , хотя если потом нажать клавишу F2 то она показывает диапазон выбранных значений, а если еще подтвердить клавишей Enter то формула вычисляется. Может нужно в программе как-нибудь формулу обновлять или вычислять?


 
Романов Р.В. ©   (2003-01-19 12:21) [27]

ExcelApplication.Cells[Table1.RecordCount+1,3].Formula := "=SUM(C1:C10)";


 
pave1 ©   (2003-01-19 13:03) [28]

to Романов Р.В.
Спасибо.
Я не можешь еще сказать почему когда в формате ячейки задаю цвет ячейки английскими словами то вываливается ошибка "Нельзя установить свойство NumberFormat класса Range" приходится писать русскими словами

ExcelApplication.Cells[Table1.RecNo,5].NumberFormat := "# ##0"+DecimalSeparator+"00;[Красный]-# ##0"+DecimalSeparator+"00";

хотя в VBA Excel пишется английскими словами, т.е. RED.


 
Романов Р.В. ©   (2003-01-19 13:08) [29]

Потому что нет такого формата в Excel. А из VBA он как то конвертит. Вобщем там полный бардак.


 
Ketmar ©   (2003-01-19 13:21) [30]

>Романов Р.В. © (19.01.03 13:08)
вообще, насколько я заметил, в OLE-криках к Excel все задается на английском. конверсия типа "СУММ" ==> "SUM" происходит где-то на пути от вывода к движку VBA. в принципе - удобно, но ни разу не очевидно %-(

Satanas Nobiscum! 19-Jan-XXXVIII A.S.



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

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.014 c
4-15994
melifaro
2002-12-20 08:40
2003.02.06
Как открыть окно


4-16008
Cobalt
2002-12-22 01:06
2003.02.06
PSAPI.pas


1-15609
harismatik
2003-01-29 11:16
2003.02.06
Как узнать sendera?


1-15617
Lexer
2003-01-29 11:16
2003.02.06
Перевод Dos-кодировки в Win


14-15911
msoftware
2003-01-18 05:27
2003.02.06
HELP ME! ActiveX Вертикального меню...