loExcel = NEWOBJECT("VFPxWorkbookXLSX", "VFPxWorkbookXLSX.vcx") lnWB = loExcel.CreateWorkbook(FORCEEXT(toFileNames.List[1], "xlsx")) IF lnWB > 0 *-* Create the cell format styles lnStyleHdr = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleHdr, "Arial", 10, True, False, RGB(255,255,255)) loExcel.AddStyleFill(lnWB, lnStyleHdr, RGB(51,102,255), RGB(51,102,255)) lnStyleTxt = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleTxt, "Arial", 10) lnStyleMId = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleMId, "Arial", 10) loExcel.AddStyleNumericFormat(lnWB, lnStyleMId, CELL_FORMAT_TEXT) lnStyleAmt = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleAmt, "Arial", 10) loExcel.AddStyleNumericFormat(lnWB, lnStyleAmt, CELL_FORMAT_CURRENCY_RED) lnStyleDte = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleDte, "Arial", 10) loExcel.AddStyleNumericFormat(lnWB, lnStyleDte, CELL_FORMAT_DATE_DMMMYY) lnStyleTot = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleTot, "Arial", 10, True) loExcel.AddStyleFill(lnWB, lnStyleTot, RGB(221,235,247), RGB(221,235,247)) loExcel.AddStyleNumericFormat(lnWB, lnStyleTot, CELL_FORMAT_CURRENCY_RED) lnStyleBot = loExcel.CreateFormatStyle(lnWB) loExcel.AddStyleFont(lnWB, lnStyleBot, "Arial", 10, True) loExcel.AddStyleFill(lnWB, lnStyleBot, RGB(221,235,247), RGB(221,235,247)) loExcel.AddStyleNumericFormat(lnWB, lnStyleBot, CELL_FORMAT_CURRENCY_RED) loExcel.AddStyleBorders(lnWB, lnStyleBot, BORDER_TOP, BORDER_STYLE_MEDIUM, RGB(16,100,200)) *-* Add sheet lnSh = loExcel.AddSheet(lnWB, "Report") *-* Write the header row cells lnXLSXRow = 1 lnColCnt = .GetNumberColumns() FOR lnCol=0 TO lnColCnt-1 loExcel.SetCellValue(lnWB, lnSh, lnXLSXRow, lnCol+1, .GetCellText(lnCol, -1)) ENDFOR *-* Assign header row cell formatting loExcel.SetCellStyleRange(lnWB, lnSh, 1, 1, lnXLSXRow, lnColCnt, lnStyleHdr) *-* Write the cell values FOR lnRow=0 TO .GetNumberRows()-2 lnXLSXRow = lnXLSXRow + 1 loExcel.SetCellValue(lnWB, lnSh, lnXLSXRow, 1, .GetCellText(0, lnRow)) loExcel.SetCellValue(lnWB, lnSh, lnXLSXRow, 2, .GetCellText(1, lnRow)) loExcel.SetCellValue(lnWB, lnSh, lnXLSXRow, 3, .GetCellValue(2, lnRow)) loExcel.SetCellValue(lnWB, lnSh, lnXLSXRow, 4, .GetCellValue(3, lnRow)) ENDFOR *-* Assign cell formatting loExcel.SetCellStyleRange(lnWB, lnSh, 2, 1, lnXLSXRow, 1, lnStyleMId) loExcel.SetCellStyleRange(lnWB, lnSh, 2, 2, lnXLSXRow, 2, lnStyleTxt) loExcel.SetCellStyleRange(lnWB, lnSh, 2, 3, lnXLSXRow, 4, lnStyleAmt) lnXLSXRow = lnXLSXRow + 1 loExcel.SetCellFormula(lnWB, lnSh, lnXLSXRow, 3, "=SUM(C2:C" + TRANSFORM(lnXLSXRow-1) + ")") loExcel.SetCellFormula(lnWB, lnSh, lnXLSXRow, 4, "=SUM(D2:D" + TRANSFORM(lnXLSXRow-1) + ")") loExcel.SetCellStyleRange(lnWB, lnSh, lnXLSXRow, 1, lnXLSXRow, 4, lnStyleBot) *-* Set column widths loExcel.SetColumnWidth(lnWB, lnSh, 1, 10) loExcel.SetColumnWidth(lnWB, lnSh, 2, 45) loExcel.SetColumnWidth(lnWB, lnSh, 3, 20) loExcel.SetColumnWidth(lnWB, lnSh, 4, 20) *-* Freeze top row and save workbook loExcel.FreezePanes(lnWB, lnSh, 1, 0) loExcel.SaveWorkbook(lnWB) ENDIF