From 6fbb4d321a326f63011099f4d1f93aa5c842141b Mon Sep 17 00:00:00 2001 From: Randy Morgan Date: Mon, 5 Dec 2011 09:39:28 +0900 Subject: ensure that worksheet names are unique in the workbook --- lib/axlsx/util/constants.rb | 2 ++ lib/axlsx/workbook/workbook.rb | 11 +++++++++++ 2 files changed, 13 insertions(+) (limited to 'lib') diff --git a/lib/axlsx/util/constants.rb b/lib/axlsx/util/constants.rb index 4f1cb561..e7bfca88 100644 --- a/lib/axlsx/util/constants.rb +++ b/lib/axlsx/util/constants.rb @@ -210,4 +210,6 @@ module Axlsx # error message for RegexValidator ERR_REGEX = "Invalid Data. %s does not match %s." + + ERR_DUPLICATE_SHEET_NAME = "There is already a worksheet in this workbook named '%s'. Please use a unique name" end diff --git a/lib/axlsx/workbook/workbook.rb b/lib/axlsx/workbook/workbook.rb index e0031d15..b1cbac89 100644 --- a/lib/axlsx/workbook/workbook.rb +++ b/lib/axlsx/workbook/workbook.rb @@ -129,6 +129,17 @@ require 'axlsx/workbook/worksheet/worksheet.rb' r end + # returns a range of cells in a worksheet + # @params [String] cell_def The excel style reference defining the worksheet and cells. The range must specify the sheet to + # retrieve the cells from. e.g. range('Sheet1!A1:B2') will return an array of four cells [A1, A2, B1, B2] while range('Sheet1!A1') will return a single Cell. + # @return [Cell, Array] + def [](cell_def) + sheet_name = cell_def.split('!')[0] if cell_def.match('!') + worksheet = self.worksheets.select { |s| s.name == sheet_name }.first + raise ArgumentError, 'Unknown Sheet' unless sheet_name && worksheet.is_a?(Worksheet) + worksheet[cell_def.gsub(/.+!/,"")] + end + # Serializes the workbook document # @return [String] def to_xml() -- cgit v1.2.3