Convert Excel to ICS
Koyomi opens .xlsx and .xls workbooks directly — no saving as CSV first — and turns the rows into a standard .ics calendar file that Google Calendar, Outlook, Apple Calendar and every other calendar app can import.
Shift rosters are the classic case: an ops or HR spreadsheet with one row per shift, a date column, a start and end time, and a name. Excel stores those dates as real date cells or, after a copy-paste, as serial numbers like 46266. Koyomi reads both correctly, so you don't get every shift landing in January 1900. Workbooks with several sheets show a sheet picker.
Before you download there's a preview of every event, so you can check the roster parsed the way you expect. Everything runs locally in the browser — the workbook is never uploaded, and there is no row limit.
How to convert an Excel spreadsheet to ICS
- Make row 1 the header row. Delete any title banner, merged heading or blank rows above the column names. Koyomi decides whether the first row is a header by looking at that row alone, and a banner in row 1 stops the real headers from being recognized. A "First row is a header" checkbox is there if the guess is wrong.
- Keep dates as real date cells. A cell Excel right-aligns and formats as a date is stored as a number and reads correctly however it is displayed. Dates typed as text (left-aligned, often with a green triangle) also parse if the text is a recognizable date. Ranges like "Sep 1-3" in a single cell do not.
- Put times in their own column, or in a real date-time cell. Excel time cells (8:00, 14:30, 9:00 AM) are read as fractions of a day. A date-time cell that is exactly midnight carries no time as far as Excel is concerned and becomes an all-day event; if a shift really starts at 00:00, give it a separate Start Time column.
- Choose the sheet and the timezone. A workbook with several tabs shows a sheet picker, and only the selected tab converts. Set the timezone to the zone the shifts happen in, which isn't necessarily the one you're sitting in.
- Read the preview before you download. Every parsed event is listed, and skipped rows say why. In rosters the usual culprits are a totals row, a notes line under the table, or a date the parser didn't recognize.
Why Excel dates break calendar imports
Excel doesn't store dates. It stores a count of days since December 30, 1899, with a display format on top: 46266 is September 1, 2026. Save as CSV and that number becomes whatever your Windows regional format produces, which is how a day-first file ends up read month-first by the next tool in the chain.
Reading the workbook directly avoids the round trip. Koyomi asks the parser for cell dates rather than display strings, so a cell formatted as "1-Sep" with the year hidden, or as "Tuesday, 1 September 2026", still gives the right day. Serial numbers left as plain numbers (after a paste-values, for example) are recognized as dates when they fall in a plausible range, roughly 1954 to 2119.
What can't be recovered is a date Excel never understood: text like "1st-2nd Sept" or "TBC" in a date cell. Those rows are skipped, with the offending text quoted in the warning so you can find them in the sheet.
Shift rosters: what the calendar will show
A roster row usually has a date, a start, an end, and a person or role. Map the person column to the title if the calendar is for a whole team; if it's for one person, filter the sheet to them first and use the role as the title. Location and Notes columns come along when present.
Night shifts that cross midnight need an End Date as well as an End Time. Without one, the end time is read on the same day, lands before the start, and the row falls back to the default duration with a warning in the preview. Split shifts are two rows.
Because the file holds plain events rather than a recurrence rule, editing one shift later in the calendar doesn't touch the others, which is what you want for a roster that gets swapped around.
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.
Outlook
- Outlook on the web / new Outlook: Calendar → Add calendar → Upload from file → pick the .ics and a destination calendar.
- Classic Outlook for Windows: File → Open & Export → Import/Export → Import an iCalendar (.ics) file.
- Choose Import (merge into your calendar) rather than Open as New, unless you want a separate calendar.
Apple Calendar
- Mac: double-click the .ics, or File → Import in Calendar, then pick the calendar to add to.
- iPhone / iPad: open the .ics from Files or Mail and tap Add All.
- Events added to an iCloud calendar sync to every device.
Read the guide
- How to add a CSV schedule to your Outlook calendar · 8 min read
Frequently asked questions
- Do I have to save my Excel file as CSV first?
- No. Drop the .xlsx or .xls straight in. Skipping the CSV step also avoids Excel rewriting your dates into the regional format on export.
- My workbook has several sheets. Which one is used?
- You pick. When a workbook has more than one sheet, Koyomi shows a sheet picker before parsing, and only the selected sheet becomes events.
- Excel shows my dates as numbers like 46266. Is that a problem?
- No. Those are Excel date serials, and Koyomi converts them to real dates. Formatted date cells, typed text dates and times written as 9:00 or 9am are all read too.
- Can one ICS file hold a whole month of shifts?
- Yes. One row becomes one event, and the file holds as many events as the sheet has rows. Calendar apps import the whole file into one calendar in a single step.
- Are hidden or filtered rows included?
- Yes. A filter only hides rows in Excel; the data is still in the sheet and every row converts. Delete the rows you don't want, or copy the visible rows to a new sheet and convert that.
- Do formulas work, for example an End Time calculated from Start Time?
- Yes, as long as the workbook was saved by Excel or another spreadsheet app, which stores the last calculated value alongside each formula. Koyomi reads that stored value; it doesn't recalculate anything.
- Which Excel formats are accepted?
- .xlsx, .xlsm and the older .xls, plus CSV and TSV. Password-protected workbooks can't be opened; remove the password and save a copy. Numbers and OpenDocument files aren't accepted directly, so export them to .xlsx or CSV first.
- 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.