📝 Introduction
User Story:
As a User, I want to upload Excel (.xlsx) files directly to GeoNode so that I can easily create geospatial layers from tabular data without manually converting them to CSV or Shapefiles first.
Problem Statement:
Currently, GeoNode primarily supports CSV for tabular uploads. However, many users work natively in Excel. Forcing a conversion to CSV often leads to encoding issues (UTF-8) or loss of formatting, making the data ingestion process friction-heavy and prone to errors.
✅ Expected Results (Acceptance Criteria)
🗒️ Notes & Technical Details
- Library Suggestion: Consider using
pandas/geopandas or python-calamine for the backend parsing logic. Pandas is extremly powerfull, but it might be really heavy just for reading an excel file. python-calamine is faster and lighter but more complex to use.
- Re-use what we have: since we already have the full infrastructure to upload a CSV file, we might just consider to convert the
XLSX file into a CSV and then use the existing upload pipeline. We already do this for other formats. We need to evaluate this before writing a new upload handler.
- Data Processing: To ensure the system handles large workbooks efficiently during the ingestion phase, the layer processing should be memory-efficient.
- Security: we should be carefull on the security: https://openpyxl.readthedocs.io/en/stable/#security
- The handler MUST be optional
📝 Introduction
User Story:
As a User, I want to upload Excel (.xlsx) files directly to GeoNode so that I can easily create geospatial layers from tabular data without manually converting them to CSV or Shapefiles first.
Problem Statement:
Currently, GeoNode primarily supports CSV for tabular uploads. However, many users work natively in Excel. Forcing a conversion to CSV often leads to encoding issues (UTF-8) or loss of formatting, making the data ingestion process friction-heavy and prone to errors.
✅ Expected Results (Acceptance Criteria)
.xlsor.xlsxfile extensions.xlsxfile does not contains the headers, the system should raise an errorLatitude/Longitudecolumns) similar to the CSV upload flow. Only point geometries are supported, and WKT fields will be ignored.🗒️ Notes & Technical Details
pandas/geopandasorpython-calaminefor the backend parsing logic. Pandas is extremly powerfull, but it might be really heavy just for reading an excel file.python-calamineis faster and lighter but more complex to use.XLSXfile into aCSVand then use the existing upload pipeline. We already do this for other formats. We need to evaluate this before writing a new upload handler.