how to factor the codes

Li Chen wrote:

Hi all,
I have 3 2D-arrays(@data, @mean,@sd). I need to import all of them into
Excel in the same sheet and each array is separated by one empty row.
Here are my codes:

def import_to_excel
   ...
  row_start1=1
  row_end1=@data.size
  column_start1=1
  column_end1=@data[1].size
  worksheet1.Range(worksheet1.Cells(
row_start1,column_start1),worksheet1.Cells(row_end1,column_end1)).Value=@data

  #write mean to excel
  row_start2= row_end1+2
  row_end2=row_start2+@mean.size-1
  column_start2=1
  column_end2=@mean[1].size

  worksheet1.Range(worksheet1.Cells(row_start2,
column_start2),worksheet1.Cells(row_end2,column_end2)).Value=@mean
                                                                                 #write
sd to excel
row_start3= row_end2+2
row_end3=row_start3+@sd.size-1
column_start3=1
column_end3=@sd[1].size

  worksheet1.Range(worksheet1.Cells( row_start3,
column_start3),worksheet1.Cells( row_end3,column_end3)).Value=@sd

...

end

So far these codes work fine for me. But what if I have 10 2D-array
data, Am i going to write ten similar code chunks? Is it possible to
factor my codes?

Thanks,

Li

Hey Li

I think this'll work, I haven't tested it though

def import_to_excel
  ...populate @data, @mean and @sd

  row_ended = actual_import(@data, worksheet1)
  row_ended = actual_import(@mean, worksheet1, row_ended)
  actual_import(@sd, worksheet1, row_ended)

  ...further code
end

def actual_import(dataset, sheet, previous_row_ended = -1)
  row_start = previous_row_ended + 2
  row_end = row_start + dataset.size - 1
  column_end = 'A'
  (dataset.first.size - 1).times {column_end.succ!}
  sheet.Range("A#{row_start}:#{column_end}#{row_end}").Value = dataset
  return row_end
end

I found a beautiful page in the rubygarden that is filled to the brim
with great excel scripts! Much thanks and respect to the author! There
are links to one or two other resources to other people's articles, but
I couldn't track down the name of the author him- or herself.

http://wiki.rubygarden.org/Ruby/page/show/ScriptingExcel

Hope this help,
Cheery-o
Paul, Gustav