write_xlsx 1.11.0 → 1.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/Changes +12 -0
- data/examples/shape_all.rb +1 -1
- data/lib/write_xlsx/chart/area.rb +1 -0
- data/lib/write_xlsx/chart/axis.rb +1 -0
- data/lib/write_xlsx/chart/bar.rb +1 -0
- data/lib/write_xlsx/chart/caption.rb +1 -0
- data/lib/write_xlsx/chart/column.rb +1 -0
- data/lib/write_xlsx/chart/doughnut.rb +1 -0
- data/lib/write_xlsx/chart/legend.rb +1 -0
- data/lib/write_xlsx/chart/line.rb +1 -0
- data/lib/write_xlsx/chart/pie.rb +15 -2
- data/lib/write_xlsx/chart/radar.rb +1 -0
- data/lib/write_xlsx/chart/scatter.rb +1 -0
- data/lib/write_xlsx/chart/series.rb +56 -4
- data/lib/write_xlsx/chart/stock.rb +1 -0
- data/lib/write_xlsx/chart.rb +107 -23
- data/lib/write_xlsx/chartsheet.rb +10 -1
- data/lib/write_xlsx/col_name.rb +7 -3
- data/lib/write_xlsx/colors.rb +20 -19
- data/lib/write_xlsx/format.rb +10 -8
- data/lib/write_xlsx/package/app.rb +9 -5
- data/lib/write_xlsx/package/comments.rb +2 -1
- data/lib/write_xlsx/package/conditional_format.rb +6 -6
- data/lib/write_xlsx/package/packager.rb +2 -3
- data/lib/write_xlsx/package/styles.rb +11 -13
- data/lib/write_xlsx/package/table.rb +74 -20
- data/lib/write_xlsx/package/xml_writer_simple.rb +32 -44
- data/lib/write_xlsx/sheets.rb +6 -2
- data/lib/write_xlsx/sparkline.rb +2 -2
- data/lib/write_xlsx/utility.rb +14 -12
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +2 -3
- data/lib/write_xlsx/worksheet/cell_data.rb +17 -18
- data/lib/write_xlsx/worksheet/hyperlink.rb +2 -2
- data/lib/write_xlsx/worksheet.rb +90 -39
- data/write_xlsx.gemspec +2 -0
- metadata +31 -3
| @@ -28,7 +28,7 @@ module Writexlsx | |
| 28 28 | 
             
                    normalized_str = str.sub(/^mailto:/, '')
         | 
| 29 29 |  | 
| 30 30 | 
             
                    # Split url into the link and optional anchor/location.
         | 
| 31 | 
            -
                    url, @url_str = url.split( | 
| 31 | 
            +
                    url, @url_str = url.split("#", 2)
         | 
| 32 32 |  | 
| 33 33 | 
             
                    # Escape URL unless it looks already escaped.
         | 
| 34 34 | 
             
                    url = escape_url(url)
         | 
| @@ -106,7 +106,7 @@ module Writexlsx | |
| 106 106 | 
             
                    str = str.sub(/^mailto:/, '')
         | 
| 107 107 |  | 
| 108 108 | 
             
                    # Split url into the link and optional anchor/location.
         | 
| 109 | 
            -
                    url, url_str = url.split( | 
| 109 | 
            +
                    url, url_str = url.split("#", 2)
         | 
| 110 110 |  | 
| 111 111 | 
             
                    # Escape URL unless it looks already escaped.
         | 
| 112 112 | 
             
                    url = escape_url(url)
         | 
    
        data/lib/write_xlsx/worksheet.rb
    CHANGED
    
    | @@ -23,6 +23,7 @@ module Writexlsx | |
| 23 23 |  | 
| 24 24 | 
             
                MAX_DIGIT_WIDTH = 7    # For Calabri 11.  # :nodoc:
         | 
| 25 25 | 
             
                PADDING         = 5                       # :nodoc:
         | 
| 26 | 
            +
                COLINFO         = Struct.new('ColInfo', :width, :format, :hidden, :level, :collapsed, :autofit)
         | 
| 26 27 |  | 
| 27 28 | 
             
                attr_reader :index                                            # :nodoc:
         | 
| 28 29 | 
             
                attr_reader :charts, :images, :tables, :shapes, :drawings     # :nodoc:
         | 
| @@ -227,15 +228,26 @@ module Writexlsx | |
| 227 228 | 
             
                #
         | 
| 228 229 | 
             
                # Hide this worksheet.
         | 
| 229 230 | 
             
                #
         | 
| 230 | 
            -
                def hide
         | 
| 231 | 
            -
                  @hidden =  | 
| 231 | 
            +
                def hide(hidden = :hidden)
         | 
| 232 | 
            +
                  @hidden = hidden
         | 
| 232 233 | 
             
                  @selected = false
         | 
| 233 234 | 
             
                  @workbook.activesheet = 0 if @workbook.activesheet == @index
         | 
| 234 235 | 
             
                  @workbook.firstsheet  = 0 if @workbook.firstsheet  == @index
         | 
| 235 236 | 
             
                end
         | 
| 236 237 |  | 
| 238 | 
            +
                #
         | 
| 239 | 
            +
                # Hide this worksheet. This can only be unhidden from VBA.
         | 
| 240 | 
            +
                #
         | 
| 241 | 
            +
                def very_hidden
         | 
| 242 | 
            +
                  hide(:very_hidden)
         | 
| 243 | 
            +
                end
         | 
| 244 | 
            +
             | 
| 237 245 | 
             
                def hidden? # :nodoc:
         | 
| 238 | 
            -
                  @hidden
         | 
| 246 | 
            +
                  @hidden == :hidden
         | 
| 247 | 
            +
                end
         | 
| 248 | 
            +
             | 
| 249 | 
            +
                def very_hidden? # :nodoc:
         | 
| 250 | 
            +
                  @hidden == :very_hidden
         | 
| 239 251 | 
             
                end
         | 
| 240 252 |  | 
| 241 253 | 
             
                #
         | 
| @@ -270,7 +282,7 @@ module Writexlsx | |
| 270 282 | 
             
                  if range.nil?
         | 
| 271 283 | 
             
                    raise "The range must be defined in unprotect_range())\n"
         | 
| 272 284 | 
             
                  else
         | 
| 273 | 
            -
                    range = range.gsub( | 
| 285 | 
            +
                    range = range.gsub("$", "")
         | 
| 274 286 | 
             
                    range = range.sub(/^=/, "")
         | 
| 275 287 | 
             
                    @num_protected_ranges += 1
         | 
| 276 288 | 
             
                  end
         | 
| @@ -357,8 +369,7 @@ module Writexlsx | |
| 357 369 | 
             
                  # Store the column data based on the first column. Padded for sorting.
         | 
| 358 370 | 
             
                  (firstcol..lastcol).each do |col|
         | 
| 359 371 | 
             
                    @col_info[col] =
         | 
| 360 | 
            -
                       | 
| 361 | 
            -
                        .new(width, format, hidden, level, collapsed, autofit)
         | 
| 372 | 
            +
                      COLINFO.new(width, format, hidden, level, collapsed, autofit)
         | 
| 362 373 | 
             
                  end
         | 
| 363 374 |  | 
| 364 375 | 
             
                  # Store the column change to allow optimisations.
         | 
| @@ -497,8 +508,7 @@ module Writexlsx | |
| 497 508 | 
             
                      @col_info[col_num].autofit = 1
         | 
| 498 509 | 
             
                    else
         | 
| 499 510 | 
             
                      @col_info[col_num] =
         | 
| 500 | 
            -
                         | 
| 501 | 
            -
                          .new(width, nil, 0, 0, 0, 1)
         | 
| 511 | 
            +
                        COLINFO.new(width, nil, 0, 0, 0, 1)
         | 
| 502 512 | 
             
                    end
         | 
| 503 513 | 
             
                  end
         | 
| 504 514 | 
             
                end
         | 
| @@ -613,8 +623,17 @@ module Writexlsx | |
| 613 623 | 
             
                #
         | 
| 614 624 | 
             
                # This method is used to display the worksheet in "Page View/Layout" mode.
         | 
| 615 625 | 
             
                #
         | 
| 616 | 
            -
                def set_page_view(flag =  | 
| 617 | 
            -
                  @page_view =  | 
| 626 | 
            +
                def set_page_view(flag = 1)
         | 
| 627 | 
            +
                  @page_view = flag
         | 
| 628 | 
            +
                end
         | 
| 629 | 
            +
             | 
| 630 | 
            +
                #
         | 
| 631 | 
            +
                # set_pagebreak_view
         | 
| 632 | 
            +
                #
         | 
| 633 | 
            +
                # Set the page view mode.
         | 
| 634 | 
            +
                #
         | 
| 635 | 
            +
                def set_pagebreak_view
         | 
| 636 | 
            +
                  @page_view = 2
         | 
| 618 637 | 
             
                end
         | 
| 619 638 |  | 
| 620 639 | 
             
                #
         | 
| @@ -649,7 +668,7 @@ module Writexlsx | |
| 649 668 | 
             
                  raise 'Header string must be less than 255 characters' if string.length > 255
         | 
| 650 669 |  | 
| 651 670 | 
             
                  # Replace the Excel placeholder &[Picture] with the internal &G.
         | 
| 652 | 
            -
                  @page_setup.header = string.gsub( | 
| 671 | 
            +
                  @page_setup.header = string.gsub("&[Picture]", '&G')
         | 
| 653 672 |  | 
| 654 673 | 
             
                  @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
         | 
| 655 674 |  | 
| @@ -665,7 +684,7 @@ module Writexlsx | |
| 665 684 | 
             
                  end
         | 
| 666 685 |  | 
| 667 686 | 
             
                  # placeholeder /&G/ の数
         | 
| 668 | 
            -
                  placeholder_count = @page_setup.header.scan( | 
| 687 | 
            +
                  placeholder_count = @page_setup.header.scan("&G").count
         | 
| 669 688 |  | 
| 670 689 | 
             
                  image_count = @header_images.count
         | 
| 671 690 |  | 
| @@ -686,7 +705,7 @@ module Writexlsx | |
| 686 705 | 
             
                  @page_setup.footer = string.dup
         | 
| 687 706 |  | 
| 688 707 | 
             
                  # Replace the Excel placeholder &[Picture] with the internal &G.
         | 
| 689 | 
            -
                  @page_setup.footer = string.gsub( | 
| 708 | 
            +
                  @page_setup.footer = string.gsub("&[Picture]", '&G')
         | 
| 690 709 |  | 
| 691 710 | 
             
                  @page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
         | 
| 692 711 |  | 
| @@ -702,7 +721,7 @@ module Writexlsx | |
| 702 721 | 
             
                  end
         | 
| 703 722 |  | 
| 704 723 | 
             
                  # placeholeder /&G/ の数
         | 
| 705 | 
            -
                  placeholder_count = @page_setup.footer.scan( | 
| 724 | 
            +
                  placeholder_count = @page_setup.footer.scan("&G").count
         | 
| 706 725 |  | 
| 707 726 | 
             
                  image_count = @footer_images.count
         | 
| 708 727 |  | 
| @@ -1321,7 +1340,7 @@ module Writexlsx | |
| 1321 1340 | 
             
                # Utility method to strip equal sign and array braces from a formula
         | 
| 1322 1341 | 
             
                # and also expand out future and dynamic array formulas.
         | 
| 1323 1342 | 
             
                #
         | 
| 1324 | 
            -
                def prepare_formula(given_formula)
         | 
| 1343 | 
            +
                def prepare_formula(given_formula, expand_future_functions = nil)
         | 
| 1325 1344 | 
             
                  # Ignore empty/null formulas.
         | 
| 1326 1345 | 
             
                  return given_formula unless ptrue?(given_formula)
         | 
| 1327 1346 |  | 
| @@ -1332,26 +1351,46 @@ module Writexlsx | |
| 1332 1351 | 
             
                  return formula if formula =~ /_xlfn\./
         | 
| 1333 1352 |  | 
| 1334 1353 | 
             
                  # Expand dynamic array formulas.
         | 
| 1335 | 
            -
                  formula = expand_formula(formula, ' | 
| 1354 | 
            +
                  formula = expand_formula(formula, 'ANCHORARRAY\(')
         | 
| 1355 | 
            +
                  formula = expand_formula(formula, 'BYCOL\(')
         | 
| 1356 | 
            +
                  formula = expand_formula(formula, 'BYROW\(')
         | 
| 1357 | 
            +
                  formula = expand_formula(formula, 'CHOOSECOLS\(')
         | 
| 1358 | 
            +
                  formula = expand_formula(formula, 'CHOOSEROWS\(')
         | 
| 1359 | 
            +
                  formula = expand_formula(formula, 'DROP\(')
         | 
| 1360 | 
            +
                  formula = expand_formula(formula, 'EXPAND\(')
         | 
| 1361 | 
            +
                  formula = expand_formula(formula, 'FILTER\(', '._xlws')
         | 
| 1362 | 
            +
                  formula = expand_formula(formula, 'HSTACK\(')
         | 
| 1336 1363 | 
             
                  formula = expand_formula(formula, 'LAMBDA\(')
         | 
| 1364 | 
            +
                  formula = expand_formula(formula, 'MAKEARRAY\(')
         | 
| 1365 | 
            +
                  formula = expand_formula(formula, 'MAP\(')
         | 
| 1366 | 
            +
                  formula = expand_formula(formula, 'RANDARRAY\(')
         | 
| 1367 | 
            +
                  formula = expand_formula(formula, 'REDUCE\(')
         | 
| 1368 | 
            +
                  formula = expand_formula(formula, 'SCAN\(')
         | 
| 1369 | 
            +
                  formula = expand_formula(formula, 'SEQUENCE\(')
         | 
| 1337 1370 | 
             
                  formula = expand_formula(formula, 'SINGLE\(')
         | 
| 1371 | 
            +
                  formula = expand_formula(formula, 'SORT\(', '._xlws')
         | 
| 1338 1372 | 
             
                  formula = expand_formula(formula, 'SORTBY\(')
         | 
| 1373 | 
            +
                  formula = expand_formula(formula, 'SWITCH\(')
         | 
| 1374 | 
            +
                  formula = expand_formula(formula, 'TAKE\(')
         | 
| 1375 | 
            +
                  formula = expand_formula(formula, 'TEXTSPLIT\(')
         | 
| 1376 | 
            +
                  formula = expand_formula(formula, 'TOCOL\(')
         | 
| 1377 | 
            +
                  formula = expand_formula(formula, 'TOROW\(')
         | 
| 1339 1378 | 
             
                  formula = expand_formula(formula, 'UNIQUE\(')
         | 
| 1340 | 
            -
                  formula = expand_formula(formula, ' | 
| 1379 | 
            +
                  formula = expand_formula(formula, 'VSTACK\(')
         | 
| 1380 | 
            +
                  formula = expand_formula(formula, 'WRAPCOLS\(')
         | 
| 1381 | 
            +
                  formula = expand_formula(formula, 'WRAPROWS\(')
         | 
| 1341 1382 | 
             
                  formula = expand_formula(formula, 'XLOOKUP\(')
         | 
| 1342 | 
            -
                  formula = expand_formula(formula, 'SEQUENCE\(')
         | 
| 1343 | 
            -
                  formula = expand_formula(formula, 'RANDARRAY\(')
         | 
| 1344 | 
            -
                  formula = expand_formula(formula, 'SORT\(', '._xlws')
         | 
| 1345 | 
            -
                  formula = expand_formula(formula, 'ANCHORARRAY\(')
         | 
| 1346 | 
            -
                  formula = expand_formula(formula, 'FILTER\(', '._xlws')
         | 
| 1347 1383 |  | 
| 1348 | 
            -
                   | 
| 1384 | 
            +
                  if !@use_future_functions && !ptrue?(expand_future_functions)
         | 
| 1385 | 
            +
                    return formula
         | 
| 1386 | 
            +
                  end
         | 
| 1349 1387 |  | 
| 1350 1388 | 
             
                  # Future functions.
         | 
| 1351 1389 | 
             
                  formula = expand_formula(formula, 'ACOTH\(')
         | 
| 1352 1390 | 
             
                  formula = expand_formula(formula, 'ACOT\(')
         | 
| 1353 1391 | 
             
                  formula = expand_formula(formula, 'AGGREGATE\(')
         | 
| 1354 1392 | 
             
                  formula = expand_formula(formula, 'ARABIC\(')
         | 
| 1393 | 
            +
                  formula = expand_formula(formula, 'ARRAYTOTEXT\(')
         | 
| 1355 1394 | 
             
                  formula = expand_formula(formula, 'BASE\(')
         | 
| 1356 1395 | 
             
                  formula = expand_formula(formula, 'BETA.DIST\(')
         | 
| 1357 1396 | 
             
                  formula = expand_formula(formula, 'BETA.INV\(')
         | 
| @@ -1416,7 +1455,9 @@ module Writexlsx | |
| 1416 1455 | 
             
                  formula = expand_formula(formula, 'IMSINH\(')
         | 
| 1417 1456 | 
             
                  formula = expand_formula(formula, 'IMTAN\(')
         | 
| 1418 1457 | 
             
                  formula = expand_formula(formula, 'ISFORMULA\(')
         | 
| 1458 | 
            +
                  formula = expand_formula(formula, 'ISOMITTED\(')
         | 
| 1419 1459 | 
             
                  formula = expand_formula(formula, 'ISOWEEKNUM\(')
         | 
| 1460 | 
            +
                  formula = expand_formula(formula, 'LET\(')
         | 
| 1420 1461 | 
             
                  formula = expand_formula(formula, 'LOGNORM.DIST\(')
         | 
| 1421 1462 | 
             
                  formula = expand_formula(formula, 'LOGNORM.INV\(')
         | 
| 1422 1463 | 
             
                  formula = expand_formula(formula, 'MAXIFS\(')
         | 
| @@ -1451,24 +1492,26 @@ module Writexlsx | |
| 1451 1492 | 
             
                  formula = expand_formula(formula, 'SKEW.P\(')
         | 
| 1452 1493 | 
             
                  formula = expand_formula(formula, 'STDEV.P\(')
         | 
| 1453 1494 | 
             
                  formula = expand_formula(formula, 'STDEV.S\(')
         | 
| 1454 | 
            -
                  formula = expand_formula(formula, 'SWITCH\(')
         | 
| 1455 1495 | 
             
                  formula = expand_formula(formula, 'T.DIST.2T\(')
         | 
| 1456 1496 | 
             
                  formula = expand_formula(formula, 'T.DIST.RT\(')
         | 
| 1457 1497 | 
             
                  formula = expand_formula(formula, 'T.DIST\(')
         | 
| 1458 1498 | 
             
                  formula = expand_formula(formula, 'T.INV.2T\(')
         | 
| 1459 1499 | 
             
                  formula = expand_formula(formula, 'T.INV\(')
         | 
| 1460 1500 | 
             
                  formula = expand_formula(formula, 'T.TEST\(')
         | 
| 1501 | 
            +
                  formula = expand_formula(formula, 'TEXTAFTER\(')
         | 
| 1502 | 
            +
                  formula = expand_formula(formula, 'TEXTBEFORE\(')
         | 
| 1461 1503 | 
             
                  formula = expand_formula(formula, 'TEXTJOIN\(')
         | 
| 1462 1504 | 
             
                  formula = expand_formula(formula, 'UNICHAR\(')
         | 
| 1463 1505 | 
             
                  formula = expand_formula(formula, 'UNICODE\(')
         | 
| 1506 | 
            +
                  formula = expand_formula(formula, 'VALUETOTEXT\(')
         | 
| 1464 1507 | 
             
                  formula = expand_formula(formula, 'VAR.P\(')
         | 
| 1465 1508 | 
             
                  formula = expand_formula(formula, 'VAR.S\(')
         | 
| 1466 1509 | 
             
                  formula = expand_formula(formula, 'WEBSERVICE\(')
         | 
| 1467 1510 | 
             
                  formula = expand_formula(formula, 'WEIBULL.DIST\(')
         | 
| 1511 | 
            +
                  formula = expand_formula(formula, 'XMATCH\(')
         | 
| 1468 1512 | 
             
                  formula = expand_formula(formula, 'XOR\(')
         | 
| 1469 1513 | 
             
                  expand_formula(formula, 'Z.TEST\(')
         | 
| 1470 1514 | 
             
                end
         | 
| 1471 | 
            -
                private :prepare_formula
         | 
| 1472 1515 |  | 
| 1473 1516 | 
             
                #
         | 
| 1474 1517 | 
             
                # :call-seq:
         | 
| @@ -1552,7 +1595,7 @@ module Writexlsx | |
| 1552 1595 | 
             
                          end
         | 
| 1553 1596 |  | 
| 1554 1597 | 
             
                  # Modify the formula string, as needed.
         | 
| 1555 | 
            -
                  formula = prepare_formula(formula)
         | 
| 1598 | 
            +
                  formula = prepare_formula(formula, 1)
         | 
| 1556 1599 |  | 
| 1557 1600 | 
             
                  store_data_to_table(
         | 
| 1558 1601 | 
             
                    if type == 'a'
         | 
| @@ -2927,7 +2970,7 @@ module Writexlsx | |
| 2927 2970 | 
             
                  tokens.map! do |token|
         | 
| 2928 2971 | 
             
                    token.sub!(/^"/, '')
         | 
| 2929 2972 | 
             
                    token.sub!(/"$/, '')
         | 
| 2930 | 
            -
                    token.gsub!( | 
| 2973 | 
            +
                    token.gsub!('""', '"')
         | 
| 2931 2974 |  | 
| 2932 2975 | 
             
                    # if token is number, convert to numeric.
         | 
| 2933 2976 | 
             
                    if token =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/
         | 
| @@ -3209,13 +3252,13 @@ module Writexlsx | |
| 3209 3252 | 
             
                      target = escape_url(url.sub(/^external:/, ''))
         | 
| 3210 3253 |  | 
| 3211 3254 | 
             
                      # Additional escape not required in worksheet hyperlinks
         | 
| 3212 | 
            -
                      target = target.gsub( | 
| 3255 | 
            +
                      target = target.gsub("#", '%23')
         | 
| 3213 3256 |  | 
| 3214 3257 | 
             
                      # Prefix absolute paths (not relative) with file:///
         | 
| 3215 3258 | 
             
                      target = if target =~ /^\w:/ || target =~ /^\\\\/
         | 
| 3216 3259 | 
             
                                 "file:///#{target}"
         | 
| 3217 3260 | 
             
                               else
         | 
| 3218 | 
            -
                                 target.gsub( | 
| 3261 | 
            +
                                 target.gsub("\\", '/')
         | 
| 3219 3262 | 
             
                               end
         | 
| 3220 3263 | 
             
                    end
         | 
| 3221 3264 |  | 
| @@ -3438,7 +3481,7 @@ EOS | |
| 3438 3481 | 
             
                def encode_password(password) # :nodoc:
         | 
| 3439 3482 | 
             
                  hash = 0
         | 
| 3440 3483 |  | 
| 3441 | 
            -
                  password.reverse.split( | 
| 3484 | 
            +
                  password.reverse.split("").each do |char|
         | 
| 3442 3485 | 
             
                    hash = ((hash >> 14) & 0x01) | ((hash << 1) & 0x7fff)
         | 
| 3443 3486 | 
             
                    hash ^= char.ord
         | 
| 3444 3487 | 
             
                  end
         | 
| @@ -3560,16 +3603,27 @@ EOS | |
| 3560 3603 | 
             
                  attributes << ["showOutlineSymbols", 0] if @outline_on
         | 
| 3561 3604 |  | 
| 3562 3605 | 
             
                  # Set the page view/layout mode if required.
         | 
| 3563 | 
            -
                   | 
| 3564 | 
            -
                   | 
| 3606 | 
            +
                  case @page_view
         | 
| 3607 | 
            +
                  when 1
         | 
| 3608 | 
            +
                    attributes << %w[view pageLayout]
         | 
| 3609 | 
            +
                  when 2
         | 
| 3610 | 
            +
                    attributes << %w[view pageBreakPreview]
         | 
| 3611 | 
            +
                  end
         | 
| 3565 3612 |  | 
| 3566 3613 | 
             
                  # Set the first visible cell.
         | 
| 3567 3614 | 
             
                  attributes << ['topLeftCell', @top_left_cell] if ptrue?(@top_left_cell)
         | 
| 3568 3615 |  | 
| 3569 3616 | 
             
                  # Set the zoom level.
         | 
| 3570 3617 | 
             
                  if @zoom != 100
         | 
| 3571 | 
            -
                    attributes << ['zoomScale', @zoom] | 
| 3572 | 
            -
             | 
| 3618 | 
            +
                    attributes << ['zoomScale', @zoom]
         | 
| 3619 | 
            +
             | 
| 3620 | 
            +
                    if @page_view == 1
         | 
| 3621 | 
            +
                      attributes << ['zoomScalePageLayoutView', @zoom]
         | 
| 3622 | 
            +
                    elsif @page_view == 2
         | 
| 3623 | 
            +
                      attributes << ['zoomScaleSheetLayoutView', @zoom]
         | 
| 3624 | 
            +
                    elsif ptrue?(@zoom_scale_normal)
         | 
| 3625 | 
            +
                      attributes << ['zoomScaleNormal', @zoom]
         | 
| 3626 | 
            +
                    end
         | 
| 3573 3627 | 
             
                  end
         | 
| 3574 3628 |  | 
| 3575 3629 | 
             
                  attributes << ['workbookViewId', 0]
         | 
| @@ -3755,9 +3809,10 @@ EOS | |
| 3755 3809 |  | 
| 3756 3810 | 
             
                def write_cell_column_dimension(row_num)  # :nodoc:
         | 
| 3757 3811 | 
             
                  row = @cell_data_table[row_num]
         | 
| 3812 | 
            +
                  row_name = (row_num + 1).to_s
         | 
| 3758 3813 | 
             
                  (@dim_colmin..@dim_colmax).each do |col_num|
         | 
| 3759 3814 | 
             
                    if (cell = row[col_num])
         | 
| 3760 | 
            -
                      cell.write_cell(self, row_num, col_num)
         | 
| 3815 | 
            +
                      cell.write_cell(self, row_num, row_name, col_num)
         | 
| 3761 3816 | 
             
                    end
         | 
| 3762 3817 | 
             
                  end
         | 
| 3763 3818 | 
             
                end
         | 
| @@ -4756,10 +4811,6 @@ EOS | |
| 4756 4811 | 
             
                  ptrue?(@zoom_scale_normal)
         | 
| 4757 4812 | 
             
                end
         | 
| 4758 4813 |  | 
| 4759 | 
            -
                def page_view? # :nodoc:
         | 
| 4760 | 
            -
                  !!@page_view
         | 
| 4761 | 
            -
                end
         | 
| 4762 | 
            -
             | 
| 4763 4814 | 
             
                def right_to_left? # :nodoc:
         | 
| 4764 4815 | 
             
                  !!@right_to_left
         | 
| 4765 4816 | 
             
                end
         | 
    
        data/write_xlsx.gemspec
    CHANGED
    
    | @@ -20,9 +20,11 @@ Gem::Specification.new do |gem| | |
| 20 20 | 
             
              end
         | 
| 21 21 | 
             
              gem.executables   = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
         | 
| 22 22 | 
             
              gem.require_paths = ['lib']
         | 
| 23 | 
            +
              gem.add_runtime_dependency 'nkf'
         | 
| 23 24 | 
             
              gem.add_runtime_dependency 'rubyzip', '>= 1.0.0'
         | 
| 24 25 | 
             
              gem.add_development_dependency 'byebug'
         | 
| 25 26 | 
             
              gem.add_development_dependency 'minitest'
         | 
| 27 | 
            +
              gem.add_development_dependency 'mutex_m'
         | 
| 26 28 | 
             
              gem.add_development_dependency 'rake'
         | 
| 27 29 | 
             
              gem.add_development_dependency 'rubocop'
         | 
| 28 30 | 
             
              gem.add_development_dependency 'rubocop-minitest'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,15 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: write_xlsx
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.11. | 
| 4 | 
            +
              version: 1.11.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Hideo NAKAMURA
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023- | 
| 11 | 
            +
            date: 2023-12-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: nkf
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ">="
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: '0'
         | 
| 20 | 
            +
              type: :runtime
         | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 24 | 
            +
                - - ">="
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            +
                    version: '0'
         | 
| 13 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 28 | 
             
              name: rubyzip
         | 
| 15 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -52,6 +66,20 @@ dependencies: | |
| 52 66 | 
             
                - - ">="
         | 
| 53 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 68 | 
             
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: mutex_m
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - ">="
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ">="
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 55 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 84 | 
             
              name: rake
         | 
| 57 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -276,7 +304,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 276 304 | 
             
                - !ruby/object:Gem::Version
         | 
| 277 305 | 
             
                  version: '0'
         | 
| 278 306 | 
             
            requirements: []
         | 
| 279 | 
            -
            rubygems_version: 3. | 
| 307 | 
            +
            rubygems_version: 3.5.3
         | 
| 280 308 | 
             
            signing_key:
         | 
| 281 309 | 
             
            specification_version: 4
         | 
| 282 310 | 
             
            summary: write_xlsx is a gem to create a new file in the Excel 2007+ XLSX format.
         |