How to perform a custom client-side Excel export (Blob)

Hello,

I am using DHTMLX Spreadsheet in a project with Frappe. I need to implement an Excel export feature that runs entirely on the client-side (generating a Blob) to avoid using the external export service.

I am using the spreadsheet.serialize() method to get the data.

Is there a built-in way to generate a .xlsx Blob directly from the serialize() output without sending data to your export servers?

Best regards,

Support answer if anyone needs :

// Patch export to capture XLSX Blob from the worker
const originalGetXlsxWorker = spreadsheet.export._getXlsxWorker;

spreadsheet.export._getXlsxWorker = function (name, path) {
if (!this._xlsxWorker) {
const exportModulePath = spreadsheet.config.exportModulePath;

const workerBootstrapUrl = window.URL.createObjectURL(
  new Blob([`importScripts('${exportModulePath}');`], { type: "text/javascript" })
);

this._xlsxWorker = new Promise((resolveWorker) => {
  const worker = new Worker(workerBootstrapUrl);

  worker.addEventListener("message", (event) => {
    if (event.data?.type === "init") {
      resolveWorker(worker);
      return;
    }

    if (event.data?.type === "ready") {
      const xlsxBlob = event.data.blob;

      // Example: upload without download
      const formData = new FormData();
      formData.append("file", xlsxBlob, `${name || "spreadsheet"}.xlsx`);
      fetch("/api/upload", { method: "POST", body: formData }).catch(console.error);
    }
  });
});

}

return this._xlsxWorker;
};

spreadsheet.export.xlsx(“spreadsheet-data”);