diff options
| author | Noel Peden <[email protected]> | 2021-01-05 20:07:27 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-01-05 20:07:27 -0800 |
| commit | f4d711d810620879ed2b73e3218741a351a357b8 (patch) | |
| tree | 670612720b40121a07a5901d0015ff9112f0d9ea /lib | |
| parent | e1e55b4b2a0e9a856e50375fd1e883b7bdadb3e7 (diff) | |
| parent | e859d267e9e4239a8f85253f1e303dc27ece0cb6 (diff) | |
| download | caxlsx-f4d711d810620879ed2b73e3218741a351a357b8.tar.gz caxlsx-f4d711d810620879ed2b73e3218741a351a357b8.zip | |
Merge pull request #70 from chi-deutschland/fix-worksheet-title-length-rule
Fix worksheet title length enforcement
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/axlsx/workbook/worksheet/worksheet.rb | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index aae91947..9f3966f8 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -663,7 +663,9 @@ module Axlsx def validate_sheet_name(name) DataTypeValidator.validate :worksheet_name, String, name - raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % name) if name.bytesize > 31 + # ignore first character (BOM) after encoding to utf16 because Excel does so, too. + character_length = name.encode("utf-16")[1..-1].encode("utf-16").bytesize / 2 + raise ArgumentError, (ERR_SHEET_NAME_TOO_LONG % name) if character_length > 31 raise ArgumentError, (ERR_SHEET_NAME_CHARACTER_FORBIDDEN % name) if '[]*/\?:'.chars.any? { |char| name.include? char } name = Axlsx::coder.encode(name) sheet_names = @workbook.worksheets.reject { |s| s == self }.map { |s| s.name } |
