summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/axlsx.rb16
-rw-r--r--lib/axlsx/workbook/worksheet/cell.rb4
2 files changed, 10 insertions, 10 deletions
diff --git a/lib/axlsx.rb b/lib/axlsx.rb
index b14ce35b..2fb1fa36 100644
--- a/lib/axlsx.rb
+++ b/lib/axlsx.rb
@@ -43,15 +43,13 @@ module Axlsx
# determines the cell range for the items provided
def self.cell_range(cells, absolute=true)
return "" unless cells.first.is_a? Cell
+ sort_cells(cells)
+ reference = "#{cells.first.reference(absolute)}:#{cells.last.reference(absolute)}"
+ absolute ? "#{cells.first.row.worksheet.name}!#{reference}" : reference
+ end
+
+ def self.sort_cells(cells)
cells.sort { |x, y| [x.index, x.row.index] <=> [y.index, y.row.index] }
- reference_method = absolute ? :r_abs : :r
- ref = if absolute
- "'#{cells.first.row.worksheet.name}'!#{cells.first.send(reference_method)}"
- else
- "#{cells.first.send(reference_method)}"
- end
- ref << ":#{cells.last.send(reference_method)}" if cells.size > 1
- ref
end
#global reference html entity encoding
@@ -66,9 +64,7 @@ module Axlsx
v = name[/[A-Z]+/].reverse.chars.reduce({:base=>1, :i=>0}) do |val, c|
val[:i] += ((c.bytes.first - 64) * val[:base]); val[:base] *= 26; val
end
-
[v[:i]-1, ((name[/[1-9][0-9]*/]).to_i)-1]
-
end
# converts the column index into alphabetical values.
diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb
index 7b302865..59d7c171 100644
--- a/lib/axlsx/workbook/worksheet/cell.rb
+++ b/lib/axlsx/workbook/worksheet/cell.rb
@@ -330,6 +330,10 @@ module Axlsx
font_scale = (font_size/10.0).to_f
((value.to_s.count(Worksheet.thin_chars) * mdw + 5) / mdw * 256) / 256.0 * font_scale
end
+
+ def reference(absolute=true)
+ absolute ? r_abs : r
+ end
private