I am preparing a course for QGIS newbies, which includes handling Excel spreadsheet data in QGIS.

It's so easy: Just drag an XLS, XSLX or CSV from Windows Explorer to QGIS!

For data with no coordinates, I teach them 1:1 joins to shape files to obtain positions, e.g. a place name. For data with coordinate attributes in the CSV, I teach them how to use the "Add Delimited Text Layer" function, and the same goes for Excel XLS files using XY Tools plugin.

The problem is XLSX files, which can easily be dragged and dropped into QGIS and displayed as attributes. But I haven't found a way to plot points from (correct) coordinate information - without previous conversion to XLS or CSV. I would like the operation to be smooth and inviting for the QGIS newcomers.

Question: How can you drag-drop an Excel XLSX file and plot the coordinates using the fewest steps?

  1. drag-drop an Excel XLSX file onto the layer widget
  2. double click tool QGIS geoalgorithms\Vector creation tools\Point layer from Table, choose the new layer as Input layer and specify the columns representing X- and Y-field, run the process

Two steps using current QGIS versions.

  • Thank you very much. This trick could probably help in a lot of day-to-day GIS tasks. – Karl Zinglersen May 21 '15 at 17:38
  • However, you should bare in mind, that the process involves construction of a new shape file or a temporary layer detached from the original XLXS file, so updates in an XLXS file through Excel is not updated in the point output. Unlike the "Add Delimited Text Layer", which let you update the QGIS point representation of a CSV if you check the "Watch file" parameter. – Karl Zinglersen May 21 '15 at 17:44

Use the "Add spreadsheet layer" tool, which can be installed with these steps:

  1. Plugins > Manage and Install Plugins...
  2. Search or look for "Spreadsheet Layers", then click "Install plugin"

After a successful installation, you can find the tool beside the other "Add Layer" options.

See more details at the Plugin's homepage


In QGIS 3 you can now use a virtual layer.

  1. (Same as answer from @Detlev) drag-drop an Excel XLSX file onto the layer widget
  2. Layer -> Create Layer -> New Virtual Layer
  3. Import and select the layer/table from Step 1
  4. Create a query to generate geometry (example in screenshot) e.g. SELECT *, MakePoint(Longitude, Latitude, 4326) as geometry FROM poi

I've only just done this for the first time but it does seem to update to reflect edits in the xlsx (after a little while).

screenshot of Create a Virtual Layer dialog to create point layer from xlsx table

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.