Форум: "Базы";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
ВнизКак сделать цикл по колонкам в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c