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

Вниз

Как сделать цикл по колонкам в Excel?   Найти похожие ветки 

 
gsvserg ©   (2003-08-07 18:49) [0]

Нужно в зависимости от длины поля в таблице, которая копируется в Excel, менять column.width в Excel
Что-то типа
for i:=0 to 25 do
if a>b then
worksheet.columns[i].width:=...


 
malamba   (2003-08-07 19:10) [1]

Что за таблица? И что за длина поля?


 
gsvserg ©   (2003-08-07 19:23) [2]

Таблица AdoQuery, в ней несколько полей. Все поля строковые. Перекидываю ее в Excel. Вычисляю максимальную длину строки в каждом поле, после нужно установить ширину колонок в Excel, чтобы было видно всю строку.


 
Dred2k ©   (2003-08-07 20:16) [3]

Вот тебе кусок кода.

for j := Low(tmpColNum) to High(tmpColNum) do begin
App.Columns[j + 1].ColumnWidth := FDBGrid.Columns[tmpColNum[j]].Width / 6;
App.Cells[1, j + 1].Value := FDBGrid.Columns[tmpColNum[j]].Title.Caption;
App.Cells[1, j + 1].HorizontalAlignment := DefExcelAlignment[FDBGrid.Columns[tmpColNum[j]].Title.Alignment];
App.Cells[1, j + 1].Font.Bold := True;
App.Cells[1, j + 1].Interior.Color := RGB(192, 192, 192);
App.Cells[1, j + 1].Borders.Color := RGB(0, 0, 0);
( я поленился, наверное ;)
Вот тебе кусок кода.

for j := Low(tmpColNum) to High(tmpColNum) do begin
App.Columns[j + 1].ColumnWidth := FDBGrid.Columns[tmpColNum[j]].Width / 6;
App.Cells[1, j + 1].Value := FDBGrid.Columns[tmpColNum[j]].Title.Caption;
App.Cells[1, j + 1].HorizontalAlignment := DefExcelAlignment[FDBGrid.Columns[tmpColNum[j]].Title.Alignment];
App.Cells[1, j + 1].Font.Bold := True;
App.Cells[1, j + 1].Interior.Color := RGB(192, 192, 192);
App.Cells[1, j + 1].Borders.Color := RGB(0, 0, 0);
end;


tmpColNum - массив, содержащий номера выводимых мной колоной DBGrid-а. Ширина колонок в Excel выставляется соразмерно ширине колонок грида. Коэффициент соразмерности можно при желании сформулировать и в общем виде (я поленился, наверное ;)).
Кроме ширины выставляются свойства первой строки на листе (заголовок). Лист - текущий.


 
Alex Bredin ©   (2003-08-08 10:44) [4]

я тож пытался так сделать, но потом сообразил, что Excel сделает это лучше))

//пробуем применить автоформат...
Range1:=Sheet.Range[Sheet.Cells[StartR, StartC],Sheet.Cells[StartR + Rows, StartC + Cols - 1]];
Range1.AutoFormat(XLFormat,True,True,True,True,True,True);

XLFormat-цел.число(я беру 1)-посмотри


 
Alex Bredin ©   (2003-08-08 10:50) [5]

а вообще над Range можно извращаться как хочешь, только перед этим включи запись макроса, а потом перенеси его текст в Delphi


 
gsvserg ©   (2003-08-08 11:43) [6]

Alex Bredin © (08.08.03 10:44)
Спасибо, попробовал твой метод - работает.
Только в Excel появляются линии под первой и предпоследней строками. Я так понял что это из-за xlFormat=1.
Всем спасибо.


 
Alex Bredin ©   (2003-08-08 14:53) [7]

понял ты неправильно.
Цитата из экселевского макроса:

Selection.AutoFormat Format:=xlRangeAutoFormatSimple, Number:=True, Font _
:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True

думаю все ясно и так


 
gsvserg ©   (2003-08-08 15:35) [8]


Range1.AutoFormat(1,True,True,true,false,True,True);
thanxxxx



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
1-1372
Эдуард
2003-08-16 11:51
2003.09.01
нужно выдрать иконку из DLL по её имени (не по номеру!)


4-1725
AndrewPo
2003-07-03 08:19
2003.09.01
Как свернуть форму с BorderStyle=None?


1-1461
Nucl
2003-08-18 16:43
2003.09.01
Вывод текста поверх всего


1-1414
Aleksandr
2003-08-15 14:41
2003.09.01
Как освободить спящий поток?


1-1415
Zilog
2003-08-15 15:32
2003.09.01
как подлинковать сишную библиотек??