diff --git a/plugins/excel/xlsx-write-drawing.c b/plugins/excel/xlsx-write-drawing.c
index 8cb8434..90925a2 100644
--- a/plugins/excel/xlsx-write-drawing.c
+++ b/plugins/excel/xlsx-write-drawing.c
@@ -185,6 +185,7 @@ xlsx_write_chart (XLSXWriteState *state, GsfOutput *chart_part, SheetObject *so)
 {
 	GogGraph const	*graph;
 	GogObject const	*chart;
+	GSList *plots;
 	GogObject const *plot;
 	char const *plot_type;
 	GogObject const *obj;
@@ -197,14 +198,26 @@ xlsx_write_chart (XLSXWriteState *state, GsfOutput *chart_part, SheetObject *so)
 	gboolean vary_by_element;
 
 	graph = sheet_object_graph_get_gog (so);
-	if (NULL == graph)
-		return;
+	g_return_if_fail (NULL != graph);
 	chart = gog_object_get_child_by_name (GOG_OBJECT (graph), "Chart");
-	if (NULL == chart)
-		return;
-	plot = gog_object_get_child_by_name (GOG_OBJECT (chart), "Plot");
-	if (NULL == plot)
+	g_return_if_fail (NULL != chart);
+	plots = gog_object_get_children 
+		(GOG_OBJECT (chart), 
+		 gog_object_find_role_by_name (GOG_OBJECT (chart), "Plot"));
+	if (plots == NULL || plots->data == NULL) {
+		g_slist_free (plots);
 		return;
+	}
+	plot = plots->data;
+	if (plots->next != NULL) {
+		int n = g_slist_length (plots) - 1;
+		if (n == 1)
+			g_warning ("Dropping a plot from a chart.", n);
+		else
+			g_warning ("Dropping %d plots from a chart.", n);
+	}
+	g_slist_free (plots);
+
 	g_object_get (G_OBJECT (plot),
 		      "vary-style-by-element", &vary_by_element,
 		      NULL);
