Skip to content

Import a WBS from Excel or CSV

All plansOwner, Admin, or Portfolio Manager

Plenty of real project plans live in a spreadsheet: a Nivel or Level column, a dotted WBS code (1.2.3), a task per row. If that describes your file, you do not need Microsoft Project to get it into Onplana. Upload the .xlsx or .csv directly and the importer rebuilds the tree, phases, work packages and subtasks, exactly as your sheet describes it.

Your column Becomes
Task Name / Nombre de la Tarea / Summary / Card Name the task title (the only required column)
Level / Nivel / Outline Level the task’s depth in the tree
WBS / ID (1, 1.1, 1.1.1) depth and parent, from the code itself
Parent / Parent WBS an explicit parent reference
Start, Finish / Fecha Inicio, Fecha Fin task dates
% Complete / % Completado progress (50% or 0.5 both work)
Status / Estado the task’s status (see below)
Completed At / Completion Date marks the task done and records when
Section / List Name / Group / Epic Name the task’s epic (see below)
Timeline / Date Range (2026-10-01 - 2026-10-14) start and finish, where the row has no Start or Finish of its own
Duration / Duración (5d, 2w, 8h) estimated hours
Owner / Assignee / Person / Members / Responsable the assignee, matched by email when the cell contains one
Milestone / Hito the milestone flag
Notes / Descripción the task description

Headers are matched case-, accent- and punctuation-insensitively, in English and Spanish. Anything Onplana cannot match is simply ignored, and you can re-point any column by hand before importing.

A Status column sets each task’s status when it uses the usual words: Done, Complete, Closed become Done; In progress, Doing, Working on it become In Progress; Review, In review, QA become Review; Blocked, Stuck become Blocked; To do, Open, Backlog, Not started become To Do. A Completed At date always marks a task done.

Words that have no matching status, such as On hold or Cancelled, are not guessed at: those tasks take their status from % complete, and the preview lists the values it did not recognise. If most of a Status column is unrecognisable (Microsoft Project’s On Schedule and Late indicators, for example), the column is set aside entirely and the preview says so.

Coming from Asana, Jira, Trello, Monday or ClickUp

Section titled “Coming from Asana, Jira, Trello, Monday or ClickUp”

Export your project to CSV or Excel from that tool and upload the file as it is. The task name, assignee, due date, status and completion columns those exports use are recognised without renaming anything, and the column step says which tool the file looks like it came from.

A Monday board exports to Excel with the board name and each group’s name in rows above the column headers, so tidy the sheet before you upload it: delete every row above the first header row (the board name, the blank row and the first group’s name), then delete the group-name and header rows that repeat before each later group. The sheet should have one header row and then your items. Name becomes the task title, Person the assignee and Status the status, and the Timeline column, which holds a start and finish in one cell, is split into the two.

A Smartsheet sheet imports the same way: export it to Microsoft Excel (or save it as CSV) and upload the file. Its Task Name, Start, Finish, Duration, Predecessors, % Complete, Assigned To and Status columns are all read, and the row numbers in Predecessors become real dependencies. Smartsheet names columns after your sheet rather than a fixed set, so the column step does not say which tool the file came from; check the matches there if you renamed any column.

Your sections, lists or groups (Asana’s Section/Column, Trello’s List Name, or a Group or Epic Name column) become epics, with each task filed under its own. A list named like a status, such as Trello’s To Do, Doing and Done, sets the task’s status instead of becoming an epic. Epics are created on every plan; on a plan without the epics view they are kept and appear once your organization upgrades.

Spreadsheets do not carry an explicit outline the way Microsoft Project files do, so Onplana looks for the strongest signal your sheet actually has, in this order:

  1. A level column, 1 for phases, 2 for work packages, 3 for subtasks.
  2. Dotted WBS codes, 1.1.2 sits under 1.1, which sits under 1.
  3. A parent column, each row naming its parent’s WBS code or id.
  4. Indentation, leading spaces in the task name, which is what you get when a Microsoft Project plan is pasted into Excel.

If the sheet carries both a level column and WBS codes (most real WBS exports do), they are cross-checked, and any disagreement is reported with the exact row number rather than silently resolved. A sheet with none of these imports as a flat task list, and the preview says so.

  1. Open Import (Settings group of the sidebar, or go to /migrate). Under Where is your plan today?, Upload a file is already selected.

  2. Drag your .xlsx or .csv onto the drop area, or click it to browse, then press Upload and review. Semicolon-separated CSVs (the default from Excel in Spanish locales) and tab-separated files are detected automatically.

  3. Review the Spreadsheet columns card at the top of the Field Mapping step. It shows which of your columns Onplana matched to which field, with a sample value from your file next to each guess. Re-point anything that is wrong, or set a column to (ignore), then press Re-read with these columns.

  4. Continue to the Preview. Every repair the importer made, a skipped outline level, a duplicate WBS code, an orphaned parent reference, is listed under Notes from reading your file with its Excel row number, so nothing is quietly reinterpreted.

  5. Match resources (owners found in your sheet can be invited or mapped to existing members, exactly as with a Microsoft Project import), then press Continue to Import and Start Import.

  6. Your plan is here shows how the plan landed: how many work items arrived, and how many are assigned, have a due date and are already done. If people named in your file are not in Onplana yet, press Invite or match them to invite them by email or match them to existing members. Their tasks assign to them as soon as they accept or are matched.

Every imported project gains an Import Cleanup tab with AI-suggested fixes for anything the importer could not resolve, such as an unmatched owner or a column that didn’t map; see the Import Cleanup tab for how it works.

If an import landed in the wrong place, or the file was not the one you meant, you can take it back for 24 hours.

  1. Select Undo on the import’s last screen, or open Import, go to the History tab and select Undo on the import’s row.

  2. Read what will go and confirm.

What the undo removes depends on where the import went:

  • A new project. The whole project goes to the Recycle Bin, and you can restore it from there. This needs permission to delete the project.
  • An existing project. Only what the file added goes: its tasks, the epics and sprints it created, the risks the import found and its fidelity report. Everything that was already in the project stays, including an epic the file only joined. If the import pushed the project’s end date out, the old date comes back, unless someone has changed it since.

People added to the project and invitations already sent are not taken back. Only the person who ran the import can undo it, and only once; the row then reads Undone.

An undo into an existing project is refused, and removes nothing, once someone has worked on the imported tasks: time logged on them by anyone, or comments, edits, attachments, collaborators or subtasks added by someone other than you. Move that work first, or delete the tasks yourself. Your own comments and edits go with the import.

The same undo works for an import started from the AI assistant (see Attach a plan file), and for Microsoft Project and other files imported through the wizard.

My sheet has hundreds of rows with the same four subtasks under every work package. Will that import? Yes, and in one pass. The importer handles the whole tree at once; there is no per-row or per-batch limit below the overall 20,000-task ceiling.

What about formulas? Cell values are imported, formulas are never evaluated. A cell whose formula has no saved value (for example a reference to another workbook) imports as blank, with a warning.

Do task dependencies import? Yes. A Predecessors column that names another row by its WBS code or its row number becomes a real dependency, including the link type and lag when the cell gives them (4SS+2d). A reference that matches no row is skipped and counted in the preview.

My accented characters look wrong. Re-save the file as CSV UTF-8 in Excel and re-upload. Onplana falls back to Latin-1 automatically for older Excel CSV exports and warns when it had to, but UTF-8 is always the safer export.

Is this available on the Free plan? Yes. Importing, including spreadsheet import, is available on every plan.