Привет Всем!
Подскажите, кто использует библиотеку Олега Руденко dexcel
Как закрасить цветом ячейку при экспорте очереди (до сих пор обходился без этого, сейчас читаю комментарии в dExcel.clw и не очень понимаю), например:
определил желаемый формат в List Box окна, наполнил нужными данными очередь Queue:XLS
XLS.SetTblFormat(?Browse:1, QuickWindow)
! XLS.Write:Header()
XLS.Write:Table(Queue:XLS)
далее формируется таблица, но как сделать так, чтобы при выполнении XLS.Write:Table(Queue:XLS) применить в опеределенной строке (или ячейке) выделение цветом?
dexcel - выделение цветом
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- SergioRaguzini
- Старожил
- Сообщения: 260
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
- Благодарил (а): 20 раз
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5399
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
dexcel - выделение цветом
Привет. Я вывожу построчно, там можно назначать стиль для отдельных ячеек по условию.
C6/C12, ШВС, tps/btrieve.
- SergioRaguzini
- Старожил
- Сообщения: 260
- Зарегистрирован: 08 Декабрь 2009, 19:16
- Откуда: Краснодарский край
- Благодарил (а): 20 раз
dexcel - выделение цветом
а заголовок таблицы выводишь, в этом случае, с использованием XLS.SetTblFormat или тоже вручную?finsoftrz писал(а): 28 Август 2025, 13:13 Привет. Я вывожу построчно, там можно назначать стиль для отдельных ячеек по условию.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5399
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 13 раз
- Поблагодарили: 68 раз
dexcel - выделение цветом
Я напрямую dexcel не использую. Либо через шаблон (вывод list как есть на экране), либо через класс надстройку, позволяющий дизайнить формы непосредственно в Excel.
Если через шаблон, то примерно так:
Рутинку с ручной установкой стилей копипастну, как есть. Если выделение цветом не требуется, то без этого все проще и автоматически. Это так называемый режим ручного форматирования строки, используется редко.
Если через шаблон, то примерно так:
Код: Выделить всё
if XLS.CreateFile(clip(Loc:DExcelFileNameL)) <> 0
...
exit
.
lor:font = XLS.AddFont('Arial Cyr',12,faBold)
lor:xf=XLS.AddXF(lor:font)
!дополнительные стили
Loc:XF1=XLS.AddXF(,,,,xfblBoxNormal) !по левому краю
Loc:XF2=XLS.AddXF(,,,xfhaRight+xfvaBottom,xfblBoxNormal) !по правому краю
Loc:XFRed1=XLS.AddXF(,,,,xfblBoxNormal,flcRed+ptcAuto+ptsFull) !по левому краю
Loc:XFRed2=XLS.AddXF(,,,xfhaRight+xfvaBottom,xfblBoxNormal,flcRed+ptcAuto+ptsFull) !по правому краю
Loc:XFYel1=XLS.AddXF(,,,,xfblBoxNormal,flcYellow+ptcAuto+ptsFull) !по левому краю
Loc:XFYel2=XLS.AddXF(,,,xfhaRight+xfvaBottom,xfblBoxNormal,flcYellow+ptcAuto+ptsFull) !по правому краю
XLS.Write:STRING(QuickWindow{PROP:TEXT},1,1,lor:xf) !вывод заголовков
XLS.Write:STRING('Дата: ' & format(today(),@d6),1,2)
XLS.SetPageSetup(,,-1,,1,999)
XLS.SetTblFormat(?Browse:1)
XLS.SetMargin(,,,2)
XLS.SetFooter('&Л &Д &В ' & clip(FsAccess:ActiveUserName) & '&П Стр. &С')
!далее открываем окно прогресс и получаем все записи из постраничного browse
loop !это условно, реально цикл цепляется за accept
... !получаем очередную строку
do excelRow_r
.
if Loc:DExcelHandExec=0 !автоформирование
if Loc:DExcelRun=1
XLS.CloseFile(True) !закрыть таблицу и открыть в Excel
else
XLS.CloseFile(False)
FsMessagePr('Отчет сохранен в файле ' & clip(Loc:DExcelFileNameL) & ' !')
end
else !ручной запуск
XLS.CloseFile(False)
end
Код: Выделить всё
excelRow_r routine !вывод ячеек в эксель с подсветкой
XLS.Write:STRING(Loc:Flag,1,XLS.RowCurrent,Loc:XF1)
XLS.Write:STRING(format(DZakH:Date,@d6),2,XLS.RowCurrent,Loc:XF2)
XLS.Write:STRING(format(DZakH:DateEnd,@d6),3,XLS.RowCurrent,Loc:XF2)
XLS.Write:NUMBER(Loc:DaysEnd,4,XLS.RowCurrent,Loc:XF2)
XLS.Write:STRING(Loc:SrocBefore,5,XLS.RowCurrent,Loc:XF1)
Loc:XF=Loc:XF1
if (today()-DZakH:DateIns)>4 and Loc:Date1=0 !после регистрации прошло более 4 дней и техническая обработка не сделана
Loc:XF=Loc:XFYel1
.
if (DZakH:DateEnd-DZakH:DateIns)<Loc:DaysPlan !дизайнер заложил срок меньше, чем дней на производство по плану
Loc:XF=Loc:XFRed1
.
XLS.Write:STRING(DZakH:Num,6,XLS.RowCurrent,Loc:XF)
XLS.Write:NUMBER(Loc:Sum,7,XLS.RowCurrent,Loc:XF2)
XLS.Write:NUMBER(DZakH:DaysBuild,8,XLS.RowCurrent,Loc:XF2)
if Loc:DaysIns>Loc:DaysZakReg
Loc:XF=Loc:XFRed2
else
Loc:XF=Loc:XF2
.
XLS.Write:STRING(format(DZakH:DateIns,@d6),9,XLS.RowCurrent,Loc:XF)
XLS.Write:NUMBER(Loc:DaysZakReg,10,XLS.RowCurrent,Loc:XF)
if Loc:DaysDif1>Loc:DaysPlan1
Loc:XF=Loc:XFRed2
else
Loc:XF=Loc:XF2
.
XLS.Write:STRING(format(Loc:DateStart1,@d6),11,XLS.RowCurrent,Loc:XF)
XLS.Write:STRING(format(Loc:Date1,@d6),12,XLS.RowCurrent,Loc:XF)
XLS.Write:NUMBER(Loc:DaysPlan1,13,XLS.RowCurrent,Loc:XF)
if Loc:DaysDif2>Loc:DaysPlan2
Loc:XF=Loc:XFRed2
else
Loc:XF=Loc:XF2
.
XLS.Write:STRING(format(Loc:Date2,@d6),14,XLS.RowCurrent,Loc:XF)
XLS.Write:NUMBER(Loc:DaysPlan2,15,XLS.RowCurrent,Loc:XF)
XLS.Write:NUMBER(Loc:DaysProizv,16,XLS.RowCurrent,Loc:XF2)
XLS.Write:STRING(Loc:ReportTexnol,17,XLS.RowCurrent,Loc:XF1)
XLS.Write:STRING(Loc:ReportManager,18,XLS.RowCurrent,Loc:XF1)
XLS.RowCurrent+=1
C6/C12, ШВС, tps/btrieve.