Skip to main content
An Excel task-pane add-in connects a workbook to the Unsiloed API. Its JavaScript makes API requests, and Office.js reads and writes worksheet cells. In this guide, we’ll build a local add-in that checks your Unsiloed API key and writes the organization name into a new worksheet. This gives us a working connection to extend with document-processing workflows.
Looking to extract data from an .xls or .xlsx workbook instead? You don’t need an add-in. Upload the workbook to POST /parse/excel, then poll GET /parse/{job_id} until the job succeeds. Each table segment includes cell_references that trace it back to its sheet and cell range. The Excel parsing guide has upload examples and configuration options.

How Unsiloed Works with Excel

The connection follows this path: Excel → Task-Pane Add-in → Local Server → Unsiloed API → Add-in → Excel The add-in is a web page loaded beside the workbook. An XML manifest tells Excel where to load it and requests workbook access. We’ll use Vite to serve the page with a trusted local HTTPS certificate. Vite also forwards the connection check to Unsiloed, because the usage endpoint blocks direct browser requests from localhost.

Requirements for the Excel Integration

Before you start, gather: The steps below use Chrome on macOS and Excel for the web. No Microsoft Office desktop installation is needed.

Create the Local Add-in

We’ll create three files: the server configuration, the task-pane page, and the manifest. Open Terminal and run:
Create vite.config.mjs in that directory:
vite.config.mjs
The Vite proxy forwards the request and its api-key header to the read-only organization usage endpoint. The key isn’t stored in this configuration. Document-processing workflows use the separate API at prod.visionapi.unsiloed.ai, which the cookbook calls directly from the task pane. The strictPort setting makes Vite stop with an error if port 3000 is busy, instead of moving to a port the manifest doesn’t point to.

Add the Connection Check

Create index.html beside the configuration file:
index.html
The button becomes available once Office.js connects to Excel. After the API check succeeds, Excel.run queues a worksheet write and context.sync() applies it. Adding a sheet leaves existing worksheets untouched. B1 uses Excel’s text format, and names beginning with a formula-like prefix also receive a leading apostrophe to prevent Excel from interpreting them as formulas.

Register the Add-in with Excel

Create manifest.xml in the same directory:
manifest.xml
The manifest points to the local page and requests permission to create and write worksheets. It contains no API credentials.

Run and Verify the Connection

From unsiloed-excel-connection, run:
The certificate helper may ask for your macOS password to trust the localhost certificate. Keep Terminal open, then visit:
Confirm that the page opens without a certificate warning. Its message asks you to open it as an Excel add-in because it isn’t connected to a workbook yet.
1

Open the Add-ins menu

Open a blank workbook in Excel for the web. On the Home tab, click the Add-ins button (1), a grid icon near the right of the ribbon.
Excel for the web with a red numbered callout around the Add-ins button on the Home ribbon
In the panel that opens, click More Add-ins (2).
The Excel Add-ins panel with a red numbered callout around More Add-ins
Some accounts show More Settings instead of More Add-ins, and the next dialog shows Upload My Add-in directly. See the Microsoft sideloading guide if the menu differs. If custom uploads are disabled, ask your administrator or use a personal Microsoft account.
2

Upload the manifest

Open Manage My Add-ins and choose Upload My Add-in (3). The banner shown below refers to add-ins installed by an administrator; use the upload option for this local project.
The Office Add-ins dialog with Manage My Add-ins expanded and a red numbered callout around Upload My Add-in
Click Browse (4), select unsiloed-excel-connection/manifest.xml, and click Upload (5).
The Upload Add-in dialog with red numbered callouts around Browse and Upload
3

Check the connection

The Unsiloed Connection pane should open beside the workbook. If Chrome asks for local network access, click Allow so Excel can load localhost. Enter your API key and click Check connection.A new worksheet should show Unsiloed organization in A1 and your organization name in B1. The task pane should also confirm the connection. Each successful check creates a new sheet.
To reopen the pane later, choose Home → Add-ins and select Unsiloed Connection. Excel for the web keeps uploaded manifests in browser storage, so upload it again after clearing browser data or switching browsers. If Excel can’t load the pane, confirm that Vite is still running and that the localhost page opens without a certificate warning. If you blocked Chrome’s local network access prompt, set Local network access to Allow in the site settings for excel.cloud.microsoft, then reload the workbook. If the task pane shows HTTP 401, re-enter your API key. For other HTTP errors, check the Vite output in Terminal and try again. The key stays in the page’s memory and isn’t saved to the workbook or browser storage.

Add a Document-Processing Workflow

The connection is now ready for task-specific code. Use /parse to read a PDF or image’s existing tables, or /v2/extract to return fields defined by a JSON Schema. These workflows submit a job and poll for its result before writing cells.

Extract a Table from a Document

Build a task pane that uploads a document, polls the parse job, and writes the first table to a worksheet.

Extract Typed Fields

Return a predictable set of fields for fixed spreadsheet columns.
For a distributed add-in, host the page and API proxy on HTTPS and update the manifest URL. Vite’s proxy runs only during development. Use per-user authentication or a backend that keeps shared credentials out of browser code.