Index: applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java
===================================================================
--- applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 33040)
+++ applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 33049)
@@ -35,5 +35,7 @@
 
     private static final String COOR = "(\\-?\\d+(?:[\\.,]\\d+)?)";
-    private static final Pattern LATLON_PATTERN = Pattern.compile("^"+COOR+"[,;]?\\s*"+COOR+"$");
+    // Lat/lon pattern with optional altitude and precision
+    private static final Pattern LATLON_PATTERN = Pattern.compile(
+            "^"+COOR+"[,;\\s]\\s*"+COOR+"(?:[,;\\s]\\s*"+COOR+"(?:[,;\\s]\\s*"+COOR+")?)?$");
 
     protected final SpreadSheetHandler handler;
@@ -220,5 +222,7 @@
                     if (!coordinate) {
                         if (!fields[i].isEmpty()) {
-                            nodes.values().iterator().next().put(header[i], fields[i]);
+                            for (Node n : nodes.values()) {
+                                n.put(header[i], fields[i]);
+                            }
                         }
                     }
@@ -232,5 +236,5 @@
                 EastNorth en = ens.get(c);
                 if (en.isValid()) {
-                    n.setCoor(c.proj != null && !handlerOK ? c.proj.eastNorth2latlon(en) : handler.getCoor(en, fields));
+                    n.setCoor(c.proj != null && !handlerOK ? c.proj.eastNorth2latlon(en) : handler != null ? handler.getCoor(en, fields) : null);
                 } else {
                     Main.warn("Skipping line "+lineNumber+" because no valid coordinates have been found at columns "+c);
