summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-02-23 19:50:16 +0900
committerRandy Morgan <[email protected]>2012-02-23 19:50:16 +0900
commitf93ac348f13b9cdc8df48e7d566aec1bf03b5ddd (patch)
treedcda87833af0c2329c994ce76f1cf69bb934db95
parentd9705fa234819fd640e2e5fdb5422a8d22d8ff3b (diff)
downloadcaxlsx-f93ac348f13b9cdc8df48e7d566aec1bf03b5ddd.tar.gz
caxlsx-f93ac348f13b9cdc8df48e7d566aec1bf03b5ddd.zip
worksheet names need to be limited to 31 characters
-rw-r--r--lib/axlsx/util/constants.rb3
-rw-r--r--lib/axlsx/workbook/worksheet/worksheet.rb2
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb5
3 files changed, 10 insertions, 0 deletions
diff --git a/lib/axlsx/util/constants.rb b/lib/axlsx/util/constants.rb
index b2cbad26..e9a0a02a 100644
--- a/lib/axlsx/util/constants.rb
+++ b/lib/axlsx/util/constants.rb
@@ -224,6 +224,9 @@ module Axlsx
# error message for RegexValidator
ERR_REGEX = "Invalid Data. %s does not match %s."
+ # error message for sheets that use a name which is longer than 31 bytes
+ ERR_SHEET_NAME_TOO_LONG = "Your worksheet name '%s' is too long. Worksheet names must be 31 characters (bytes) or less"
+
# error message for duplicate sheet names
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/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb
index 5284c475..a8846913 100644
--- a/lib/axlsx/workbook/worksheet/worksheet.rb
+++ b/lib/axlsx/workbook/worksheet/worksheet.rb
@@ -116,9 +116,11 @@ module Axlsx
end
# The name of the worksheet
+ # The name of a worksheet must be unique in the workbook, and must not exceed 31 characters
# @param [String] v
def name=(v)
DataTypeValidator.validate "Worksheet.name", String, v
+ raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % v) if v.size > 31
sheet_names = @workbook.worksheets.map { |s| s.name }
raise ArgumentError, (ERR_DUPLICATE_SHEET_NAME % v) if sheet_names.include?(v)
@name=v
diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb
index 4a358c2c..a3d146c4 100644
--- a/test/workbook/worksheet/tc_worksheet.rb
+++ b/test/workbook/worksheet/tc_worksheet.rb
@@ -129,6 +129,11 @@ class TestWorksheet < Test::Unit::TestCase
assert_raise(ArgumentError, "worksheet name must be unique") { n = @ws.name; @ws.workbook.add_worksheet(:name=> @ws) }
end
+ def test_name_size
+ assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").to_s }
+ assert_nothing_raised { @ws.name = Array.new(31, "A").to_s }
+ end
+
def test_update_auto_with_data
small = @ws.workbook.styles.add_style(:sz=>2)
big = @ws.workbook.styles.add_style(:sz=>10)