A single, lightweight Resource that lets you import export data from InfoTables ↔︎ Excel / CSV through a ThingWorx FileRepositoryThing. Note that it does support building new workbooks, as well as appending new sheets to existing.
1. Installation #
- Download the extension (
.zip) and import it through Composer ▸ Import/Export ▸ Extensions . - Note that if you are updating from a previous version, restarting ThingWorx Foundation is required.
❗Minimum platform : ThingWorx 9.7, Java 21+.
2. Service reference #
| Service | Direction | Purpose |
| ExcelToInfoTable | Excel ➜ InfoTable | Load an entire sheet. |
| ExcelToInfoTableWithRange | Excel ➜ InfoTable | Load a row/column slice, supports open-ended ranges (A2:C*). |
| InfoTableToExcel | InfoTable ➜ Excel | Create a new workbook or add / replace a sheet in an existing one. |
| InfoTableToCsv | InfoTable ➜ CSV | Write UTF-8 CSV (optional header). |
2.1. Common parameters #
| Name | Type | Notes |
| repository | THINGNAME | Must reference a FileRepositoryThing. |
| filePath | STRING | Path inside the repository root (reports/2025/sales.xlsx). |
| sheet / sheetName | STRING | Target sheet (case-sensitive like Excel). |
| dataShape | INFOTABLE | Only for import: an empty InfoTable with the right DataShape. |
2.2. Excel ➜ InfoTable #
ExcelToInfoTable
JavaScript
var table = Resources.InfoTableImportExportUtilities.ExcelToInfoTable({
repository: "MyRepo",
filePath: "staging/inventory.xlsx",
dataShape: DataShapes.InventoryShape.CreateValues(), // empty
sheet: "2025-Q1"
});ExcelToInfoTableWithRange Range grammar
A2:C10– explicit rows.A2:C– up to last used row.A2:C*– same as above, a bit clearer.A2– single column (A) from row 2 to last row.
JavaScript
var slice = Resources.InfoTableImportExportUtilities.ExcelToInfoTableWithRange({
repository: "MyRepo",
filePath: "staging/inventory.xlsx",
dataShape: DataShapes.InventoryShape.CreateValues(),
range: "A2:C*", // dynamic
sheet: "2025-Q1"
});2.3. InfoTable ➜ Excel #
Creates exports/inventory.xlsx if it doesn’t exist, or overwrites / adds the sheet.*
JavaScript
Resources.InfoTableImportExportUtilities.InfoTableToExcel({
infotable: Things.Warehouse.GetInventory(),
repository: "MyRepo",
filePath: "exports/inventory.xlsx",
sheetName: "Latest Snapshot"
});2.4. InfoTable ➜ CSV #
JavaScript
Resources.InfoTableImportExportUtilities.InfoTableToCsv({
infotable: Things.Warehouse.GetInventory(),
repository: "MyRepo",
filePath: "exports/inventory.csv",
withHeader: true // default = true
});CSV is always UTF-8; directories are created automatically.