Guide · Excel and CSV
1D Stock Cutting Optimizer from Excel: Paste, Import, Export
Keep the cut list where it already is. Paste rows from Excel or import a CSV, TSV or job JSON, check what was read, and send the finished plan back to Excel as three CSV files.
Template
The column layout to copy
| Part ID | Length | Qty | Left angle | Right angle | Material |
|---|---|---|---|---|---|
| UP | 1660 | 4 | 90 | 90 | 4040 T-slot |
| W2 | 1500 | 16 | 45 | 45 | Window profile 60 |
- Arrange the columns. Part ID, Length, Qty, Left angle, Right angle, Material. Only Length is required; a header row is optional.
- Copy the rows. Select the header and data rows in Excel or Google Sheets and copy them.
- Paste into the planner. Open Paste from Excel on the planner, paste, and choose Replace cut list or Append rows.
- Check the import line. The status line reports rows, parts, delimiter and units before you rely on the plan.
Headers
Header names the importer recognises
| Column | Accepted header names (any case) |
|---|---|
| Part ID | part id · part · id · label · mark · piece · piece id · part no · part number · item |
| Length | length · len · cut length · long point · long-point length · size · l · lp length |
| Qty | qty · quantity · pcs · pieces · count · qnty · no of pieces · number |
| Left angle | left angle · left · angle left · left miter · left end · end 1 · angle 1 · a1 |
| Right angle | right angle · right · angle right · right miter · right end · end 2 · angle 2 · a2 |
| Material | material · profile · stock · section · mat · alloy |
| Name | name · description · desc · note · notes |
Header matching ignores case, extra spaces, underscores and anything in brackets, so Cut Length, cut_length and CUT LENGTH (mm) are the same column. Without a header row, columns are read in template order: ID, length, quantity, left angle, right angle, material. A list with no length column at all is refused, and your current cut list stays as it was.
Detection
Delimiters, header rows and units
- Delimiter
- Any tab in the first 8 lines means tab-separated (what Excel copies). Otherwise semicolon, if it appears at least as often as comma (European CSV), else comma. Cells in double quotes may contain the delimiter.
- Header row
- The first row is a header when any cell matches a header name, or when none of its cells reads as a length.
- Units
- A unit in the header or the cell wins over the page unit: Length (mm), 1660 mm, 47 3/8", 20 ft. Bare numbers use the unit selected on the planner.
- Quantities
- Whole numbers only. A blank quantity counts as 1; a row with an unreadable length is skipped and named in the status line.
A mixed example: Mark;Cut length;Pcs with rows A;1660 mm;4 and B;47 3/8";2 is read as 2 rows (6 parts), semicolon-separated, header row found; the second length becomes 1203.3 mm in a metric job.
Files
CSV, TSV and job JSON import rules
Drop a file on the import card or click it to browse. Accepted: .csv, .tsv, .txt and .json up to 5 MB (5,242,880 bytes). The file is read by your browser and never uploaded. Save an .xlsx workbook as CSV UTF-8 first; this importer does not open .xlsx, PDF tables or scanned drawings.
| You drop | The planner says |
|---|---|
| A photo or PDF (photo.png) | “photo.png” is not a supported file. Use .csv, .tsv, .txt or .json (save Excel sheets as CSV). |
| A 6 MB export (big.csv) | “big.csv” is 5.7 MB; the limit is 5 MB (5,242,880 bytes). |
| An empty file (empty.csv) | “empty.csv” is empty. |
| Rows without a length column | No Length column found (headers seen: Part, Qty). Add a column named Length (or Len, Cut length) with the long-point length of each part. Nothing was changed. |
| A PDF renamed to .csv | This file is not a text cut list (it contains binary data). Save the sheet as CSV (comma or tab separated) and try again. |
| A job JSON from a future version | This job JSON is not valid: schemaVersion must be 1. |
A job JSON holds the whole job: stock, offcut inventory, settings and parts. It is the same shape the Pro export routes accept, so a saved job always re-opens exactly. Limits: 50 stock rows, 200 offcut rows, 500 part rows and 5,000 pieces per job.
{
"schemaVersion": 1,
"jobName": "Machine frame",
"units": "mm",
"settings": {
"kerf": 3,
"trimLeft": 10,
"trimRight": 10,
"remnantMin": 300,
"profileWidth": 40,
"miterFlip": false,
"objective": "min-cost",
"useOffcutsFirst": false
},
"stocks": [
{
"material": "",
"length": 6000,
"qty": null,
"price": 96
}
],
"offcuts": [],
"parts": [
{
"label": "UP",
"length": 1660,
"qty": 4,
"leftAngle": 90,
"rightAngle": 90,
"material": ""
},
{
"label": "RL",
"length": 1040,
"qty": 6,
"leftAngle": 90,
"rightAngle": 90,
"material": ""
}
]
}
Back to Excel
What the Pro CSV pack returns
| File | Columns | Contents |
|---|---|---|
| 01_purchasing_bom.csv | material, stock_length, unit, qty, unit_price, line_total, currency | One line per material and stock length, with a TOTAL row |
| 02_saw_cut_schedule.csv | bar_no, stock_length, cut_seq, piece_id, label, cut_length, left_angle, right_angle, flipped, stop_position, unit, bar_yield_pct | Every cut in saw order with its stop position |
| 03_reusable_remnants.csv | remnant_id, material, bar_no, length, unit, status, barcode | One line per bar end: reusable with a barcode, or scrap |
Google Sheets and Apple Numbers copy cells as tab-separated text exactly like Excel, so the same paste works. LibreOffice may ask for a separator when saving CSV; comma or semicolon are both fine. Keep one part per row, and never merge cells in the list you paste: merged cells copy as blanks, and a row whose length cell is blank is skipped with a message.
The free TXT summary lists the totals and the first five bars; the CSV pack lists every bar and every cut. Open 02_saw_cut_schedule.csv and filter by bar_no to print one bar per saw station, or sort by piece_id to check that every part of the original list was planned.
Ready? Paste your list into the 1D nesting optimizer, or start from a preset on the aluminum, feet-and-inch or rebar pages.