Fast download to Excel on client

Here is how you can download to an Excel file directly from your browser by using SheetJS:

In Native Libraries, add:

<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>

<script>
  function exportToExcel(data, filename) {
    // Create a new workbook
    const workbook = XLSX.utils.book_new();
    
    // Convert data (array of objects) to a worksheet
    const worksheet = XLSX.utils.json_to_sheet(data);

    // Append the worksheet to the workbook
    XLSX.utils.book_append_sheet(workbook, worksheet, "Sheet1");

    // Write the workbook and trigger a download
    XLSX.writeFile(workbook, filename || "data.xlsx");
  }
</script>

In your form:

import anvil.js

data = [
     {"name": "Alice", "age": 25, "email": "alice@example.com"},
     {"name": "Bob", "age": 30, "email": "bob@example.com"},
]

anvil.js.call_js("exportToExcel", data, "data.xlsx")
7 Likes

This is great, thank you!

1 Like