EasyExcel
Добавлено: 12 Июль 2005, 4:59
Вот такое имеет место быть:
На компах дод w98 этот код скомпиленный под c5.5 работает, а если скомпилять под 6.1 - пишет: Системе не хватает ресурсов. На такойже машине но под w2000 проблем нет. Офисс на машинах одинаковый
Код: Выделить всё
IF exl.Init(TRUE, FALSE, TRUE) = 0 THEN
exl.SheetsInNewWorkbook(1)
exl.AddWorkbook
pCurMaster = ''
pCurTime = ''
pCurRec = 0
LOOP i# = 1 TO RECORDS(QAllReport)
GET(QAllReport, i#); IF ERRORCODE() THEN BREAK END
IF CLIP(pCurMaster) <> CLIP(QAllReport.FIOMaster) THEN
IF i# <> 1 THEN
! Рисование таблицы у предыдущих данных, простановка кол-ва заявок
Do DrawPrevTable
exl.SelectRange(1,1,1,1)
exl.AddSheet(,xlLast)
END
! настройки страницы
exl.SetPageSetup(XlPageOrientation:Landscape, XlPaperSize:A4)
exl.SetPageAlign(1,1,1,1,false,false,true)
! Основной шрифт в отчете
exl.SelectRange(,1,,14); exl.SetFont('Courier New',10,-1, FONT:Regular)
! Выставляем ширину столбцов
exl.SelectRange(,1); exl.ColumnWidth(30)
exl.SelectRange(,2); exl.ColumnWidth(84)
exl.SelectRange(,4); exl.ColumnWidth(16)
Loc:CurRow = 1
!--> Вывод шапки ---------------------------------------------------------<
exl.Write(Loc:CurRow, 2, 'Задание на подключение'); exl.SetFont('Courier New',11,-1,FONT:Bold + FONT:Underline)
exl.SetHorizAlign(CellAlign:Center)
Loc:CurRow += 2
exl.Write(Loc:CurRow, 1, 'Мастер: ' & CLIP(QAllReport.FIOMaster))
Loc:CurRow += 1
exl.Write(Loc:CurRow, 1, 'Дата: ' & FORMAT(QAllReport.DateRep, @D6.b))
exl.SelectRange(Loc:CurRow-1, 1, Loc:CurRow, 1); exl.SetFont('Courier New',11,-1,FONT:Bold)
Loc:CurRow += 1
pCurMaster = CLIP(QAllReport.FIOMaster)
Do MakeTabHeader
pCurTime = CLIP(QAllReport.TimeName)
END
IF CLIP(pCurTime) <> CLIP(QAllReport.TimeName) THEN
! Рисование таблицы у предыдущих данных, простановка кол-ва заявок
Do DrawPrevTable
! Рисование шапки для следующего времени
Do MakeTabHeader
pCurTime = clip(QAllReport.TimeName)
END
! Вывод самих данных
exl.Write(Loc:CurRow, 1, CLIP(QAllReport.NameGoods)); exl.SetHorizAlign(CellAlign:Left)
exl.Write(Loc:CurRow, 2, CLIP(QAllReport.CustAderss)); exl.SetHorizAlign(CellAlign:Left)
exl.Write(Loc:CurRow, 3, CLIP(QAllReport.ThisRepeatConect)); exl.SetHorizAlign(CellAlign:Center)
exl.Write(Loc:CurRow, 4, CLIP(QAllReport.CustFIO)); exl.SetHorizAlign(CellAlign:Left)
exl.SelectRange(Loc:CurRow, 1,,4); exl.SetFont('Courier New',10,-1,FONT:Bold)
exl.SetVertAlign(CellAlign:Center); exl.SetTextWrap; exl.AutoFit(XlFit:Vert)
Loc:CurRow += 1
pCurRec += 1
END ! EOF LOOP i# = 1 TO RECORDS(QAllReport)
! У последних данных рисуем таблицу и все дела
IF RECORDS(QAllReport) <> 0 THEN
Do DrawPrevTable
exl.SelectRange(1,1,1,1)
exl.SelectSheet(1)
END
exl.Kill
ELSE
MESSAGE('Не могу инициализировать приложение Excell!','Ошибка', ICON:Exclamation)
END