lib/spreadsheet/excel/writer/n_worksheet.rb in spreadsheet-1.2.9 vs lib/spreadsheet/excel/writer/n_worksheet.rb in spreadsheet-1.3.0
- old
+ new
@@ -239,84 +239,9 @@
write_number row, idx
end
end
write_multiples row, first_idx, multiples if multiples
end
- def write_changes reader, endpos, sst_status
-
- ## FIXME this is not smart solution to update outline_level.
- # without this process, outlines in row disappear in MS Excel.
- @worksheet.row_count.times do |i|
- if @worksheet.row(i).outline_level > 0
- @worksheet.row(i).outline_level = @worksheet.row(i).outline_level
- end
- end
-
- reader.seek @worksheet.offset
- blocks = row_blocks
- lastpos = reader.pos
- offsets = {}
- row_offsets = []
- changes = @worksheet.changes
- @worksheet.offsets.each do |key, pair|
- if changes.include?(key) \
- || (sst_status == :complete_update && key.is_a?(Integer))
- offsets.store pair, key
- end
- end
- ## FIXME it may be smarter to simply write all rowblocks, instead of doing a
- # song-and-dance routine for every row...
- work = offsets.invert
- work.each do |key, (pos, len)|
- case key
- when Integer
- row_offsets.push [key, [pos, len]]
- when :dimensions
- row_offsets.push [-1, [pos, len]]
- end
- end
- row_offsets.sort!
- row_offsets.reverse!
- control = changes.size
- @worksheet.each do |row|
- key = row.idx
- if changes.include?(key) && !work.include?(key)
- row, pair = row_offsets.find do |idx, _| idx <= key end
- work.store key, pair
- end
- end
- if changes.size > control
- warn <<-EOS
-Your Worksheet was modified while it was being written. This should not happen.
-Please contact the author (hannes dot wyss at gmail dot com) with a sample file
-and minimal code that generates this warning. Thanks!
- EOS
- end
- work = work.sort_by do |key, (pos, len)|
- [pos, key.is_a?(Integer) ? key : -1]
- end
- work.each do |key, (pos, len)|
- @io.write reader.read(pos - lastpos) if pos > lastpos
- if key.is_a?(Integer)
- if block = blocks.find do |rows| rows.any? do |row| row.idx == key end end
- write_rowblock block
- blocks.delete block
- end
- else
- send "write_#{key}"
- end
- lastpos = pos + len
- reader.seek lastpos
- end
-
- # Necessary for outline (grouping) and hiding functions
- # but these below are not necessary to run
- # if [Row|Column]#hidden? = false and [Row|Column]#outline_level == 0
- write_colinfos
- write_guts
-
- @io.write reader.read(endpos - lastpos)
- end
def write_colinfo bunch
col = bunch.first
width = col.width.to_f * 256
xf_idx = @workbook.xf_index @worksheet.workbook, col.default_format
opts = 0