The workbook can be a standard *xlsx or an *xlsm.
Row indentation and grouping do not impact import.
Contains a 'Project' worksheet
Formulas: These are not safe on all cells, especially date values. If formulas are used, some values may be imported incorrectly/not at all. Not all formulas will fail, but many do. The more complex the formula, the more likely to fail import.
Number formatting: It matters, mainly for dates.
Range name: Cell A2 must be defined as 'FieldExportTarget' as a sheet-specific named range. Warning: the row at this range is NOT read; do NOT include data in this row.
Data to the right of the comment column is ignored.
Row 1 (Header) expected cell contents; however, the labels do NOT matter; they are ignored during import.
Column A: <blank>
Column B: Field (* required)
Column C: *
Column D: Value
Column E: Unit/Curr
Column F: Comment
All other rows (starting after the range name row).
Column B: <valid and unique CPH field name>
Column C: <ignored>
Column D: <the value>
Column E: <unit or currency code when appropriate>
Column F: <comments>
Duplicate field names (column B) are NOT allowed.
Rows without a field name value (column B) are ignored.
Gaps, as in blank rows, are acceptable between project field rows.
Contains an 'Item' worksheet
Formulas: They mainly work, but when unknown failures occur, try a test import after copying and using the "paste special -> values only" for the entire Item worksheet to test around formula-related errors. As with the project sheet, the more complex the formula, the more likely the import is to ignore the cell.
Number formatting: It appears to be ignored, but I expect it remains an issue with dates if included as item fields.
Range name: Cell A1 must be defined as 'ItemExportTarget' as a sheet-specific named range. Data should appear after row 1.
Data to the right of the last column value in row 1 is NOT ignored. All columns with data should have a label in row 1 except for unit or currency code companion columns.
All row 1 headers should be valid CPH field names, but CPH will attempt to import all data on the worksheet - using the row 1 label as the field name. Best practices require any cell content should have a row 1 header unless it is companion data for a quantity, currency, or cost field. If content exists in a cell that does not have a header and is not in a companion column, the import will fail.
Quantity fields should have a unit column immediately to the right of their value column. The row 1 cell for that unit column should be blank. If the unit column has a value in row 1, it will import as a separate field and the quantity's unit is blank.
Currency and cost fields can optionally have a currency code column to the immediate right of the field value column. The row 1 cell for that currency code column should be blank. If the currency code column has a value in row 1, then it will import as a separate field and the value's currency code defaults to the project's currency code.
Duplicate row 1 column header names are NOT allowed.
When the 'RowLevel' technique is used, it should be the first column and NOT utilize a formula to calculate its cell value. Note that when using 'RowLevel', a value of 0 means to import; all other values force an ignore. Ideally, every row should have a value in the 'RowLevel' column; blanks are considered a non-zero value and are skipped, but that appears inconsistent.
Gaps, as in blank rows, are acceptable between item data rows.
Warning: rows without a description value are NOT imported. However, unless utilizing the 'RowLevel' technique, if there is a description in the row, CPH will attempt to import that row, even if the data in the other columns is invalid.