![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать цикл по колонкам в Excel?
gsvserg © (2003-08-07 18:49:00)
Нужно в зависимости от длины поля в таблице, которая копируется в Excel, менять column.width в Excel
Что-то типа
for i:=0 to 25 do
if a>b then
worksheet.columns[i].width:=...
gsvserg (2003-08-08 15:35:00) [1]
Range1.AutoFormat(1,True,True,true,false,True,True);
thanxxxx
Alex Bredin (2003-08-08 14:53:00) [2]
понял ты неправильно.
Цитата из экселевского макроса:
Selection.AutoFormat Format:=xlRangeAutoFormatSimple, Number:=True, Font _
:=True, Alignment:=True, Border:=True, Pattern:=True, Width:=True
думаю все ясно и так
gsvserg (2003-08-08 11:43:00) [3]
Alex Bredin © (08.08.03 10:44)
Спасибо, попробовал твой метод - работает.
Только в Excel появляются линии под первой и предпоследней строками. Я так понял что это из-за xlFormat=1.
Всем спасибо.
Alex Bredin (2003-08-08 10:50:00) [4]
а вообще над Range можно извращаться как хочешь, только перед этим включи запись макроса, а потом перенеси его текст в Delphi
Alex Bredin (2003-08-08 10:44:00) [5]
я тож пытался так сделать, но потом сообразил, что 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)-посмотри
Dred2k (2003-08-07 20:16:00) [6]Вот тебе кусок кода.
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 выставляется соразмерно ширине колонок грида. Коэффициент соразмерности можно при желании сформулировать и в общем виде (я поленился, наверное ;)).
Кроме ширины выставляются свойства первой строки на листе (заголовок). Лист - текущий.
gsvserg (2003-08-07 19:23:00) [7]
Таблица AdoQuery, в ней несколько полей. Все поля строковые. Перекидываю ее в Excel. Вычисляю максимальную длину строки в каждом поле, после нужно установить ширину колонок в Excel, чтобы было видно всю строку.
malamba (2003-08-07 19:10:00) [8]
Что за таблица? И что за длина поля?