+
+const char *
+ods_get_sheet_name (struct spreadsheet *s, int n)
+{
+ int ret;
+ struct ods_reader *or = (struct ods_reader *) s;
+
+ assert (n < s->n_sheets);
+
+ while (
+ (or->n_allocated_sheets <= n)
+ &&
+ (1 == (ret = xmlTextReaderRead (or->xtr)))
+ )
+ {
+ process_node (or);
+ }
+
+ return or->sheets[n].name;
+}
+
+char *
+ods_get_sheet_range (struct spreadsheet *s, int n)
+{
+ int ret;
+ struct ods_reader *or = (struct ods_reader *) s;
+
+ assert (n < s->n_sheets);
+
+ while (
+ (or->n_allocated_sheets <= n || or->sheets[n].stop_col == -1)
+ &&
+ (1 == (ret = xmlTextReaderRead (or->xtr)))
+ )
+ {
+ process_node (or);
+ }
+
+ return create_cell_ref (
+ or->sheets[n].start_col,
+ or->sheets[n].start_row,
+ or->sheets[n].stop_col,
+ or->sheets[n].stop_row);
+}
+
+