Import Excel to Retool without Code
Did you know that more than 70 % of companies still keep their “single source of truth” in a spreadsheet? Yet only a handful can shove that data into a modern tool without writing a single line of code. Imagine turning a messy Excel file—filled with VLOOKUPs, XLOOKUPs, and nested formulas—into a live dashboard in Retool in under five minutes. Sound familiar?Why Bring Excel Into Retool?
Speed to insight is the first reason I love Retool. A static spreadsheet can be a bottleneck; with Retool, one click turns it into a searchable, filterable UI that anyone on the team can use instantly. Data governance? Retool gives you centralised permissions, audit trails, and version control—features that Excel just can’t match. Scalability is the cherry on top. A 10‑row quick‑calc can grow into a 100 k‑row production‑grade app without a hitch. So, if you’re tired of manual copy‑pastings or worry about version conflicts, Retool is your next stop.Preparing Your Spreadsheet for a Seamless Import
You’ve probably noticed that not every Excel file plays nice with Retool. Here’s how to clean it up:- Clean the data: Remove merged cells, hidden rows or columns, and keep a single, clear header row.
- Standardise formulas: Replace volatile functions (like NOW()) with static values. Keep VLOOKUP/XLOOKUP only if you need them as reference tables.
- Save in a compatible format: XLSX preserves sheet tabs and formulas better than CSV, but if you’re only using raw data, CSV can be a lighter load.
Step‑by‑Step: Importing Excel to Retool without Writing Code
Let’s walk through the process. I’ve personally done this dozens of times, and it’s pretty straightforward.- Upload the file to Retool’s “Resources” – choose File Upload > Excel and give it a memorable name.
- Create a new app & add a Table component – point the Table’s Data field to the uploaded resource, e.g.,
{{ excelResource.data }}. - Map columns to UI controls – drag a Dropdown, Text Input, or Date Picker onto the canvas and bind it with a simple Retool expression like
{{ table1.filteredData }}. - Add a quick filter with VLOOKUP logic – use Retool’s built‑in “Transformer” to mimic VLOOKUP:
{{ table1.data.filter(row => row.ID === dropdown1.value) }}. - Publish and test – preview the app, try editing a cell, and watch the change appear instantly.
// Filter rows where the ID matches the dropdown selection
return table1.data.filter(row => row.ID === dropdown1.value);
That’s it. The whole workflow can be saved as a “Template” for future imports, which means you’ll be set up in minutes every time.
Advanced Tricks: Leveraging Excel Formulas Inside Retool
What’s the point of importing if you can’t keep your formulas alive? Here’s how to bring Excel logic into Retool:- Re‑using VLOOKUP/XLOOKUP: Export the lookup table as a separate sheet, import it as a second resource, and join the two tables with Retool’s Join transformer.
- Dynamic calculations: Replicate Excel’s IF, SUMIFS, or array formulas using the JavaScript‑based Transformer (e.g.,
{{ _.sumBy(table1.filteredData, 'Revenue') }}). - Conditional formatting → UI styling: Translate Excel’s colour rules into Retool’s Conditional Styles (e.g., highlight rows where
Profit < 0with a red background).
// Transformer: enrichOrdersWithCustomerName
const orders = {{ excelResource.ordersSheet }}; // [{OrderID: 1, Amount: 250}, …]
const customers = {{ excelResource.customersSheet }}; // [{CustomerID: 1, Name: "Acme"} , …]
// Build a lookup map (XLOOKUP equivalent)
const customerMap = _.keyBy(customers, 'CustomerID');
// Merge the data
return orders.map(order => ({
...order,
CustomerName: customerMap[order.OrderID]?.Name || 'Unknown'
}));
Now bind a Table to {{ enrichOrdersWithCustomerName }} and you’ve got a live “Customer Name” column—no code beyond that little block.
Actionable Takeaways & Next Steps
- Checklist: Before you hit upload, double‑check your data for hidden rows, merged cells, and volatile formulas.
- Resources: Retool’s Excel Import docs, community templates, and a downloadable “Excel‑to‑Retool” cheat sheet are great starting points.
- Growth path: Once you’re comfortable with static imports, add API calls, write‑back capabilities, and role‑based access in subsequent iterations.
Frequently Asked Questions
Q1. How do I import an Excel file with multiple sheets into a single Retool app?
A: Upload the XLSX file as a resource; each sheet becomes a separate data set (e.g., excelResource.sheet1, excelResource.sheet2). Bind each sheet to its own component or join them with a transformer.
Q2. Can I keep my VLOOKUP or XLOOKUP formulas alive after the import?
A: Retool doesn’t execute Excel formulas directly, but you can replicate the logic using JavaScript transformers or by importing the lookup table as a separate sheet and joining it inside Retool.
Q3. What’s the size limit for Excel files uploaded to Retool?
A: The default limit is 50 MB per file; larger workbooks can be split into smaller files or stored in a cloud bucket (S3, Google Drive) and linked as a resource.
Q4. Do I need a paid Retool plan to import Excel files?
A: The free tier allows up to 5 custom apps and supports file‑based resources, including Excel. For higher volume or automated scheduled imports, a paid plan is recommended.
Q5. How can I automatically refresh the data when the source Excel file changes?
A: Set up a Scheduled Query that re‑reads the file from a cloud storage location (Google Drive, S3, etc.) and triggers a UI refresh via Retool’s “Refresh Data” action. That way your dashboard stays in sync without manual intervention.
Related reading: Original discussion
What do you think?
Have experience with this topic? Drop your thoughts in the comments - I read every single one and love hearing different perspectives!
Comments
Post a Comment