{"id":"1dadeb57-1f81-4d89-902a-d5cbe0839d81","shortId":"BDdU7b","kind":"skill","title":"flexcel-vcl","tagline":"Use when writing Delphi / FreePascal / C++Builder code that reads, writes, manipulates, or exports Excel (.xlsx / .xls) files, generates PDF or HTML from Excel, or produces data-driven reports with FlexCel Studio for VCL and FireMonkey (TMS FlexCel). Triggers include Excel/xlsx f","description":"# FlexCel Studio for VCL / FireMonkey\n\nThis skill helps write Delphi (VCL, FMX, Lazarus/LCL, Linux/SKIA) and C++Builder code that uses **FlexCel** — the TMS Software library for working with Excel `.xlsx` / `.xls` files, exporting to PDF/HTML/images, and generating data-driven reports from templates.\n\n## When to use this skill\n\nActivate whenever the user wants to, from Pascal/Delphi/C++Builder code:\n\n- **Read** an Excel file (`.xlsx` or `.xls`) — cell values, formulas, formatting.\n- **Create or modify** an Excel file programmatically.\n- **Generate reports** by merging data into Excel templates.\n- **Export** an Excel file to **PDF**, **HTML**, **SVG**, or images.\n- **Autofit** rows/columns, render sheets, or measure cells.\n- Target **VCL, FireMonkey (desktop & mobile), Lazarus, or Delphi Linux**.\n\nFlexCel does **not** require Excel or any Office installation on the target machine. It has no OLE/COM dependency.\n\n## Two ways to create Excel files — pick one\n\nBefore writing code, decide which API fits the task:\n\n| If the user wants to… | Use | Why |\n|-----------------------|-----|-----|\n| Read existing files, or build files cell-by-cell in code | **`TXlsFile` API** (`FlexCel.XlsAdapter`) | Full programmatic control; no designer required. |\n| Produce the same report repeatedly from changing data, with a styled layout | **`TFlexCelReport` + Excel template** (`FlexCel.Report`) | Non-programmers can edit the template in Excel; code just provides data. |\n\nWhen the user says \"generate a report with company logo / nice formatting / many rows from a database\", prefer **Reports**. When they say \"read this file and extract values\" or \"create an Excel file with these calculations\", prefer the **API**.\n\nYou can combine both: run a report to produce an in-memory `TXlsFile`, then manipulate it with the API, then export to PDF.\n\n## Quick-start recipes\n\nAll examples assume VCL. For FireMonkey replace `FlexCel.VCLSupport` with `FlexCel.FMXSupport`; for Lazarus use `FlexCel.LCLSupport`; for Delphi Linux use `FlexCel.SKIASupport`. The platform support unit goes in the **main program (`.dpr`) uses clause only**, not every unit.\n\n### Recipe 1 — Create an Excel file\n\n```pascal\nuses\n  System.IOUtils,\n  FlexCel.Core, FlexCel.XlsAdapter;\n\nprocedure CreateExcelFile;\nvar\n  xls: TXlsFile;\nbegin\n  // Start an empty workbook with 1 sheet and Excel-2019 default formatting.\n  xls := TXlsFile.Create(1, TExcelFileFormat.v2019, true);\n  try\n    xls.SetCellValue(1, 1, 'Hello from FlexCel!');          // A1 text\n    xls.SetCellValue(2, 1, 7);                              // A2 number\n    xls.SetCellValue(3, 1, 11.3);                           // A3 number\n    xls.SetCellValue(4, 1, TFormula.Create('=Sum(A2:A3)')); // A4 formula\n\n    xls.Save(TPath.Combine(TPath.GetDocumentsPath, 'test.xlsx'));\n  finally\n    xls.Free;\n  end;\nend;\n```\n\nKey points:\n- **All row/column/sheet indices are 1-based.** `(1, 1)` is cell `A1`. (XF format indices are the single exception — they're 0-based.)\n- File format is inferred from the extension (`.xlsx` → OOXML, `.xls` → BIFF8).\n- `TXlsFile` is a plain class, **not** a component — you create it in code and must `Free` it.\n\n### Recipe 2 — Read an Excel file\n\n```pascal\nuses\n  System.IOUtils,\n  FlexCel.Core, FlexCel.XlsAdapter;\n\nprocedure ReadExcelFile(const aMemo: TMemo);\nvar\n  xls: TXlsFile;\n  row, colIndex, XF: integer;\n  cell: TCellValue;\n  addr: TCellAddress;\n  s: string;\nbegin\n  xls := TXlsFile.Create(TPath.Combine(TPath.GetDocumentsPath, 'test.xlsx'));\n  try\n    xls.ActiveSheetByName := 'Sheet1';   // or loop xls.ActiveSheet from 1 to xls.SheetCount\n    for row := 1 to xls.RowCount do\n    begin\n      // Use ColCountInRow, NOT ColCount — much faster. See performance guide.\n      for colIndex := 1 to xls.ColCountInRow(row) do\n      begin\n        XF := -1;\n        cell := xls.GetCellValueIndexed(row, colIndex, XF);\n        addr := TCellAddress.Create(row, xls.ColFromIndex(row, colIndex));\n\n        s := 'Cell ' + addr.CellRef + ' ';\n        if      cell.IsEmpty   then s := s + 'is empty.'\n        else if cell.IsString  then s := s + 'string: '  + cell.ToString\n        else if cell.IsNumber  then s := s + 'number: '  + FloatToStr(cell.AsNumber)\n        else if cell.IsBoolean then s := s + 'bool: '    + BoolToStr(cell.AsBoolean)\n        else if cell.IsError   then s := s + 'error: '   + cell.ToString\n        else if cell.IsFormula then s := s + 'formula: ' + cell.AsFormula.Text;\n\n        aMemo.Lines.Add(s);\n      end;\n    end;\n  finally\n    xls.Free;\n  end;\nend;\n```\n\nKey points:\n- Iterate with **`ColCountInRow(row)`** combined with **`GetCellValueIndexed` + `ColFromIndex`** — this skips empty cells and is dramatically faster than a dense `1..ColCount` loop.\n- `TCellValue` is a discriminated-union record. Test with `IsEmpty / IsString / IsNumber / IsBoolean / IsError / IsFormula`, then extract with `ToString / AsNumber / AsBoolean / AsFormula`.\n- Excel dates are stored as numbers; detect them via the cell's format, not the value type.\n\n### Recipe 3 — Export Excel to PDF\n\n```pascal\nuses\n  FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Render;\n\nprocedure XlsxToPdf(const Source, Dest: string);\nvar\n  xls: TXlsFile;\n  pdf: TFlexCelPdfExport;\nbegin\n  xls := TXlsFile.Create(Source);\n  try\n    pdf := TFlexCelPdfExport.Create(xls);\n    try\n      pdf.Export(Dest);                   // one PDF covering all visible sheets\n    finally\n      pdf.Free;\n    end;\n  finally\n    xls.Free;\n  end;\nend;\n```\n\nPDF export needs **`FlexCel.Render`** plus the platform-support unit in the main `.dpr` (the renderer uses the graphics engine for font measurement). For PDF/A, digital signatures, font embedding tuning, or multi-sheet bookmarks see `references/pdf-html-export.md`.\n\n### Recipe 4 — Run a report from a template\n\nAssume an Excel template `invoice-template.xlsx` already exists, with tags like `<#Customers.Name>` inside a named range `__Customers__` spanning the repeating row(s).\n\n```pascal\nuses\n  FlexCel.Core, FlexCel.XlsAdapter, FlexCel.Report;\n\nprocedure RunReport(Customers: TDataSet);\nvar\n  report: TFlexCelReport;\nbegin\n  report := TFlexCelReport.Create(true);         // true = case-insensitive tags\n  try\n    report.AddTable('Customers', Customers, TDisposeMode.DoNotDispose);\n    report.SetValue('ReportDate', Now);\n    report.SetValue('CompanyName', 'Acme Corp');\n    report.Run('invoice-template.xlsx', 'invoice-output.xlsx');\n  finally\n    report.Free;\n  end;\nend;\n```\n\nTo write the **output straight to PDF**, run the report into a `TXlsFile` and pipe it through `TFlexCelPdfExport`:\n\n```pascal\nout := TXlsFile.Create;\ntry\n  report.Run('template.xlsx', out);\n  pdf := TFlexCelPdfExport.Create(out);\n  try pdf.Export('report.pdf'); finally pdf.Free end;\nfinally\n  out.Free;\nend;\n```\n\nFor the full tag language and template-design conventions see `references/reports-cheatsheet.md`.\n\n## Unit reference (what to put in `uses`)\n\nAlways include **`FlexCel.Core`** in every unit that touches FlexCel types. Then add, per task:\n\n| Task | Additional units |\n|------|------------------|\n| Platform graphics (main `.dpr` only) | `FlexCel.VCLSupport` / `FlexCel.FMXSupport` / `FlexCel.LCLSupport` / `FlexCel.SKIASupport` |\n| Read / write xls/xlsx | `FlexCel.XlsAdapter` |\n| PDF / HTML / image export, autofitting | `FlexCel.Render` |\n| Low-level PDF access (sign, PDF/A options, standalone PDF) | `FlexCel.Pdf` |\n| Template-based reports | `FlexCel.Report` |\n\n## Critical gotchas (read this every time)\n\n1. **1-based indexing** for rows, columns, sheets. `SetCellValue(1, 1, ...)` writes to `A1`. (XF format indices are 0-based.)\n2. **Always `Free`** `TXlsFile`, `TFlexCelReport`, `TFlexCelPdfExport`, etc. They're plain classes, not components. Use `try..finally`.\n3. **Don't iterate with `ColCount`** — it scans the whole sheet. Use `ColCountInRow(row)` + `GetCellValueIndexed` + `ColFromIndex`.\n4. **Platform support unit belongs in the `.dpr` only**, not in every unit — it has no published types.\n5. **Dates are numbers.** `GetCellValue` returns the serial date; check the cell's number format to know it's a date.\n6. **Measurement units in Excel are unusual** — column widths are in 1/256 of a character, row heights in 1/20 of a point, etc. See the \"Understanding Excel measurement units\" tip in the docs before fiddling with widths/heights.\n7. **Use APIMate.** When the user asks \"how do I make a cell blue / add an autofilter / create a pivot table\", the canonical answer is: do it in Excel, open the file in APIMate (ships with FlexCel), and copy the generated Delphi/C++ code. APIMate is the recommended way to discover API calls for anything Excel-specific. Mention this to the user.\n\n## When to consult the references\n\nLoad a reference file only when the task actually needs it — keeps your context lean.\n\n- **`references/api-cheatsheet.md`** — deeper `TXlsFile` usage: formatting, fonts, colors, merging, row/column sizing, comments, images, charts, data validation, protection, sheet management, streams.\n- **`references/reports-cheatsheet.md`** — full tag reference, named-range conventions for bands, master-detail, config sheets, user functions, events.\n- **`references/pdf-html-export.md`** — `TFlexCelPdfExport` and `TFlexCelHtmlExport` options: PDF/A, font embedding, digital signing, HTML5, image embedding.\n- **`references/pitfalls.md`** — longer list of gotchas drawn from the official Tips section: locale, fonts on Docker/Linux, barcodes, tokens in formulas, strict xlsx, conditional formats, etc.\n\n## When you need authoritative detail\n\nThe cheatsheets cover the common path. For anything deeper, fetch from the public documentation source:\n\n- Markdown source (raw): `https://raw.githubusercontent.com/tmssoftware/TMS-FlexCel.VCL-doc-src/main/<path>.md`\n  - Guides: `guides/api-developer-guide.md`, `guides/reports-developer-guide.md`, `guides/reports-tag-reference.md`, `guides/pdf-exporting-guide.md`, `guides/html-exporting-guide.md`, `guides/performance-guide.md`\n  - Tips: `tips/<topic>.md` (one file per tip)\n  - API reference: `api/FlexCel.XlsAdapter/TXlsFile/<MemberName>.md` and similar\n- Rendered docs: `https://doc.tmssoftware.com/flexcel/vcl/index.html`\n- Official sample repository (Delphi + C++Builder + FireMonkey): `https://github.com/tmssoftware/TMS-FlexCel.VCL-demos`\n\nUse `WebFetch` on the raw markdown URL when you need to confirm a signature or pull an official example. Prefer the raw markdown over the rendered HTML.\n\n## Style expectations for generated code\n\n- Use `try..finally..Free` around every FlexCel object. Don't rely on interface reference counting — these are not interfaces.\n- Use 1-based literals explicitly (`SetCellValue(1, 1, ...)`) — do not pretend indices are 0-based.\n- Prefer the generic overloads (`TFormula.Create('=...')`, `TCellValue`) over implicit conversions when the intent is ambiguous.\n- When exporting to PDF/HTML/images, include the platform-support unit in the example's `.dpr` block or mention it in a comment — otherwise rendering will fail at runtime with a missing-graphics-engine error.\n- Don't invent method names. If unsure, check the API markdown under `api/<unit>/<class>/<member>.md` in the doc source, or tell the user to verify with APIMate.","tags":["flexcel","vcl","skills","tmssoftware","agent-skills","claude-code-skill","claude-code-skills","claude-skills"],"capabilities":["skill","source-tmssoftware","skill-flexcel-vcl","topic-agent-skills","topic-claude-code-skill","topic-claude-code-skills","topic-claude-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tmssoftware/skills/flexcel-vcl","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tmssoftware/skills","source_repo":"https://github.com/tmssoftware/skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (11,208 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:27.957Z","embedding":null,"createdAt":"2026-04-29T07:00:08.888Z","updatedAt":"2026-05-18T19:07:27.957Z","lastSeenAt":"2026-05-18T19:07:27.957Z","tsv":"'-1':545 '-2019':377 '/flexcel/vcl/index.html':1281 '/tmssoftware/tms-flexcel.vcl-demos':1291 '/tmssoftware/tms-flexcel.vcl-doc-src/main/':1255 '0':445,964,1356 '1':352,373,382,387,388,396,402,408,429,431,432,517,522,538,638,946,947,955,956,1344,1349,1350 '1/20':1055 '1/256':1048 '11.3':403 '2':395,476,966 '3':401,681,982 '4':407,764,998 '5':1016 '6':1037 '7':397,1074 'a1':392,435,959 'a2':398,411 'a3':404,412 'a4':413 'access':928 'acm':823 'activ':95 'actual':1149 'add':899,1088 'addit':903 'addr':500,551 'addr.cellref':559 'alreadi':776 'alway':888,967 'ambigu':1371 'amemo':489 'amemo.lines.add':609 'answer':1097 'anyth':1127,1242 'api':188,212,287,307,1124,1271,1416,1419 'api/flexcel.xlsadapter/txlsfile':1273 'apim':1076,1107,1117,1432 'around':1328 'asboolean':661 'asformula':662 'ask':1080 'asnumb':660 'assum':318,771 'authorit':1233 'autofilt':1090 'autofit':141,922 'band':1184 'barcod':1221 'base':430,446,937,948,965,1345,1357 'begin':367,504,526,543,702,804 'belong':1002 'biff8':457 'block':1387 'blue':1087 'bookmark':760 'bool':590 'booltostr':591 'build':203 'builder':10,63,103,1287 'c':9,62,1286 'calcul':284 'call':1125 'canon':1096 'case':810 'case-insensit':809 'cell':112,147,206,208,434,498,546,558,630,673,1027,1086 'cell-by-cel':205 'cell.asboolean':592 'cell.asformula.text':608 'cell.asnumber':583 'cell.isboolean':586 'cell.isempty':561 'cell.iserror':595 'cell.isformula':603 'cell.isnumber':577 'cell.isstring':569 'cell.tostring':574,600 'chang':226 'charact':1051 'chart':1168 'cheatsheet':1236 'check':1025,1414 'class':462,976 'claus':346 'code':11,64,104,185,210,245,470,1116,1323 'colcount':530,639,987 'colcountinrow':528,621,994 'colfromindex':626,997 'colindex':495,537,549,556 'color':1162 'column':952,1044 'combin':290,623 'comment':1166,1393 'common':1239 'compani':257 'companynam':822 'compon':465,978 'condit':1227 'config':1188 'confirm':1303 'const':488,693 'consult':1138 'context':1154 'control':216 'convent':878,1182 'convers':1366 'copi':1112 'corp':824 'count':1338 'cover':715,1237 'creat':116,178,278,353,467,1091 'createexcelfil':363 'critic':940 'custom':786,799,815,816 'customers.name':781 'data':31,85,127,227,248,1169 'data-driven':30,84 'databas':265 'date':664,1017,1024,1036 'decid':186 'deeper':1157,1243 'default':378 'delphi':7,56,155,331,1285 'delphi/c':1115 'dens':637 'depend':174 'design':218,877 'desktop':151 'dest':695,712 'detail':1187,1234 'detect':669 'digit':751,1201 'discov':1123 'discrimin':645 'discriminated-union':644 'doc':1069,1278,1423 'doc.tmssoftware.com':1280 'doc.tmssoftware.com/flexcel/vcl/index.html':1279 'docker/linux':1220 'document':1248 'dpr':344,739,908,1005,1386 'dramat':633 'drawn':1211 'driven':32,86 'edit':240 'els':567,575,584,593,601 'embed':754,1200,1205 'empti':370,566,629 'end':421,422,611,612,615,616,721,724,725,830,831,865,868 'engin':745,1405 'error':599,1406 'etc':972,1059,1229 'event':1192 'everi':349,892,944,1009,1329 'exampl':317,1310,1384 'excel':18,27,75,107,120,129,133,161,179,233,244,280,355,376,479,663,683,773,1041,1063,1102,1129 'excel-specif':1128 'excel/xlsx':45 'except':442 'exist':200,777 'expect':1320 'explicit':1347 'export':17,79,131,309,682,727,921,1373 'extens':453 'extract':275,657 'f':46 'fail':1397 'faster':532,634 'fetch':1244 'fiddl':1071 'file':21,78,108,121,134,180,201,204,273,281,356,447,480,1105,1144,1268 'final':419,613,719,722,828,863,866,981,1326 'firemonkey':40,51,150,321,1288 'fit':189 'flexcel':2,35,42,47,67,157,391,896,1110,1330 'flexcel-vcl':1 'flexcel.core':360,484,688,794,890 'flexcel.fmxsupport':325,911 'flexcel.lclsupport':329,912 'flexcel.pdf':934 'flexcel.render':690,729,923 'flexcel.report':235,796,939 'flexcel.skiasupport':334,913 'flexcel.vclsupport':323,910 'flexcel.xlsadapter':213,361,485,689,795,917 'floattostr':582 'fmx':58 'font':747,753,1161,1199,1218 'format':115,260,379,437,448,675,961,1030,1160,1228 'formula':114,414,607,1224 'free':473,968,1327 'freepasc':8 'full':214,871,1176 'function':1191 'generat':22,83,123,253,1114,1322 'generic':1360 'getcellvalu':1020 'getcellvalueindex':625,996 'github.com':1290 'github.com/tmssoftware/tms-flexcel.vcl-demos':1289 'goe':339 'gotcha':941,1210 'graphic':744,906,1404 'guid':535,1257 'guides/api-developer-guide.md':1258 'guides/html-exporting-guide.md':1262 'guides/pdf-exporting-guide.md':1261 'guides/performance-guide.md':1263 'guides/reports-developer-guide.md':1259 'guides/reports-tag-reference.md':1260 'height':1053 'hello':389 'help':54 'html':25,137,919,1318 'html5':1203 'imag':140,920,1167,1204 'implicit':1365 'in-memori':298 'includ':44,889,1376 'index':949 'indic':427,438,962,1354 'infer':450 'insensit':811 'insid':782 'instal':165 'integ':497 'intent':1369 'interfac':1336,1342 'invent':1409 'invoice-output.xlsx':827 'invoice-template.xlsx':775,826 'isboolean':653 'isempti':650 'iserror':654 'isformula':655 'isnumb':652 'isstr':651 'iter':619,985 'keep':1152 'key':423,617 'know':1032 'languag':873 'layout':231 'lazarus':153,327 'lazarus/lcl':59 'lean':1155 'level':926 'librari':71 'like':780 'linux':156,332 'linux/skia':60 'list':1208 'liter':1346 'load':1141 'local':1217 'logo':258 'longer':1207 'loop':514,640 'low':925 'low-level':924 'machin':169 'main':342,738,907 'make':1084 'manag':1173 'mani':261 'manipul':15,303 'markdown':1250,1297,1314,1417 'master':1186 'master-detail':1185 'md':1256,1266,1274,1420 'measur':146,748,1038,1064 'memori':300 'mention':1131,1389 'merg':126,1163 'method':1410 'miss':1403 'missing-graphics-engin':1402 'mobil':152 'modifi':118 'much':531 'multi':758 'multi-sheet':757 'must':472 'name':784,1180,1411 'named-rang':1179 'need':728,1150,1232,1301 'nice':259 'non':237 'non-programm':236 'number':399,405,581,668,1019,1029 'object':1331 'offic':164 'offici':1214,1282,1309 'ole/com':173 'one':182,713,1267 'ooxml':455 'open':1103 'option':931,1197 'otherwis':1394 'out.free':867 'output':835 'overload':1361 'pascal':357,481,686,792,850 'pascal/delphi/c':102 'path':1240 'pdf':23,136,311,685,700,707,714,726,838,857,918,927,933 'pdf.export':711,861 'pdf.free':720,864 'pdf/a':750,930,1198 'pdf/html/images':81,1375 'per':900,1269 'perform':534 'pick':181 'pipe':846 'pivot':1093 'plain':461,975 'platform':336,733,905,999,1379 'platform-support':732,1378 'plus':730 'point':424,618,1058 'prefer':266,285,1311,1358 'pretend':1353 'procedur':362,486,691,797 'produc':29,220,296 'program':343 'programm':238 'programmat':122,215 'protect':1171 'provid':247 'public':1247 'publish':1014 'pull':1307 'put':885 'quick':313 'quick-start':312 'rang':785,1181 'raw':1252,1296,1313 'raw.githubusercontent.com':1254 'raw.githubusercontent.com/tmssoftware/tms-flexcel.vcl-doc-src/main/':1253 're':444,974 'read':13,105,199,271,477,914,942 'readexcelfil':487 'recip':315,351,475,680,763 'recommend':1120 'record':647 'refer':882,1140,1143,1178,1272,1337 'references/api-cheatsheet.md':1156 'references/pdf-html-export.md':762,1193 'references/pitfalls.md':1206 'references/reports-cheatsheet.md':880,1175 'reli':1334 'render':143,741,1277,1317,1395 'repeat':224,789 'replac':322 'report':33,87,124,223,255,267,294,767,802,805,841,938 'report.addtable':814 'report.free':829 'report.pdf':862 'report.run':825,854 'report.setvalue':818,821 'reportd':819 'repositori':1284 'requir':160,219 'return':1021 'row':262,494,521,541,548,553,555,622,790,951,995,1052 'row/column':1164 'row/column/sheet':426 'rows/columns':142 'run':292,765,839 'runreport':798 'runtim':1399 'sampl':1283 'say':252,270 'scan':989 'section':1216 'see':533,761,879,1060 'serial':1023 'setcellvalu':954,1348 'sheet':144,374,718,759,953,992,1172,1189 'sheet1':512 'ship':1108 'sign':929,1202 'signatur':752,1305 'similar':1276 'singl':441 'size':1165 'skill':53,94 'skill-flexcel-vcl' 'skip':628 'softwar':70 'sourc':694,705,1249,1251,1424 'source-tmssoftware' 'span':787 'specif':1130 'standalon':932 'start':314,368 'store':666 'straight':836 'stream':1174 'strict':1225 'string':503,573,696 'studio':36,48 'style':230,1319 'sum':410 'support':337,734,1000,1380 'svg':138 'system.ioutils':359,483 'tabl':1094 'tag':779,812,872,1177 'target':148,168 'task':191,901,902,1148 'tcelladdress':501 'tcelladdress.create':552 'tcellvalu':499,641,1363 'tdataset':800 'tdisposemode.donotdispose':817 'tell':1426 'templat':89,130,234,242,770,774,876,936 'template-bas':935 'template-design':875 'template.xlsx':855 'test':648 'test.xlsx':418,509 'texcelfileformat.v2019':383 'text':393 'tflexcelhtmlexport':1196 'tflexcelpdfexport':701,849,971,1194 'tflexcelpdfexport.create':708,858 'tflexcelreport':232,803,970 'tflexcelreport.create':806 'tformula.create':409,1362 'time':945 'tip':1066,1215,1264,1265,1270 'tmemo':490 'tms':41,69 'token':1222 'topic-agent-skills' 'topic-claude-code-skill' 'topic-claude-code-skills' 'topic-claude-skills' 'tostr':659 'touch':895 'tpath.combine':416,507 'tpath.getdocumentspath':417,508 'tri':385,510,706,710,813,853,860,980,1325 'trigger':43 'true':384,807,808 'tune':755 'two':175 'txlsfile':211,301,366,458,493,699,844,969,1158 'txlsfile.create':381,506,704,852 'type':679,897,1015 'understand':1062 'union':646 'unit':338,350,735,881,893,904,1001,1010,1039,1065,1381 'unsur':1413 'unusu':1043 'url':1298 'usag':1159 'use':4,66,92,197,328,333,345,358,482,527,687,742,793,887,979,993,1075,1292,1324,1343 'user':98,194,251,1079,1135,1190,1428 'valid':1170 'valu':113,276,678 'var':364,491,697,801 'vcl':3,38,50,57,149,319 'verifi':1430 'via':671 'visibl':717 'want':99,195 'way':176,1121 'webfetch':1293 'whenev':96 'whole':991 'width':1045 'widths/heights':1073 'work':73 'workbook':371 'write':6,14,55,184,833,915,957 'xf':436,496,544,550,960 'xls':20,77,111,365,380,456,492,505,698,703,709 'xls.activesheet':515 'xls.activesheetbyname':511 'xls.colcountinrow':540 'xls.colfromindex':554 'xls.free':420,614,723 'xls.getcellvalueindexed':547 'xls.rowcount':524 'xls.save':415 'xls.setcellvalue':386,394,400,406 'xls.sheetcount':519 'xls/xlsx':916 'xlsx':19,76,109,454,1226 'xlsxtopdf':692","prices":[{"id":"786d8848-119d-4d40-9939-d9efddf1ac3e","listingId":"1dadeb57-1f81-4d89-902a-d5cbe0839d81","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tmssoftware","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-29T07:00:08.888Z"}],"sources":[{"listingId":"1dadeb57-1f81-4d89-902a-d5cbe0839d81","source":"github","sourceId":"tmssoftware/skills/flexcel-vcl","sourceUrl":"https://github.com/tmssoftware/skills/tree/main/skills/flexcel-vcl","isPrimary":false,"firstSeenAt":"2026-04-29T07:00:08.888Z","lastSeenAt":"2026-05-18T19:07:27.957Z"}],"details":{"listingId":"1dadeb57-1f81-4d89-902a-d5cbe0839d81","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tmssoftware","slug":"flexcel-vcl","github":{"repo":"tmssoftware/skills","stars":12,"topics":["agent-skills","claude-code-skill","claude-code-skills","claude-skills"],"license":null,"html_url":"https://github.com/tmssoftware/skills","pushed_at":"2026-04-15T21:13:22Z","description":"Official collection of agent skills from TMS Software","skill_md_sha":"b01d94b292adc96b0101a6145783387131f691ca","skill_md_path":"skills/flexcel-vcl/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tmssoftware/skills/tree/main/skills/flexcel-vcl"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"flexcel-vcl","description":"Use when writing Delphi / FreePascal / C++Builder code that reads, writes, manipulates, or exports Excel (.xlsx / .xls) files, generates PDF or HTML from Excel, or produces data-driven reports with FlexCel Studio for VCL and FireMonkey (TMS FlexCel). Triggers include Excel/xlsx from Delphi, TXlsFile, TFlexCelReport, TFlexCelPdfExport, TFlexCelHtmlExport, FireMonkey Excel export, Lazarus Excel, and Excel reporting from Pascal."},"skills_sh_url":"https://skills.sh/tmssoftware/skills/flexcel-vcl"},"updatedAt":"2026-05-18T19:07:27.957Z"}}