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
Open your spreadsheet
Open the Excel workbook, Google Sheet, or LibreOffice Calc file that contains your cut list or stock list.
- 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
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
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
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).
| Mode | Column order |
|---|---|
| 2D panels | Name (optional), Width, Height, Quantity |
| 1D linear | Name (optional), Length, Quantity |
| Wood | Name (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
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
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
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
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)
| Position | Column | Required | Description |
|---|---|---|---|
| 1 | Name | Yes | Label for this piece, e.g. Side Panel (may be left blank, but the field must be present) |
| 2 | Width | Yes | Piece width |
| 3 | Height | Yes | Piece height |
| 4 | Quantity | Yes | Number of identical pieces |
| 5 | Rotatable | Optional | 0 keeps the orientation fixed; any other value (or leaving the column out) allows 90° rotation |
| 6 | Edge banding | Optional (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 |
| 7 | Price/pc | Optional | Extra cost per finished piece (machining, edge banding…). Adds to the job cost; never shown on a client quotation |
| 8 | Selling price | Optional | What 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)
| Position | Column | Required | Description |
|---|---|---|---|
| 1 | Name | Yes | Label for this piece (may be blank) |
| 2 | Length | Yes | Piece length |
| 3 | Quantity | Yes | Number of identical pieces |
| 4 | Price/pc | Optional | Extra cost per finished piece |
| 5 | Selling price | Optional | Charge per finished piece |
Example: Rail,1200,6
Wood Parts (length × cross-section)
| Position | Column | Required | Description |
|---|---|---|---|
| 1 | Name | Yes | Label for this part (may be blank) |
| 2 | Quantity | Yes | Number of identical parts |
| 3 | Width | Yes | Cross-section width |
| 4 | Height | Yes | Cross-section height |
| 5 | Length | Yes | Part length |
| 6 | Price/pc | Optional | Extra cost per finished part |
| 7 | Selling price | Optional | Charge 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 – Oakis 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.