The Problem With Getting Sheet Data In and Out of GraphHopper
You have an Excel workbook full of delivery stops, depot coordinates, or field-service locations. GraphHopper can do something valuable with that data — optimize routes, compute driving distances, generate isochrones, geocode address lists. But the distance between "data in Excel" and "GraphHopper API result in Excel" is a developer problem, not a spreadsheet problem.
GraphHopper is built for spatial computation. But its output is JSON, and Excel doesn't speak JSON natively. The default path for anyone who isn't writing API calls is to describe the need to an engineer, wait, and paste the results back in by hand.
Below are the four approaches teams reach for. The first three all have a ceiling.
Method 1: Manual Copy-Paste
The starting point for most people. Export addresses as a CSV, run them through GraphHopper's API playground or a REST client, copy the results out of the response, and paste them back into the workbook.
For five addresses, you're done in fifteen minutes.
But logistics coordinators don't work with five addresses. They have 50 or 80 stops per run, multiple vehicle profiles, and a route that changes every day. Each manual pass means opening the API explorer, reformatting the address list, re-running the call, and extracting the right values from a nested JSON structure into the right cells. The third time someone renames a column in the sheet, the whole paste ritual breaks and nobody realizes it until the routes look wrong.
Method 2: Power Automate
Microsoft's Power Automate has HTTP action support, which means you can, in principle, build a flow that reads from an Excel worksheet, calls the GraphHopper API, and writes results back.
Before the setup details: do you know what an HTTP action is? What it means to parse a JSON response with a dynamic expression? What a bearer token header looks like? If those feel like a foreign language, this isn't your fastest path. Skip to Method 3 or 4.
If you're still here, the pieces are real. You build a flow triggered by a new row or a schedule, configure the HTTP action to call the GraphHopper endpoint, set your authentication header, parse the response body, and map output fields back to cells.
The structural ceiling is that Power Automate is row-level.
GraphHopper's Matrix API returns a full N×N grid in a single call. There's no clean model for that inside a row-by-row flow — you'd be firing one API call per row and assembling the grid yourself in the flow logic. That's fragile, slow, and expensive at volume.
You probably just need the optimized route for tomorrow's run. You probably haven't built a Power Automate HTTP flow before. So you paste the requirement into a ticket, it lands in a backlog, and you're still manually ordering the stops at 6 AM because the flow isn't done yet.
Method 3: The Previous Generation — Connector Add-Ons
Until recently, the best option for repeatable workbook ↔ mapping-API workflows was a category of add-ins that let you configure an API call against a named range. You specified the address column, tagged the output cells, saved the setup, and clicked Run.
That was a meaningful step above doing it all by hand. Configurations were reusable, output was consistent, and a non-developer could run a refresh without touching any code.
But every field still had to be mapped manually upfront, authentication had to be maintained, and conditional logic — skip rows where the address is blank, only include stops in Zone 3 — was your responsibility to build. The add-in executed the call; the operator still carried all the cognitive weight of configuring it. And the moment the worksheet structure changed, the saved config silently broke.
This is the previous generation. It worked, but it asked a lot of the operator.
The Easy Way: Using SheetXAI in Excel
There is a different approach entirely. SheetXAI is an AI agent that lives inside your Excel workbook. It reads the workbook, understands the layout of what you're looking at, and through its built-in GraphHopper integration it can call routing, geocoding, matrix, or optimization endpoints on your behalf. No field mapping, no flow configuration, no JSON parsing. You just describe the task.
Example 1: Optimize a delivery route before the driver leaves
Take the 18 delivery addresses in column A and use GraphHopper VRP to find the optimal driving order — write the ranked stop list back to column B
SheetXAI reads the address list, calls the GraphHopper Route Optimization API, and writes the ordered sequence back into column B — ranked from first stop to last.
Example 2: Geocode a workbook full of customer addresses
Geocode every address in column A using GraphHopper and write the latitude into column B and longitude into column C — process all rows
The pattern: instead of running addresses through a geocoder one by one and pasting results back, you describe the input, the computation, and the output destination in one prompt. SheetXAI handles the entire pass.
Try It
Get the 7-day free trial of SheetXAI and open any Excel workbook with delivery addresses, store locations, or customer coordinates, then ask it to run a route, build a matrix, or geocode the list. The GraphHopper integration is included in every SheetXAI plan.
More GraphHopper + Excel guides
Build a Driving Distance and Time Matrix From a Google Sheet
Compute driving distance and travel time between every depot–customer pair in your sheet and write the results back without touching a single API call manually.
Optimize a Delivery Route From Stops in a Google Sheet
Feed a list of delivery addresses into GraphHopper's VRP solver from your sheet and get back a ranked stop sequence before the driver leaves the warehouse.
Generate Drive-Time Isochrones for Store Locations in a Google Sheet
For each store address in your sheet, calculate the area reachable within a given drive time using GraphHopper isochrone analysis and write the coverage polygon data back inline.
Bulk Geocode Addresses From a Google Sheet Into Lat/Lon Columns
Convert a column of plain-text addresses into latitude and longitude coordinates using GraphHopper's geocoding API and write the results back into your sheet in one pass.
Cluster Customer Locations Into Delivery Zones From a Google Sheet
Use GraphHopper clustering to assign customer addresses from your sheet into balanced delivery territories and write the zone assignment back into each row.
