--- path: docs/upload-anything/spreadsheets title: "Spreadsheets" desc: "Upload CSV, Excel and OpenDocument tables, placed by coordinates, geometry or address." date: "Oct 21, 2026" --- # Spreadsheets Upload a CSV, TSV, Excel or OpenDocument file (`.csv`, `.tsv`, `.xlsx`, `.xlsm`, `.xlsb`, `.xls`, `.ods`), or [link to](/docs/upload-anything/urls) a public Google Sheet. Each row becomes a feature, and its other columns become the feature's attributes. ## How a row is placed GISOwl uses the first of these the table has: 1. **Origin and destination:** `lat0`, `lng0`, `lat1`, `lng1` columns draw one line per row, from origin to destination. 2. **Coordinates:** a latitude column (`lat`, `latitude` or `y`) and a longitude column (`lng`, `lon`, `long`, `longitude` or `x`) place a point per row. 3. **WKT:** a `wkt`, `geometry`, `geom`, `the_geom` or `wkt_geom` column can hold any geometry: points, lines or polygons. 4. **GeoJSON:** a `geojson` column holding a GeoJSON geometry or feature. 5. **Address:** an `address` column (or `full_address`, `street_address`, `address1`, `addr`), with `city`, `state` or `region`, `postcode` or `zip`, and `country` beside it. GISOwl geocodes each row against its own copy of OpenStreetMap and places a point. A file can geocode up to 20,000 rows. Column names are matched without regard to case, so `Latitude` and `LAT` work too. ## Next steps - [Files](/docs/upload-anything/files): every format you can upload. - [URLs](/docs/upload-anything/urls): add a layer from a web service or a hosted file.