I've done exactly what you ask, using PXPlus only, on a Linux server, because we wanted a solution with no external dependencies. It was quite a bit of work, but definitely possible if you're familiar with using XML in PXPlus. The 'ah-ha' moment for me was when I discovered that an XLSX file is actually just a ZIP file - You can just change the extension to .ZIP, then unzip it to see all of the included files and directory structure. Once you see the structure of the zip file, you'll realize that it's just a matter of building all of the individual directories/files and the links between them. The routine I have does a fairly basic XLSX file for outputting reports to Excel, so it will set the cell type (numeric, text, date, image, etc.), cell width, font, bold, include images, and a few other minor things that I've long since forgotten. It's possible to add other features like formulas, but our clients don't really have a need for that - they just want to be able to see the reports in a true XLSX format, and then they can massage the data however they choose using a full-featured Excel editor. The spec that I used is a PDF document named "c061750_ISO_IEC_29500-1_2012.pdf", which you can find on the Web by searching for that filename. That's an older version based on Office 2008, I believe, but we are still using it extensively and our clients love it. There are newer versions of the spec, but there aren't significant changes for the basic stuff that we are using, so I haven't updated our routines. If you can't find a copy of the spec, let me know and I can email it to you. The spec includes all office documents (Word files, Excel files, etc), and Excel documents are referred to as "SpreadsheetML". The documentation is huge, but necessary for some pre-defined values (like the values necessary to define a cell type). But, most of the coding I did in PXPlus was done by opening the various files/directories in the ZIP file and re-creating their structure using PXPlus programs.