Skip to main content
On this page

Importing Data

When a job has 30 or more pieces, entering them one by one is slow and easy to get wrong. CutOptim supports two bulk import methods that let you bring a full cut list into the app in seconds — whether your data lives in Excel, Google Sheets, or a CSV file exported from a design program.

  • Paste works for both the Stock table and the Parts table, in all three modes (2D panels, 1D linear, and wood).
  • CSV file import is available on the Parts table (2D, 1D, and wood) — under the CSV ⌄ dropdown in each Parts section header.

Both methods are available on all plans, including Free.


Method 1: Paste from Excel or Google Sheets

This is the fastest path from a spreadsheet into CutOptim. There is no file to export — just copy, paste, and go.

  1. 1

    Open your spreadsheet

    Open the Excel workbook, Google Sheet, or LibreOffice Calc file that contains your cut list or stock list.

  2. 2

    Select the data range

    Select the cells containing your data, in the expected order (Name, Width, Height, Qty for 2D; Name, Length, Qty for 1D; Name, Qty, Width, Height, Length for wood). You can include the header row — CutOptim recognises it in every mode and skips it. Rows with a missing required dimension are reported and skipped rather than guessed at.

  3. 3

    Copy to clipboard

    Press **Ctrl+C** (or **Cmd+C** on Mac) to copy. The cells are now on your clipboard as tab-separated values.

  4. 4

    Paste into CutOptim

    In the **Stock** or **Parts** section for your mode, click the **Paste** button in the section header — or click the dashed paste box under the header and press **Ctrl+V**. The rows are read and added to the table.

  5. 5

    Confirm the unit (wood Parts only)

    Pasting **wood into the Parts table** opens a short dialog with a preview asking which unit your numbers are in (mm, cm, or inch). Pick the source unit and confirm — the values are converted to your current working unit. Everything else — 2D, 1D, and **wood pasted into the Stock table** — is added straight away with no dialog; Stock wood is read in your current working unit, so set the unit before you paste.

This method works with any spreadsheet application that copies tab-separated values to the clipboard: Microsoft Excel, Google Sheets, LibreOffice Calc, Apple Numbers, and most other desktop spreadsheet tools. No special export step is needed.

How columns are read

Paste maps columns by position, from left to right. A header row is recognised and skipped automatically (CutOptim looks for words like Name/Név, Qty/Darab, Width/Sz, Height/M, Length/Hossz).

ModeColumn order
2D panelsName (optional), Width, Height, Quantity
1D linearName (optional), Length, Quantity
WoodName (optional), Quantity, Width, Height, Length

If you leave out the Name column, start the row with the first dimension — CutOptim assigns an automatic label. When pasting into the Stock table in 2D or 1D mode, the name is ignored (stock rows are identified by size); wood stock keeps the name.


Method 2: Import a CSV File

If your cut list is exported as a CSV from a design program, CAD tool, or ERP system, you can import it directly into the Parts table. There is no upload — the file is read in your browser.

New to the format? Open the CSV ⌄ dropdown in the Parts section header and choose Template to download a ready-made .csv with the correct columns and an example row — fill it in and import it back.

  1. 1

    Prepare the CSV

    Save your parts as a `.csv` file with the columns in the exact order for your mode (see the reference below). An optional header row is fine — CutOptim detects and skips it.

  2. 2

    Click the CSV button

    In the **Parts** section for your mode (2D, 1D, or Wood), open the **CSV ⌄** dropdown in the section header and choose **Import CSV**. A file picker opens.

  3. 3

    Choose your file

    Select the `.csv` file from your computer. It is read immediately — nothing is sent to a server — and the parts are added to the Parts table.

  4. 4

    Confirm the unit (wood only)

    A **wood** CSV opens the same unit-confirmation dialog as paste: preview the rows, choose whether the numbers are in mm, cm, or inch, and confirm. 2D and 1D CSV rows are added directly.

CSV import adds the rows to whatever is already in the Parts table — it does not clear it first. Clear the table beforehand if you want only the imported rows.


CSV Format Reference

CSV import populates the Parts table. If your file has a header row, columns are matched by name (so you can include only the columns you need, in any order, and add optional ones); without a header they are read by position in the order below. Dimensions are in your current working unit (millimetres by default), except wood, where you choose the source unit on import.

2D Parts (panels)

PositionColumnRequiredDescription
1NameYesLabel for this piece, e.g. Side Panel (may be left blank, but the field must be present)
2WidthYesPiece width
3HeightYesPiece height
4QuantityYesNumber of identical pieces
5RotatableOptional0 keeps the orientation fixed; any other value (or leaving the column out) allows 90° rotation
6Edge bandingOptional (Pro)A code of edge initials for the banded sides — Top, Right, Bottom, Left — e.g. TRBL for all four, TR for top + right, blank for none. Applied only on a Pro plan; ignored otherwise
7Price/pcOptionalExtra cost per finished piece (machining, edge banding…). Adds to the job cost; never shown on a client quotation
8Selling priceOptionalWhat you charge the customer per finished piece. Used when a quotation is built from product prices

Example: Side Panel,600,400,4,1

1D Parts (linear pieces)

PositionColumnRequiredDescription
1NameYesLabel for this piece (may be blank)
2LengthYesPiece length
3QuantityYesNumber of identical pieces
4Price/pcOptionalExtra cost per finished piece
5Selling priceOptionalCharge per finished piece

Example: Rail,1200,6

Wood Parts (length × cross-section)

PositionColumnRequiredDescription
1NameYesLabel for this part (may be blank)
2QuantityYesNumber of identical parts
3WidthYesCross-section width
4HeightYesCross-section height
5LengthYesPart length
6Price/pcOptionalExtra cost per finished part
7Selling priceOptionalCharge per finished part

Example: Leg,4,50,50,700

Use one unit throughout a file. For 2D and 1D the numbers are taken in your current CutOptim unit, so switch the app to the right unit before importing. For wood you pick the source unit in the import dialog, and CutOptim converts for you.

Commas, semicolons or tabs — all three work

You do not have to convert your file. CutOptim looks at the first line and picks whichever of comma, semicolon or tab it finds most of, then uses that for the whole file. This matters if you are on a European Windows locale, where Excel’s “CSV” is usually semicolon-separated — save it and import it as is.

Quoted fields are handled properly, so a name containing the separator ("Shelf, long") survives the trip.

The price columns and header rows

The two price columns are optional everywhere, but there is one thing to know:

For 2D and 1D, the price columns are only read when your file has a recognised header row. A headerless 2D or 1D file is read purely by position, and prices in it are ignored. Wood reads them positionally too (columns 6 and 7). If you are importing prices, keep the header row — the downloadable Template already has one.

A column named plainly Price maps to the cost column, not the selling price. For the selling price use a header containing sell or selling.


Preparing Your Spreadsheet

A few habits make imports go smoothly every time:

  • A header row is optional. Both paste and CSV import detect and skip a header row, so you can keep your column titles in either method.
  • Column order or names. Paste reads columns by position; CSV import matches them by header name when a header is present, and by position otherwise. Extra columns after the last needed one are ignored.
  • Use whole numbers for quantity. Fractional quantities are not supported. Round up if a job calls for 2.5 sheets — enter 3.
  • Use one unit throughout. Mixing units in a column (some values in mm, some in cm) produces wrong results. Convert the sheet to one unit first (for wood, just tell CutOptim the unit on import).
  • Labels can contain spaces and special characters. Left Side Panel – Oak is a valid label. In a CSV file, wrap a label in double quotes if it contains a comma.
  • Empty rows are skipped. Blank lines between data groups do not cause errors.

After Importing

Imported rows appear in the Parts or Stock table exactly as if you had typed them. From here:

  • Review each row before running. Check that dimensions look right and quantities match your job.
  • Edit individual cells by clicking on them. If a value came in wrong, click the cell and correct it.
  • Add or remove rows as normal — imported rows behave identically to manually entered ones.
  • Run the optimization when you are satisfied. Click Run optimizer or press Ctrl+Enter.

Both paste and CSV import add to the rows already in the table. To replace the current contents, remove the existing rows first, then import.

FAQ

Can I paste data from Google Sheets into CutOptim?
Yes. Copy the data range in Google Sheets with Ctrl+C, then in CutOptim click the Paste button in the header of the Stock or Parts section (or click the paste box under the header and press Ctrl+V). Google Sheets copies tab-separated values to the clipboard, which CutOptim recognises automatically.
What column order does CutOptim expect when pasting from a spreadsheet?
Columns are read by position. For 2D: Name, Width, Height, Quantity. For 1D linear: Name, Length, Quantity. For wood: Name, Quantity, Width, Height, Length. The Name column is optional. If your spreadsheet has a header row, CutOptim detects and skips it automatically.
Does importing data cost credits or require a paid plan?
No. CSV import and spreadsheet paste are available on all plans, including Free. There is no cap on how many rows you can import — the Free plan limit is 3 optimizations per month, and an import of any size still counts as a single run.
My CSV uses semicolons instead of commas. Do I need to convert it?
No. CutOptim reads the first line of the file and picks whichever of comma, semicolon or tab it finds most of, then uses that separator for the whole file. This is what Excel produces on most European Windows locales, so you can save and import it as is. Quoted fields are handled properly, so a name containing the separator survives.
Can I import cost and selling prices with my parts?
Yes. The parts CSV has two optional trailing columns — Price/pc (extra cost per finished piece) and Selling price (what you charge per piece). One catch: for 2D and 1D they are only read when the file has a recognised header row; a headerless 2D or 1D file is read by position and prices in it are ignored. Wood reads them positionally too. The downloadable Template already includes the header.
My spreadsheet has extra columns that CutOptim doesn't need. Will it fail?
No. CutOptim reads the columns in the fixed order shown, and ignores any extra columns after the last one it needs. Keep the recognised columns in the correct order and you can leave trailing fields (cost codes, material type, finish) in place.
Can I import my stock (sheets, bars) from a CSV file?
The CSV file button is on the Parts table only. To bulk-fill the Stock table, paste from a spreadsheet (works for stock too), or use the Material inventory to save and reuse your standard sheet and bar sizes.
I corrected some dimensions in my spreadsheet. Can I paste or re-import to update the rows already in the table?
No — and doing so will not update anything. Paste and CSV import only ever ADD rows; they never match, replace, or update what is already there. Re-importing a corrected cut list leaves you with both versions of every piece, and the optimizer will cut all of them. To update existing rows, either edit the cells in place, or delete the current rows first (the ✕ button on each row) and then import.
How do I change the width or height of a piece I already entered?
Click the Width or Height cell in the Parts table, type the new value, and press Tab or Enter to confirm. Then run the optimization again to see the new layout. Do not paste or re-import to change a dimension — that adds a duplicate piece rather than updating the original.

Last updated: July 20, 2026