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.5, Java 11.
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.
Changelog #
v2.1.1 – 19.08.2026 #
- Resolve compatibility with Thingworx versions running on Java 11 (e.g. Thingworx 9.5)
- Fixed compatibility with thingworx 10.1
- Resolve an issue where new sheets could not be added to an existing workbook due to a file permission error