Index: /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java	(revision 28363)
+++ /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/DataGouvFrModule.java	(revision 28364)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.hydrologie.EauxDeSurfaceHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.hydrologie.ROEHandler;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.transport.AeroportsHandler;
 import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.transport.PassageNiveauHandler;
 
@@ -49,4 +50,5 @@
         handlers.add(EauxDeSurfaceHandler.class);
         handlers.add(InventaireForestierNationalHandler.class);
+        handlers.add(AeroportsHandler.class);
     }
 }
Index: /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/transport/AeroportsHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/transport/AeroportsHandler.java	(revision 28364)
+++ /applications/editors/josm/plugins/opendata/modules/fr.datagouvfr/src/org/openstreetmap/josm/plugins/opendata/modules/fr/datagouvfr/datasets/transport/AeroportsHandler.java	(revision 28364)
@@ -0,0 +1,87 @@
+//    JOSM opendata plugin.
+//    Copyright (C) 2011-2012 Don-vip
+//
+//    This program is free software: you can redistribute it and/or modify
+//    it under the terms of the GNU General Public License as published by
+//    the Free Software Foundation, either version 3 of the License, or
+//    (at your option) any later version.
+//
+//    This program is distributed in the hope that it will be useful,
+//    but WITHOUT ANY WARRANTY; without even the implied warranty of
+//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//    GNU General Public License for more details.
+//
+//    You should have received a copy of the GNU General Public License
+//    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+package org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.transport;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.data.coor.LatLon;
+import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.plugins.opendata.core.io.tabular.DefaultSpreadSheetHandler;
+import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
+import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
+
+public class AeroportsHandler extends DataGouvDataSetHandler {
+
+	private static final Pattern COOR_PATTERN = Pattern.compile(
+			"(-?\\p{Digit}+)°\\p{Space}*(\\p{Digit}+)'\\p{Space}*(\\p{Digit}+)\\p{Space}*((Nord|Sud|Est|Ouest)?)", Pattern.CASE_INSENSITIVE);
+	
+	public AeroportsHandler() {
+		super("Aéroports-français-coordonnées-géographiques-30382044");
+		setName("Aéroports");
+		setDownloadFileName("coordonn_es g_ographiques a_roports fran_ais v2.xls");
+		setSpreadSheetHandler(new InternalXlsHandler());
+	}
+
+	@Override
+	public boolean acceptsFilename(String filename) {
+		return acceptsXlsFilename(filename, "coordonn_es g_ographiques a_roports fran_ais v2");
+	}
+
+	@Override
+	public void updateDataSet(DataSet ds) {
+		for (Node n : ds.getNodes()) {
+			n.put("aeroway", "aerodrome");
+		}
+	}
+	
+	protected class InternalXlsHandler extends DefaultSpreadSheetHandler {
+
+		public InternalXlsHandler() {
+			setLineNumber(4);
+			setHandlesProjection(true);
+		}
+
+		@Override
+		public LatLon getCoor(EastNorth en, String[] fields) {
+			Matcher x = COOR_PATTERN.matcher(fields[getXCol()]);
+			Matcher y = COOR_PATTERN.matcher(fields[getYCol()]);
+			if (x.matches() && y.matches() && x.groupCount() >= 4 && y.groupCount() >= 4) {
+				return new LatLon(convertDegreeMinuteSecond(y), convertDegreeMinuteSecond(x));
+			}
+			return null;
+		}
+		
+		protected double convertDegreeMinuteSecond(Matcher m) {
+			Double deg = Double.parseDouble(m.group(1));
+			Double min = Double.parseDouble(m.group(2));
+			Double sec = Double.parseDouble(m.group(3));
+			Double sign = deg < 0 
+					|| (m.groupCount() >= 5 && (m.group(4).equalsIgnoreCase("Sud") || m.group(4).equalsIgnoreCase("Ouest"))) 
+					? -1.0 : +1.0;
+			if (sign < 0) {
+				if (deg > 0) {
+					deg *= sign;
+				}
+				min *= sign;
+				sec *= sign;
+			}
+			return OdUtils.convertDegreeMinuteSecond(deg, min, sec);
+		}
+	}
+}
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java	(revision 28363)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java	(revision 28364)
@@ -129,6 +129,6 @@
      * Coordinates fields
      */
-    public static final String X_STRING = "X|LON|LONGI|LONGITUDE|EASTING";
-    public static final String Y_STRING = "Y|LAT|LATI|LATITUDE|NORTHING";
+    public static final String X_STRING = "X|LON|LONGI|LONGITUDE.*|EASTING";
+    public static final String Y_STRING = "Y|LAT|LATI|LATITUDE.*|NORTHING";
     
     // The list of all ProjectionPatterns (filled at each constructor call)
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/DefaultSpreadSheetHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/DefaultSpreadSheetHandler.java	(revision 28363)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/DefaultSpreadSheetHandler.java	(revision 28364)
@@ -22,5 +22,9 @@
 
 	private int sheetNumber = -1;
+	private int lineNumber = -1;
 	private boolean handlesProjection = false;
+	
+	private int xCol = -1;
+	private int yCol = -1;
 	
 	@Override
@@ -48,3 +52,33 @@
 		return null;
 	}
+
+	@Override
+	public void setLineNumber(int n) {
+		lineNumber = n;
+	}
+
+	@Override
+	public int getLineNumber() {
+		return lineNumber;
+	}
+
+	@Override
+	public void setXCol(int i) {
+		xCol = i;
+	}
+
+	@Override
+	public void setYCol(int i) {
+		yCol = i;
+	}
+
+	@Override
+	public int getXCol() {
+		return xCol;
+	}
+
+	@Override
+	public int getYCol() {
+		return yCol;
+	}
 }
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetHandler.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetHandler.java	(revision 28363)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetHandler.java	(revision 28364)
@@ -30,3 +30,15 @@
 
 	public LatLon getCoor(EastNorth en, String[] fields);
+
+	public void setLineNumber(int n);
+	
+	public int getLineNumber();
+
+	public void setXCol(int i);
+
+	public void setYCol(int i);
+	
+	public int getXCol();
+
+	public int getYCol();
 }
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 28363)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/tabular/SpreadSheetReader.java	(revision 28364)
@@ -74,4 +74,8 @@
 	}
 	
+	protected final int getLineNumber() {
+		return handler != null ? handler.getLineNumber() : -1;
+	}
+	
 	private class CoordinateColumns {
 		public int xCol = -1;
@@ -148,4 +152,8 @@
 			lineNumber++;
 			EastNorth en = new EastNorth(Double.NaN, Double.NaN);
+			if (handler != null) {
+				handler.setXCol(-1);
+				handler.setYCol(-1);
+			}
 			Node n = new Node();
 			for (int i = 0; i<fields.length; i++) {
@@ -155,6 +163,12 @@
 					} else if (i == columns.xCol) {
 						en.setLocation(parseDouble(fields[i]), en.north());
+						if (handler != null) {
+							handler.setXCol(i);
+						}
 					} else if (i == columns.yCol) {
 						en.setLocation(en.east(), parseDouble(fields[i]));
+						if (handler != null) {
+							handler.setYCol(i);
+						}
 					} else if (!allProjIndexes.contains(i)) {
 						if (!fields[i].isEmpty()) {
@@ -185,12 +199,16 @@
 		String[] header = null;
 		int length = 0;
+		int n = 0;
 		
 		while (header == null || length == 0) {
+			n++;
 			header = readLine(progressMonitor);
 			length = 0;
-			if (header == null) {
+			if (header == null && n > getLineNumber()) {
 				return null;
-			} else for (String field : header) {
-				length += field.length();
+			} else if (header != null && (getLineNumber() == -1 || getLineNumber() == n)) {
+				for (String field : header) {
+					length += field.length();
+				}
 			}
 		}
Index: /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java
===================================================================
--- /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java	(revision 28363)
+++ /applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java	(revision 28364)
@@ -72,3 +72,11 @@
 		return lang;
 	}
+	
+    public static final double convertMinuteSecond(double minute, double second) {
+        return (minute/60.0) + (second/3600.0);
+    }
+
+    public static final double convertDegreeMinuteSecond(double degree, double minute, double second) {
+        return degree + convertMinuteSecond(minute, second);
+    }
 }
