From 645cab50a9dcba603d34b0a2e20be5d2420e1905 Mon Sep 17 00:00:00 2001 From: Jurriaan Pruis Date: Fri, 23 Mar 2012 15:36:02 +0100 Subject: Added to workbook --- lib/axlsx/workbook/workbook.rb | 7 +++++++ lib/axlsx/workbook/worksheet/worksheet.rb | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb index a8e0a1af..d57cf8a3 100644 --- a/lib/axlsx/workbook/workbook.rb +++ b/lib/axlsx/workbook/workbook.rb @@ -206,6 +206,13 @@ require 'axlsx/workbook/worksheet/table.rb' xml.sheet(:name=>sheet.name, :sheetId=>index+1, :"r:id"=>sheet.rId) end } + xml.definedNames { + @worksheets.each_with_index do |sheet, index| + if sheet.auto_filter + xml.definedName(sheet.abs_auto_filter, :name => '_xlnm._FilterDatabase', :localSheetId => index, :hidden => 1) + end + end + } } end builder.to_xml(:save_with => 0) diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index 5325294f..88d29432 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -210,6 +210,14 @@ module Axlsx @name=v end + # The absolute auto filter range + # @see auto_filter + def abs_auto_filter + "'#{@name}'!#{@auto_filter.split(':').collect { |name| + name_to_cell(name).r_abs + }.join(':')}" if @auto_filter + end + # The auto filter range for the worksheet # @param [String] v # @see auto_filter -- cgit v1.2.3