Excel to Calendar Converter
Turn an event spreadsheet into an .ics file that imports into Google Calendar, Outlook, and Apple Calendar - one event per row.
Drop your file here or click to upload
Supports .xlsx, .xls, .csv · up to 50MB · or paste a file from your clipboard
How to Convert Excel Events to a Calendar
- Upload your sheet - .xlsx, .xls or .csv. Schedules, rosters, deadlines: anything with a title and a date per row.
- Map columns - the mapping is guessed from your header row and can be corrected. Title and start date are required; start time, end date, end time, description and location are optional.
- Check the preview - the first events are listed with their dates, all-day events are labelled, and skipped rows are named with their reasons.
- Import the .ics - into Google Calendar (Settings → Import & Export), Outlook (File → Open & Export → Import), or Apple Calendar (File → Import).
What the .ics File Contains
The download is a standard iCalendar 2.0 file: one VEVENT per spreadsheet row, wrapped in a VCALENDAR named after your source file. Each event carries a SUMMARY from the title column, a DTSTART and DTEND, and DESCRIPTION and LOCATION when those columns are mapped and not empty. Semicolons, commas, backslashes and line breaks inside your text are escaped the way the spec requires, and long lines are folded at 75 octets without splitting a character, so accented and non-Latin text survives the trip.
Deliberately not written: recurrence rules, attendees, organisers, alarms and reminders, categories, availability, and per-event timezones. A repeating meeting has to be one row per occurrence.
How Column Mapping Is Guessed
Headers are matched case-insensitively against patterns: title, subject, event, name or summary for the title; start date, date, start or begin for the start date; time-flavoured headers for the time columns; desc, detail, body or notes for the description; and location, place, venue, room or where for the location. Each column can only be claimed once, so a sheet with both "Date" and "End Date" resolves sensibly. Nothing is guessed silently - the mapping table shows every decision and the preview updates as soon as you change one.
Edge Cases and Limits
- No header row? Untick "First row contains headers" and the columns become Column 1, Column 2 and so on - map them by hand.
- Times inside a date cell are used automatically: a cell holding 2026-02-10 14:30 gives both the date and the time, with no separate time column needed.
- A time-only column accepts 14:30, 2:30 PM and 14:30:00. Anything else is ignored, and the row becomes an all-day event rather than failing.
- Excel serial dates are converted using the workbook's own date system, including the 1904 system that older Mac files use.
- Multiple sheets - pick the sheet from the selector; the mapping is re-guessed for that sheet's headers.
- CSV input has its delimiter and text encoding detected, so semicolon-separated European exports and UTF-16 files load correctly.
- The download is always named events.ics, and the calendar name inside it comes from your file name.
When to Use a Different Tool
If your dates are stored as text or as raw serial numbers and you want to fix them in the sheet first, the Excel date converter decodes them. To sort a schedule chronologically before exporting, use Sort Excel. For contact lists rather than events, Excel to vCard does the equivalent job for .vcf files, and if you need a printable planner instead of calendar entries, start from a calendar template.
Frequently Asked Questions
Real Excel date cells (any display format, because the underlying serial number is used), ISO text like 2026-02-10 or 2026/02/10, and slash dates like 2/10/2026. Slash dates are read month-first, so a UK-style 03/04/2026 becomes 4 March, not 3 April - format that column as a date in Excel, or write it as 2026-04-03, to remove the ambiguity. Written dates such as '10 Feb 2026' are not parsed and those rows are skipped.
None is written. Timed events are exported as floating local times (DTSTART:20260210T143000 with no timezone and no Z), which means every calendar app shows 14:30 in whatever timezone it is set to. That is usually what you want for a schedule everyone reads locally, but it also means the file does not shift times for attendees in other zones - set the times in the target zone yourself if that matters.
A row with a start date but no usable time becomes an all-day event: DTSTART;VALUE=DATE with a DTEND of the following day, which is how RFC 5545 marks an exclusive end. Give it an end date as well and the same rule applies to that date, so a conference from the 10th to the 12th ends on the 13th in the file and displays as the 10th to the 12th in your calendar.
It gets a one-hour duration. If only an end date is given, the start time is reused on that date; if only an end time is given, it is applied to the start date. Events that run past midnight roll onto the next day correctly.
Two reasons only, and both are listed with the spreadsheet row number: a missing title, or a start date that could not be parsed. Fix those cells, or map a different column, and the events appear in the preview immediately.
You can, but every export generates fresh UIDs, so a second import adds a second copy of each event rather than updating the first. Delete the previously imported events (or import into a dedicated calendar you can clear) before re-importing. Recurring events, reminders, attendees and per-event timezones are not written at all - each row becomes one plain event.