proc dataSheet {{mode {}}} {

	global Data ColD DName CellValues CellFormulae
	global curCell curRow

#
#	suppress the Sample element S
#
	foreach e [array names Data] {
		if {[ctype digit $e]} {
			lappend es $e
		}
	}
	set es [lsort -integer $es]
#
#	
	if {$curRow} {
	set startr $curRow
	} else {
	set startr [lindex [split $curCell ,] 0]
	}

	set maxr 0

	foreach e $es {
		set c [expr $e + 1]
		upvar #0 DV_$e DV_$e
		set vals [DV_$e range 0 end]
		set vl [llength $vals]
		set r 0
		set sr [.m.o.out cget -rows]
		set short [expr ($startr + $vl + 2) - $sr]
		if {$short > 0} {
			puts stderr "Add $short more rows"
			.m.o.out insert rows end $short
		}
		set hr $startr
		set name [keylget Data($e) name]
		set CellValues($hr,$c) "$name"
		catch {unset CellFormulae($hr,$c)}
		catch {$t tag cell {} $hr,$c}
		incr r
		set ir [expr $startr + $r]
		foreach v $vals {
			set CellValues($ir,$c) $v
			catch {unset CellFormulae($ir,$c)}
			catch {$t tag cell {} $ir,$c}
			incr ir
		}
		if {$ir > $maxr} {
			set maxr $ir
		}
	}
	.m.o.out tag row heads $hr
	set curRow [expr $maxr + 1]

}

