Skip to content

Instantly share code, notes, and snippets.

@grauwoelfchen
Created December 25, 2011 20:11
Show Gist options
  • Save grauwoelfchen/1519684 to your computer and use it in GitHub Desktop.
Save grauwoelfchen/1519684 to your computer and use it in GitHub Desktop.
diff --git a/lib/spreadsheet/excel/reader.rb b/lib/spreadsheet/excel/reader.rb
index 1c2d445..4413e04 100644
--- a/lib/spreadsheet/excel/reader.rb
+++ b/lib/spreadsheet/excel/reader.rb
@@ -771,7 +771,7 @@ class Reader
# but another self-contained MERGEDCELLS record is started. The limit of 8224 bytes
# per record results in a maximum number of 1027 merged ranges.
- worksheet.merged_cells.push *read_range_address_list(work, len)
+ worksheet.set_merged_cells read_range_address_list(work, len), pos, len
#
# A cell range address list consists of a field with the number of ranges and the list
# of the range addresses.
diff --git a/lib/spreadsheet/excel/worksheet.rb b/lib/spreadsheet/excel/worksheet.rb
index 87d5e75..b06542d 100644
--- a/lib/spreadsheet/excel/worksheet.rb
+++ b/lib/spreadsheet/excel/worksheet.rb
@@ -10,13 +10,14 @@ module Spreadsheet
# to use any of these.
class Worksheet < Spreadsheet::Worksheet
include Spreadsheet::Excel::Offset
- offset :dimensions
+ offset :dimensions, :merged_cells
attr_reader :offset, :ole, :links, :guts
def initialize opts = {}
@row_addresses = nil
super
@offset, @ole, @reader = opts[:offset], opts[:ole], opts[:reader]
@dimensions = nil
+ @merged_cells = []
@links = {}
@guts = {}
end
diff --git a/lib/spreadsheet/worksheet.rb b/lib/spreadsheet/worksheet.rb
index 7e25020..e66b61e 100644
--- a/lib/spreadsheet/worksheet.rb
+++ b/lib/spreadsheet/worksheet.rb
@@ -27,7 +27,7 @@ module Spreadsheet
include Spreadsheet::Encodings
include Enumerable
attr_accessor :name, :selected, :workbook
- attr_reader :rows, :columns, :merged_cells
+ attr_reader :rows, :columns
def initialize opts={}
@default_format = nil
@selected = opts[:selected]
@@ -37,7 +37,6 @@ module Spreadsheet
@rows = []
@columns = []
@links = {}
- @merged_cells = []
end
def active # :nodoc:
warn "Worksheet#active is deprecated. Please use Worksheet#selected instead."
@@ -252,12 +251,6 @@ module Spreadsheet
def []= row, column, value
row(row)[column] = value
end
- ##
- # Merges multiple cells into one.
- def merge_cells start_row, start_col, end_row, end_col
- # FIXME enlarge or dup check
- @merged_cells.push [start_row, end_row, start_col, end_col]
- end
private
def index_of_first ary # :nodoc:
return unless ary
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment