# Excel Import — add model attributes from spreadsheets

Adds or updates attributes on 3D and IntelliPID objects by matching workbook rows to existing attributes.

## Prepare a workbook

Use `.xlsx` files. In the `Import` sheet, row 1 supplies headers; columns A and B identify the attribute and value to match. From column C onward, headers are destination attribute names and cells are the values to write.

| Match attribute | Match value | Maintenance Zone | Owner |
| --- | --- | --- | --- |
| Name | P-101 | Zone A | Operations |
| Name | V-* | Zone B | Maintenance |

The first two column positions are significant; their header wording is not used for matching. `*` enables wildcard matching. Empty destination cells are skipped, so they do not clear existing values. Matching values can overwrite existing attributes.

For IntelliPID, use the same layout in `IntelliPID_Import`. Include an `Import` sheet even for an IntelliPID-only workbook: the current reader skips the workbook if the 3D sheet is absent.

## Run the import

1. Install the plugin and adapt [UPVBPluginExcelImport.xml](UPVBPluginExcelImport/UPVBPluginExcelImport/UPVBPluginExcelImport.xml).
2. Put workbooks in an `ExcelImport` folder beside the first input session. When that folder exists, it overrides the configured folder and uses the sheet names above.
3. Alternatively, set `Folder`, `SheetName` and `SheetNameIntelliPID` in the configuration. Place the configuration beside the first session or in the installed plugin/helper directory.
4. Close the workbooks, export, and inspect a known matched object's attributes.

Files starting with `~` are skipped. Avoid competing rows or files that assign different values to the same object and attribute. Check the logged folder, sheet names and matching attributes if data is missing. `Threads` controls concurrency; `Debug` enables more logging.

[All solutions](UniversalPlantViewer.SDK.md)
