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

Вниз

Поставить границы ячейки Excel через Delphi!!!   Найти похожие ветки 

 
grol ©   (2005-05-26 02:13) [0]

Здравствуйте мастера Delphi!!! Помогите пожалуйста!!! Вот код сохранения информации из ADOQuery в Excel:

procedure TForm1.Button1Click(Sender: TObject);
var
 Excel, Workbook, Worksheet: OleVariant;
 CurrentRowIndex, CurrentColIndex: integer;
begin
 CurrentRowIndex := 1;
 Excel := CreateOleObject("Excel.Application");
 try
   Workbook := Excel.Workbooks.Add;
   Worksheet := Workbook.Worksheets.Add;
   with ADOQuery do
   try
     Open;
     while not Eof do
     begin
       for CurrentColIndex := 0 to FieldsCount - 1 do
         Worksheet.Cells(CurrentRowIndex, CurrentColIndex + 1) := Fields[CurrentColIndex].AsString;
       Next;
       Inc(CurrentRowIndex);
     end;
   finally
     begin      
    //здесь нужно написать код выделение ячейки и задания ей границ!!!
    ........
    //например:
     Worksheet.Range["a1","a1"].Font.Color := clBlue;
    //поменять цвет шрифта в ячейке, а мне нужно границы поставить на ячейку
     end;
   end;
 finally
   Excel.Visible := True;
   Excel := Unassigned;
 end;
end;

Это макрос в Excel: выделение ячейки и задания ей границ!!!

Sub Макрос1()
" Макрос1 Макрос
" Макрос записан 26.05.2005 (admin)
   Range("D8").Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
   With Selection.Borders(xlEdgeLeft)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeTop)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeBottom)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
   With Selection.Borders(xlEdgeRight)
       .LineStyle = xlContinuous
       .Weight = xlMedium
       .ColorIndex = xlAutomatic
   End With
End Sub

Помогите пожалуйста опытные программситы, буду очень вам благодарен!!! Спасибо

заранее!!!


 
yk ©   (2005-05-26 07:36) [1]

Во-первых, рекомендую сохранять выделение в переменную типа Variant:

var
Range, Cell1, Cell2: Variant;
......

begin

....
Cell1 := WorkBook.ActiveSheet.Cells[beginRow-3,BeginCol-1];
Cell2 := WorkBook.ActiveSheet.Cells[beginRow-1,BeginCol];
Range := WorkBook.ActiveSheet.Range[Cell1, Cell2];
 Range.Select;

....

end;

Во-вторых ,
рекомендую найти статью "По волнам интеграции и почитать её"

В-третьих,
рамку клетки (или диапазона) делаешь так:
....
Range.Select;
 Range.Borders.LineStyle:=xlContinuous;
 Range.Borders.Weight := xlThick; //или xlMedium
...
В-четвёртых, больше эксперементируй с макросами в Excel - там куча инфы.

В-пятых, код был приведён для выделения всех сторон клеток.
Может кто-нибудь знает, как выделить, например только боковые границы? А то у меня не получилось :(


 
YurikGL ©   (2005-05-26 07:38) [2]


>    Range("D8").Select
>    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
>    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
>    With Selection.Borders(xlEdgeLeft)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeTop)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeBottom)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
>    With Selection.Borders(xlEdgeRight)
>        .LineStyle = xlContinuous
>        .Weight = xlMedium
>        .ColorIndex = xlAutomatic
>    End With
> End Sub


подозреваю, что будет что-то типа
Excel.activesheet.Range("D8").Select
Excel.selection.borders.item(xlEdgeRight).linestyle:=xlContinuous
Excel.selection.borders.item(xlEdgeRight).Weight = xlMedium
Excel.selection.borders.item(xlEdgeRight).ColorIndex = xlAutomatic

Дальше по образу и подобию


 
YurikGL ©   (2005-05-26 07:40) [3]


> Может кто-нибудь знает, как выделить, например только боковые
> границы? А то у меня не получилось :(

Катя, а макрос писать не пробовала?
xlEdgeLeft - левая граница выбранной области,
xlEdgeBottom - нижняя граница выбранной области....


 
yk ©   (2005-05-26 08:12) [4]

Ок

Не додумалась до
> item

Но это у мнея пока умозрительный интерес

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


 
Руслан   (2005-05-26 11:01) [5]

Обрисовка только указанных границ:
Sheet.Cells.Item[i+2, 1].Borders.LineStyle:=1;- тип линии
      Sheet.Cells.Item[i+2, 1].Borders.Weight:= 3; - толщина
      Sheet.Cells.Item[i+2, 1].Borders[xlDiagonalDown].LineStyle:=xlNone; - снизу нет
      Sheet.Cells.Item[i+2, 1].Borders[xlDiagonalUp].LineStyle:=xlNone; - по диагонали нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeLeft].LineStyle:=xlNone; - слева нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeRight].LineStyle:=xlNone; - справа нет
      Sheet.Cells.Item[i+2, 1].Borders[xlEdgeTop].LineStyle:=xlNone; - сверху нет
где i+2 - номер ячейки, если есть то этой строки не надо

Обрисовка диапазона ячеек:
// обрисовка диапазона ячеек
  Excel.WorkBooks[1].WorkSheets[1].Range["A3:" + chr(ord("C")+n) + IntToStr(i)].Borders.LineStyle := 1;
  Excel.WorkBooks[1].WorkSheets[1].Range["A3:" + chr(ord("C")+n) + IntToStr(i)].Borders.Weight := 2;
  Excel.WorkBooks[1].WorkSheets[1].Range["A3:" + chr(ord("C")+n) + IntToStr(i)].Borders.ColorIndex := 1;



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

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

Наверх




Память: 0.46 MB
Время: 0.039 c
3-1117179499
Гость2
2005-05-27 11:38
2005.07.11
Как просуммровать значения по полю таблицы?


1-1118563903
acsoft
2005-06-12 12:11
2005.07.11
Возможно ли считать свой собственный код?


14-1118605421
Просто Джо
2005-06-12 23:43
2005.07.11
Обработка file upload в PHP


4-1116082031
TForm1
2005-05-14 18:47
2005.07.11
Запуск внутри...


6-1112613606
BioHaz
2005-04-04 15:20
2005.07.11
Печать из TWebBrowser





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский