Import Excel to Looker
How to Import Excel Spreadsheets into Looker Using CSVBox (as of 2026)
For many SaaS products, letting users upload Excel files and visualize that data in Looker is a high-value feature. Looker itself does not accept raw Excel (.xlsx or .xls) uploads as a data source, so product and engineering teams need a lightweight ingestion layer that converts, validates, and delivers spreadsheet data into a queryable warehouse.
In this guide you’ll learn a pragmatic, developer-oriented flow using CSVBox — an embeddable spreadsheet importer that parses Excel and CSV files, enforces schema, and forwards clean rows to your backend so Looker can query them.
Who should follow this guide?
- Technical founders adding self-serve data onboarding
- Full-stack engineers implementing spreadsheet upload UX
- SaaS product teams enabling business users to surface Excel data in BI
- Internal tooling teams building import workflows for Looker
Excel → CSVBox → Warehouse → Looker: Workflow Overview
- Accept or convert Excel files into CSV-compatible rows
- Use CSVBox to collect, map, and validate uploads in your app UI
- Deliver validated rows to your warehouse via webhook or destination connector
- Model and visualize the data in Looker
This flow emphasizes the core CSV import steps used in production: file → map → validate → submit.
1. Convert Excel Files to a CSV-Compatible Format
Because Looker queries databases (not raw spreadsheet files), your ingestion step must normalize Excel into structured rows.
Options for your app:
- Ask users to export and upload CSV files directly (lowest complexity)
- Let users upload
.xlsxor.xlsand use an importer (like CSVBox) that parses those formats into rows automatically
Tip: Accepting .xlsx, .xls, and .csv reduces friction and support requests.
2. Embed CSVBox as the Spreadsheet Importer
CSVBox provides a developer-focused widget that handles file parsing, column mapping, and schema validation so you don’t have to build that UI and logic yourself.
Key benefits for engineers:
- Accepts
.xlsx,.xls, and.csvwithout custom parsers - Schema validation before rows hit your backend
- Guided or automatic column mapping for end users
- Embeddable JS widget you can style to match your app
How to get started:
- Create an account at https://csvbox.io
- Define the expected data schema in the CSVBox dashboard (required fields, types, rules)
- Generate a widget license key for embedding
- Embed the widget and handle the import callback
Example embed (paste into your frontend; adjust per your app):
<script src="https://widget.csvbox.io/widget.js"></script>
<div id="csvbox"></div>
<script>
CSVBox.init({
selector: "#csvbox",
licenseKey: "YOUR_WIDGET_KEY",
user: {
id: "user_123",
email: "user@example.com"
},
onImportComplete: function(result) {
// result contains parsed rows and metadata
// Trigger backend upload, ETL, or a webhook post
console.log('Import Completed', result);
}
});
</script>
See docs: https://help.csvbox.io/getting-started/2.-install-code
3. Deliver Validated Rows to Your Database (Webhook or Destination)
After CSVBox parses and validates a file, it can forward the clean rows to your backend via a webhook or directly to supported destinations. From there, load the rows into a data warehouse that Looker can query.
Common Looker destinations:
- Google BigQuery
- Snowflake
- Amazon Redshift
- PostgreSQL
A minimal webhook receiver (Node.js/Express) might look like:
app.post('/csvbox/webhook', (req, res) => {
const payload = req.body; // CSVBox sends parsed rows and metadata
const rows = payload.data || payload.rows; // inspect the actual payload in your account
// insert rows into your data store / enqueue for ETL
insertIntoDatabase(rows)
.then(() => res.status(200).send('OK'))
.catch(err => res.status(500).send('Error'));
});
Implementation notes:
- Parse JSON and validate payload shape before inserting
- Consider idempotency and duplicate detection when ingesting repeated uploads
- Log import metadata (uploader, filename, row count, errors) for troubleshooting
Full destinations guide: https://help.csvbox.io/destinations
4. Model and Visualize the Imported Data in Looker
Once rows are in your warehouse:
- Create LookML models, explores, dimensions, and measures aligned to the CSVBox schema
- Build Explores and dashboards so non-technical users can slice uploaded data
- Expose self-serve dashboards inside your product or link to Looker UI
This flow lets users upload Excel leads, transactions, or inventories and immediately analyze them without SQL knowledge.
Common Excel Upload Challenges and How CSVBox Helps
| Challenge | CSVBox solution |
|---|---|
| Inconsistent Excel formats | Accepts .xlsx, .xls, and .csv and normalizes to rows |
| Missing or invalid fields | Enforces schema validation at upload time |
| Confusing column mapping | Guided, user-friendly column matching UI |
| Troubleshooting failed imports | Audit logs and import session details for transparent debugging |
Emphasize validation and clear error feedback to reduce support load and improve data quality.
Why use CSVBox for Looker integrations?
CSVBox shortens dev time and reduces downstream data issues by validating spreadsheets at the edge. For engineering teams, that means fewer ETL failures and faster time-to-dashboard.
Key capabilities:
- Accept multiple spreadsheet formats without extra libraries
- Schema validation and required-field enforcement
- Optional auto-mapping based on headers
- Real-time user feedback and import error prevention
- Embed via JavaScript with light frontend work
- White-labeling and customization available in the widget
- Secure transport and audit logging for import sessions
CSVBox acts as the import layer between users’ raw Excel files and the clean rows that power Looker dashboards.
Real-world example: Let sales upload Excel leads and track them in Looker
Implementation outline:
- Embed CSVBox in the CRM upload page
- Sales reps upload
.xlsxlead lists - CSVBox validates and maps lead fields (name, email, company, stage)
- Valid rows are sent to BigQuery or your warehouse
- Build Looker dashboards for lead funnel and activity metrics
This pattern reduces manual CSV cleaning and lets teams get insights into uploaded data faster.
Frequently Asked Questions
Can I upload .xlsx files into Looker directly?
No. Looker queries databases and does not ingest raw Excel files. Ingest spreadsheet rows into a warehouse Looker can query from.
Does CSVBox support Excel file types?
Yes — CSVBox accepts .xlsx, .xls, and .csv and parses them into rows with validation and mapping.
What destinations can CSVBox send data to?
CSVBox works with common warehouses and databases such as PostgreSQL, BigQuery, Snowflake, and others. See the destinations docs for specifics: https://help.csvbox.io/destinations
Can I brand the importer to match my app?
Yes. CSVBox supports white-labeling of the widget (logos, colors, fonts) so it blends with your UI.
Is there a free plan for development?
Yes. CSVBox offers a free tier suitable for development and testing — check the pricing page on csvbox.io.
Best practices for CSV imports in 2026
- Validate schema at the UI edge so bad rows never reach your warehouse
- Provide clear, contextual error messages and inline previews during mapping
- Make uploads idempotent and log import session metadata for audits
- Keep a small staging table per upload for review before merging into production tables
Final thoughts
If your product or internal tools rely on Excel uploads, using a dedicated importer like CSVBox avoids reinventing parsing, mapping, and validation logic. The result: cleaner data, faster dashboards in Looker, and less support overhead.
Get started with a free account at https://csvbox.io
✅ Cleaner data
✅ Faster insights in Looker
✅ Reduced engineering effort and support load