>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 >Very handy examples - thanks!