Import an Excel schedule into Google Calendar
Google Calendar won't open an Excel file. The usual advice is to save as CSV, rename the headers to match Google's, fix the dates, and hope. Koyomi replaces all of that: drop the .xlsx or .xls, check the preview, download an .ics, import.
Take a project plan with milestones and deadlines, one per row, plus an owner column and a notes column. Koyomi reads Excel's date cells as real dates (no Excel-to-CSV mangling), and you point Milestone at the title, Deadline at the start date and Notes at the description with dropdowns. Dates without a time become all-day events, which is usually right for deadlines.
Multi-sheet workbooks show a sheet picker, so a plan with one tab per phase can be converted a tab at a time into separate calendars. The workbook never leaves your browser.
How to import an Excel schedule into Google Calendar
- Flatten the plan to one row per milestone. A Gantt-style sheet with weeks across the columns can't be read as events. You need Milestone, Deadline, Owner and Notes as columns, one row each. Add a Start column when a phase should appear as a bar rather than a single day.
- Check that dates are dates. A Deadline column of real Excel dates is ideal. If it holds text like "w/c 14 Sep", it won't parse; change it to a real date (the 14th) and put "week of" in the notes.
- Owners into the title or the description. Google Calendar has no owner field. Join the two in Excel (=A2&" - "&B2) to get "Design freeze - Priya" as the title, or map Owner to Description.
- Leave deadlines without a time; give phases an End Date. With no times, each milestone becomes an all-day event; a phase with a Start and End date spans the days between. Don't add 17:00 unless you want a timed block with the default duration.
- One tab, one calendar. Pick the tab in the sheet picker, name the calendar after it, download, and import into a Google calendar created for that phase. Repeat for the next tab.
All-day versus timed: what Google does with each
Google Calendar shows all-day events in the strip above the day grid and timed events in the grid at their hour. A deadline given a time of 17:00 becomes a one-hour block from 5 to 6 PM, which reads like a meeting. For deadlines, no time is usually the better choice.
Multi-day all-day events appear as a bar across the days. The iCalendar format wants the end written as the day after the last day; Koyomi handles that shift, so a phase from Sep 14 to Sep 18 in the sheet shows as Sep 14 to Sep 18 in Google, not to the 19th.
Rows with times and rows without can sit in the same sheet. Each row is decided on its own.
Keeping the calendar in step with the plan
Imports are one-way; editing the sheet doesn't touch the calendar. When you re-import a new file, calendar apps match events by UID. Koyomi's automatic UID is built from the row's position, title and start, so it survives edits to notes or owner, but a milestone whose date moved gets a new UID and shows up as a new event alongside the old one.
To keep UIDs stable through date changes, add an ID column with any unique value per row; when present, it's used as the UID. Failing that, the practical approach is to keep the plan in its own Google calendar and, after a reshuffle, delete that calendar, create it again and import the fresh file. That takes a minute and leaves no stale milestones behind.
After you download the .ics
Google Calendar
- Open calendar.google.com on a computer (the mobile apps can't import files).
- Click the gear → Settings → Import & export.
- Select the .ics file, choose which calendar to add the events to, and click Import.
Read the guide
Frequently asked questions
- Does Google Calendar import .xlsx directly?
- No. Google Calendar imports only CSV and ICS. ICS is the more reliable of the two: it carries exact times and timezones inside the file and doesn't depend on Google's header names.
- Should I convert to CSV or ICS for Google Calendar?
- ICS. Google's CSV import expects its own headers and US-style dates; ICS has neither restriction, and you can preview exactly what will land before importing.
- My deadlines have no time. Will they show as all-day?
- Yes. A row with a date and no time becomes an all-day event. If you add a Start Time column, it's used, with a default 60-minute duration when there's no end time.
- The workbook has a tab per phase. Do I convert each one?
- Yes, one sheet per conversion — pick the tab in the sheet picker and download an .ics for it. Import each file into the same Google calendar or a different one, whichever suits.
- My plan has a merged title row across the top. Will that break it?
- If it's row 1, yes. Koyomi looks at the first row to decide whether it's a header; a merged banner reads as a one-cell header and the real column names become data. Delete the banner row, or copy the table to a new sheet, so the column names sit in row 1. A merged cell inside the header row labels only its first column; the others show as column letters and can be mapped by hand.
- Can status or percent-complete columns show up in Google?
- Only through Description. Map Status to Description, or build a combined Notes column in Excel before converting. Google Calendar has no custom fields for imported events.
- Can I import the same file into two Google calendars?
- Yes. Import it twice and choose a different destination calendar each time; each calendar gets its own copy of the events.
- Is my spreadsheet uploaded anywhere?
- No. Parsing and the .ics file are produced entirely in your browser — the file never leaves your device. That's also why there is no size limit, no queue and no account.
- Is this really free?
- Yes. Every input format, every option, no sign-up, and nothing added to the calendar file.
- Does it support recurring events?
- Not yet. Each row becomes one single event. For a weekly class or shift, put one row per occurrence — filling a date column down in a spreadsheet takes seconds.