write_xlsx 0.64.1 → 0.65.0
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/README.rdoc +10 -1
 - data/examples/conditional_format.rb +251 -18
 - data/examples/demo.rb +2 -3
 - data/examples/macros.rb +42 -0
 - data/examples/outline_collapsed.rb +160 -0
 - data/examples/republic.png +0 -0
 - data/examples/shape3.rb +2 -2
 - data/examples/shape4.rb +5 -5
 - data/examples/shape5.rb +6 -6
 - data/examples/shape6.rb +6 -6
 - data/examples/shape7.rb +11 -11
 - data/examples/shape8.rb +10 -10
 - data/examples/shape_all.rb +0 -0
 - data/examples/vbaProject.bin +0 -0
 - data/lib/write_xlsx/chart.rb +656 -56
 - data/lib/write_xlsx/chartsheet.rb +26 -2
 - data/lib/write_xlsx/format.rb +50 -27
 - data/lib/write_xlsx/formats.rb +32 -0
 - data/lib/write_xlsx/package/packager.rb +45 -238
 - data/lib/write_xlsx/package/table.rb +9 -18
 - data/lib/write_xlsx/package/xml_writer_simple.rb +26 -9
 - data/lib/write_xlsx/sheets.rb +223 -0
 - data/lib/write_xlsx/sparkline.rb +140 -4
 - data/lib/write_xlsx/version.rb +1 -1
 - data/lib/write_xlsx/workbook.rb +34 -121
 - data/lib/write_xlsx/worksheet/data_validation.rb +291 -0
 - data/lib/write_xlsx/worksheet/hyperlink.rb +111 -0
 - data/lib/write_xlsx/worksheet/page_setup.rb +170 -0
 - data/lib/write_xlsx/worksheet.rb +1112 -1334
 - data/test/helper.rb +1 -1
 - data/test/package/styles/test_styles_01.rb +1 -10
 - data/test/package/styles/test_styles_02.rb +1 -10
 - data/test/package/styles/test_styles_03.rb +1 -10
 - data/test/package/styles/test_styles_04.rb +1 -10
 - data/test/package/styles/test_styles_05.rb +1 -10
 - data/test/package/styles/test_styles_06.rb +1 -10
 - data/test/package/styles/test_styles_07.rb +1 -10
 - data/test/package/styles/test_styles_08.rb +1 -10
 - data/test/package/styles/test_styles_09.rb +1 -10
 - data/test/perl_output/conditional_format.xlsx +0 -0
 - data/test/perl_output/outline_collapsed.xlsx +0 -0
 - data/test/perl_output/protection.xlsx +0 -0
 - data/test/regression/test_chart_gap01.rb +47 -0
 - data/test/regression/test_chart_gap02.rb +47 -0
 - data/test/regression/test_chart_gap03.rb +47 -0
 - data/test/regression/test_format05.rb +26 -0
 - data/test/regression/test_rich_string12.rb +32 -0
 - data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
 - data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
 - data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
 - data/test/regression/xlsx_files/format05.xlsx +0 -0
 - data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
 - data/test/test_example_match.rb +253 -20
 - data/test/worksheet/test_set_column.rb +25 -0
 - data/test/worksheet/test_worksheet_03.rb +1 -1
 - data/test/worksheet/test_worksheet_04.rb +1 -1
 - data/test/worksheet/test_write_array_formula_01.rb +7 -0
 - data/test/worksheet/test_write_col_breaks.rb +2 -2
 - data/test/worksheet/test_write_col_info.rb +8 -8
 - data/test/worksheet/test_write_conditional_formatting.rb +4 -4
 - data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +18 -0
 - data/test/worksheet/test_write_header_footer.rb +8 -3
 - data/test/worksheet/test_write_hyperlink.rb +10 -5
 - data/test/worksheet/test_write_merge_cells.rb +6 -6
 - data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
 - data/test/worksheet/test_write_page_setup.rb +1 -1
 - data/test/worksheet/test_write_row_breaks.rb +2 -2
 - data/test/worksheet/test_write_row_element.rb +1 -1
 - data/test/worksheet/test_write_sheet_pr.rb +2 -2
 - data/test/worksheet/test_write_sheet_view.rb +0 -9
 - data/test/worksheet/test_write_url.rb +19 -0
 - data/test/worksheet/test_write_worksheet_attributes.rb +21 -0
 - metadata +38 -5
 - data/lib/write_xlsx/worksheet/print_style.rb +0 -51
 - data/test/worksheet/test_write_worksheet.rb +0 -19
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 30c458c96dc291036baa7b64c8099b044c10e18c
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 589e734bee933c9ab1f0904f59ce69f101251159
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 1865380215d25cfa2e16af387be17263669fb62bea666e75f10f1f2719450120eed303aaea7f457ac60514af0d323c8552409bfacdae573ae19b4349cb42c5f7
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 645cd41d3b387e77448b97494ccd87f2f39a29a49b21202f699b99a776845ef0d159044283556ae57ef0d2b0ff5fcc6a35ab4390a6da205ef8c557d1b46db368
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            = write_xlsx
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module Excel::Writer::XLSX-0. 
     | 
| 
      
 3 
     | 
    
         
            +
            gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module Excel::Writer::XLSX-0.65, https://github.com/jmcnamara/excel-writer-xlsx .
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            == Description
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -75,6 +75,15 @@ the first worksheet in an Excel XML spreadsheet called ruby.xlsx: 
     | 
|
| 
       75 
75 
     | 
    
         
             
              workbook.close
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
            == Recent change
         
     | 
| 
      
 78 
     | 
    
         
            +
            2013-03-23 v0.65.0
         
     | 
| 
      
 79 
     | 
    
         
            +
               Added options to format series Gap/Overlap for Bar/Column charts.
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
               Bug fix in Worksheet#write_formula
         
     | 
| 
      
 82 
     | 
    
         
            +
               (write_formula change original formula string)
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
               Bug fix in Worksheet#set_column
         
     | 
| 
      
 85 
     | 
    
         
            +
               (failure when parameter level is out of range)
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
       78 
87 
     | 
    
         
             
            2013-03-06 v0.64.1
         
     | 
| 
       79 
88 
     | 
    
         
             
               Bug fix in handling utf-8 string under ruby 1.8.7
         
     | 
| 
       80 
89 
     | 
    
         
             
               (examples/demo.rb failed under ruby 1.8.7)
         
     | 
| 
         @@ -6,6 +6,13 @@ require 'write_xlsx' 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            workbook  = WriteXLSX.new('conditional_format.xlsx')
         
     | 
| 
       8 
8 
     | 
    
         
             
            worksheet1 = workbook.add_worksheet
         
     | 
| 
      
 9 
     | 
    
         
            +
            worksheet2 = workbook.add_worksheet
         
     | 
| 
      
 10 
     | 
    
         
            +
            worksheet3 = workbook.add_worksheet
         
     | 
| 
      
 11 
     | 
    
         
            +
            worksheet4 = workbook.add_worksheet
         
     | 
| 
      
 12 
     | 
    
         
            +
            worksheet5 = workbook.add_worksheet
         
     | 
| 
      
 13 
     | 
    
         
            +
            worksheet6 = workbook.add_worksheet
         
     | 
| 
      
 14 
     | 
    
         
            +
            worksheet7 = workbook.add_worksheet
         
     | 
| 
      
 15 
     | 
    
         
            +
            worksheet8 = workbook.add_worksheet
         
     | 
| 
       9 
16 
     | 
    
         | 
| 
       10 
17 
     | 
    
         
             
            # Light red fill with dark red text.
         
     | 
| 
       11 
18 
     | 
    
         
             
            format1 = workbook.add_format(
         
     | 
| 
         @@ -21,24 +28,24 @@ format2 = workbook.add_format( 
     | 
|
| 
       21 
28 
     | 
    
         | 
| 
       22 
29 
     | 
    
         
             
            # Some sample data to run the conditional formatting against.
         
     | 
| 
       23 
30 
     | 
    
         
             
            data = [
         
     | 
| 
       24 
     | 
    
         
            -
                [  
     | 
| 
       25 
     | 
    
         
            -
                [  
     | 
| 
       26 
     | 
    
         
            -
                [  
     | 
| 
       27 
     | 
    
         
            -
                [  
     | 
| 
       28 
     | 
    
         
            -
                [  
     | 
| 
       29 
     | 
    
         
            -
                [  
     | 
| 
       30 
     | 
    
         
            -
                [  
     | 
| 
       31 
     | 
    
         
            -
                [  
     | 
| 
       32 
     | 
    
         
            -
                [  
     | 
| 
       33 
     | 
    
         
            -
                [  
     | 
| 
      
 31 
     | 
    
         
            +
                [ 34, 72,  38, 30, 75, 48, 75, 66, 84, 86 ],
         
     | 
| 
      
 32 
     | 
    
         
            +
                [ 6,  24,  1,  84, 54, 62, 60, 3,  26, 59 ],
         
     | 
| 
      
 33 
     | 
    
         
            +
                [ 28, 79,  97, 13, 85, 93, 93, 22, 5,  14 ],
         
     | 
| 
      
 34 
     | 
    
         
            +
                [ 27, 71,  40, 17, 18, 79, 90, 93, 29, 47 ],
         
     | 
| 
      
 35 
     | 
    
         
            +
                [ 88, 25,  33, 23, 67, 1,  59, 79, 47, 36 ],
         
     | 
| 
      
 36 
     | 
    
         
            +
                [ 24, 100, 20, 88, 29, 33, 38, 54, 54, 88 ],
         
     | 
| 
      
 37 
     | 
    
         
            +
                [ 6,  57,  88, 28, 10, 26, 37, 7,  41, 48 ],
         
     | 
| 
      
 38 
     | 
    
         
            +
                [ 52, 78,  1,  96, 26, 45, 47, 33, 96, 36 ],
         
     | 
| 
      
 39 
     | 
    
         
            +
                [ 60, 54,  81, 66, 81, 90, 80, 93, 12, 55 ],
         
     | 
| 
      
 40 
     | 
    
         
            +
                [ 70, 5,   46, 14, 71, 19, 66, 36, 41, 21 ]
         
     | 
| 
       34 
41 
     | 
    
         
             
            ]
         
     | 
| 
       35 
42 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            # 
     | 
| 
       38 
     | 
    
         
            -
            #  
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 43 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 44 
     | 
    
         
            +
            #
         
     | 
| 
      
 45 
     | 
    
         
            +
            # Example 1.
         
     | 
| 
      
 46 
     | 
    
         
            +
            #
         
     | 
| 
       40 
47 
     | 
    
         
             
            caption = 'Cells with values >= 50 are in light red. ' +
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
              'Values < 50 are in light green.'
         
     | 
| 
       42 
49 
     | 
    
         | 
| 
       43 
50 
     | 
    
         
             
            # Write the data.
         
     | 
| 
       44 
51 
     | 
    
         
             
            worksheet1.write('A1', caption)
         
     | 
| 
         @@ -48,9 +55,9 @@ worksheet1.write_col('B3', data) 
     | 
|
| 
       48 
55 
     | 
    
         
             
            worksheet1.conditional_formatting('B3:K12',
         
     | 
| 
       49 
56 
     | 
    
         
             
                {
         
     | 
| 
       50 
57 
     | 
    
         
             
                    :type     => 'cell',
         
     | 
| 
       51 
     | 
    
         
            -
                    :format   => format1,
         
     | 
| 
       52 
58 
     | 
    
         
             
                    :criteria => '>=',
         
     | 
| 
       53 
     | 
    
         
            -
                    :value    => 50
         
     | 
| 
      
 59 
     | 
    
         
            +
                    :value    => 50,
         
     | 
| 
      
 60 
     | 
    
         
            +
                    :format   => format1
         
     | 
| 
       54 
61 
     | 
    
         
             
                }
         
     | 
| 
       55 
62 
     | 
    
         
             
            )
         
     | 
| 
       56 
63 
     | 
    
         | 
| 
         @@ -58,9 +65,235 @@ worksheet1.conditional_formatting('B3:K12', 
     | 
|
| 
       58 
65 
     | 
    
         
             
            worksheet1.conditional_formatting('B3:K12',
         
     | 
| 
       59 
66 
     | 
    
         
             
                {
         
     | 
| 
       60 
67 
     | 
    
         
             
                    :type     => 'cell',
         
     | 
| 
      
 68 
     | 
    
         
            +
                    :criteria => '<',
         
     | 
| 
      
 69 
     | 
    
         
            +
                    :value    => 50,
         
     | 
| 
      
 70 
     | 
    
         
            +
                    :format   => format2
         
     | 
| 
      
 71 
     | 
    
         
            +
                }
         
     | 
| 
      
 72 
     | 
    
         
            +
            )
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 76 
     | 
    
         
            +
            #
         
     | 
| 
      
 77 
     | 
    
         
            +
            # Example 2.
         
     | 
| 
      
 78 
     | 
    
         
            +
            #
         
     | 
| 
      
 79 
     | 
    
         
            +
            caption = 'Values between 30 and 70 are in light red. ' +
         
     | 
| 
      
 80 
     | 
    
         
            +
              'Values outside that range are in light green.'
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            worksheet2.write('A1', caption)
         
     | 
| 
      
 83 
     | 
    
         
            +
            worksheet2.write_col('B3', data)
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            worksheet2.conditional_formatting('B3:K12',
         
     | 
| 
      
 86 
     | 
    
         
            +
                {
         
     | 
| 
      
 87 
     | 
    
         
            +
                    :type     => 'cell',
         
     | 
| 
      
 88 
     | 
    
         
            +
                    :criteria => 'between',
         
     | 
| 
      
 89 
     | 
    
         
            +
                    :minimum  => 30,
         
     | 
| 
      
 90 
     | 
    
         
            +
                    :maximum  => 70,
         
     | 
| 
      
 91 
     | 
    
         
            +
                    :format   => format1
         
     | 
| 
      
 92 
     | 
    
         
            +
                }
         
     | 
| 
      
 93 
     | 
    
         
            +
            )
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            worksheet2.conditional_formatting('B3:K12',
         
     | 
| 
      
 96 
     | 
    
         
            +
                {
         
     | 
| 
      
 97 
     | 
    
         
            +
                    :type     => 'cell',
         
     | 
| 
      
 98 
     | 
    
         
            +
                    :criteria => 'not between',
         
     | 
| 
      
 99 
     | 
    
         
            +
                    :minimum  => 30,
         
     | 
| 
      
 100 
     | 
    
         
            +
                    :maximum  => 70,
         
     | 
| 
      
 101 
     | 
    
         
            +
                    :format   => format2
         
     | 
| 
      
 102 
     | 
    
         
            +
                }
         
     | 
| 
      
 103 
     | 
    
         
            +
            )
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 107 
     | 
    
         
            +
            #
         
     | 
| 
      
 108 
     | 
    
         
            +
            # Example 3.
         
     | 
| 
      
 109 
     | 
    
         
            +
            #
         
     | 
| 
      
 110 
     | 
    
         
            +
            caption = 'Duplicate values are in light red. ' +
         
     | 
| 
      
 111 
     | 
    
         
            +
              'Unique values are in light green.'
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
            worksheet3.write('A1', caption)
         
     | 
| 
      
 114 
     | 
    
         
            +
            worksheet3.write_col('B3', data)
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            worksheet3.conditional_formatting('B3:K12',
         
     | 
| 
      
 117 
     | 
    
         
            +
                {
         
     | 
| 
      
 118 
     | 
    
         
            +
                    :type     => 'duplicate',
         
     | 
| 
      
 119 
     | 
    
         
            +
                    :format   => format1,
         
     | 
| 
      
 120 
     | 
    
         
            +
                }
         
     | 
| 
      
 121 
     | 
    
         
            +
            )
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
            worksheet3.conditional_formatting('B3:K12',
         
     | 
| 
      
 124 
     | 
    
         
            +
                {
         
     | 
| 
      
 125 
     | 
    
         
            +
                    :type     => 'unique',
         
     | 
| 
       61 
126 
     | 
    
         
             
                    :format   => format2,
         
     | 
| 
      
 127 
     | 
    
         
            +
                }
         
     | 
| 
      
 128 
     | 
    
         
            +
            )
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 132 
     | 
    
         
            +
            #
         
     | 
| 
      
 133 
     | 
    
         
            +
            # Example 4.
         
     | 
| 
      
 134 
     | 
    
         
            +
            #
         
     | 
| 
      
 135 
     | 
    
         
            +
            caption = 'Above average values are in light red. ' +
         
     | 
| 
      
 136 
     | 
    
         
            +
              'Below average values are in light green.'
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            worksheet4.write('A1', caption)
         
     | 
| 
      
 139 
     | 
    
         
            +
            worksheet4.write_col('B3', data)
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            worksheet4.conditional_formatting('B3:K12',
         
     | 
| 
      
 142 
     | 
    
         
            +
                {
         
     | 
| 
      
 143 
     | 
    
         
            +
                    :type     => 'average',
         
     | 
| 
      
 144 
     | 
    
         
            +
                    :criteria => 'above',
         
     | 
| 
      
 145 
     | 
    
         
            +
                    :format   => format1
         
     | 
| 
      
 146 
     | 
    
         
            +
                }
         
     | 
| 
      
 147 
     | 
    
         
            +
            )
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
            worksheet4.conditional_formatting('B3:K12',
         
     | 
| 
      
 150 
     | 
    
         
            +
                {
         
     | 
| 
      
 151 
     | 
    
         
            +
                    :type     => 'average',
         
     | 
| 
      
 152 
     | 
    
         
            +
                    :criteria => 'below',
         
     | 
| 
      
 153 
     | 
    
         
            +
                    :format   => format2
         
     | 
| 
      
 154 
     | 
    
         
            +
                }
         
     | 
| 
      
 155 
     | 
    
         
            +
            )
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 159 
     | 
    
         
            +
            #
         
     | 
| 
      
 160 
     | 
    
         
            +
            # Example 5.
         
     | 
| 
      
 161 
     | 
    
         
            +
            #
         
     | 
| 
      
 162 
     | 
    
         
            +
            caption = 'Top 10 values are in light red. ' +
         
     | 
| 
      
 163 
     | 
    
         
            +
              'Bottom 10 values are in light green.'
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
            worksheet5.write('A1', caption)
         
     | 
| 
      
 166 
     | 
    
         
            +
            worksheet5.write_col('B3', data)
         
     | 
| 
      
 167 
     | 
    
         
            +
             
     | 
| 
      
 168 
     | 
    
         
            +
            worksheet5.conditional_formatting('B3:K12',
         
     | 
| 
      
 169 
     | 
    
         
            +
                {
         
     | 
| 
      
 170 
     | 
    
         
            +
                    :type     => 'top',
         
     | 
| 
      
 171 
     | 
    
         
            +
                    :value    => '10',
         
     | 
| 
      
 172 
     | 
    
         
            +
                    :format   => format1
         
     | 
| 
      
 173 
     | 
    
         
            +
                }
         
     | 
| 
      
 174 
     | 
    
         
            +
            )
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
            worksheet5.conditional_formatting('B3:K12',
         
     | 
| 
      
 177 
     | 
    
         
            +
                {
         
     | 
| 
      
 178 
     | 
    
         
            +
                    :type     => 'bottom',
         
     | 
| 
      
 179 
     | 
    
         
            +
                    :value    => '10',
         
     | 
| 
      
 180 
     | 
    
         
            +
                    :format   => format2
         
     | 
| 
      
 181 
     | 
    
         
            +
                }
         
     | 
| 
      
 182 
     | 
    
         
            +
            )
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 186 
     | 
    
         
            +
            #
         
     | 
| 
      
 187 
     | 
    
         
            +
            # Example 6.
         
     | 
| 
      
 188 
     | 
    
         
            +
            #
         
     | 
| 
      
 189 
     | 
    
         
            +
            caption = 'Cells with values >= 50 are in light red. ' +
         
     | 
| 
      
 190 
     | 
    
         
            +
              'Values < 50 are in light green. Non-contiguous ranges.'
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
            # Write the data.
         
     | 
| 
      
 193 
     | 
    
         
            +
            worksheet6.write('A1', caption)
         
     | 
| 
      
 194 
     | 
    
         
            +
            worksheet6.write_col('B3', data)
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
      
 196 
     | 
    
         
            +
            # Write a conditional format over a range.
         
     | 
| 
      
 197 
     | 
    
         
            +
            worksheet6.conditional_formatting('B3:K6,B9:K12',
         
     | 
| 
      
 198 
     | 
    
         
            +
                {
         
     | 
| 
      
 199 
     | 
    
         
            +
                    :type     => 'cell',
         
     | 
| 
      
 200 
     | 
    
         
            +
                    :criteria => '>=',
         
     | 
| 
      
 201 
     | 
    
         
            +
                    :value    => 50,
         
     | 
| 
      
 202 
     | 
    
         
            +
                    :format   => format1
         
     | 
| 
      
 203 
     | 
    
         
            +
                }
         
     | 
| 
      
 204 
     | 
    
         
            +
            )
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
            # Write another conditional format over the same range.
         
     | 
| 
      
 207 
     | 
    
         
            +
            worksheet6.conditional_formatting('B3:K6,B9:K12',
         
     | 
| 
      
 208 
     | 
    
         
            +
                {
         
     | 
| 
      
 209 
     | 
    
         
            +
                    :type     => 'cell',
         
     | 
| 
       62 
210 
     | 
    
         
             
                    :criteria => '<',
         
     | 
| 
       63 
     | 
    
         
            -
                    :value    => 50
         
     | 
| 
      
 211 
     | 
    
         
            +
                    :value    => 50,
         
     | 
| 
      
 212 
     | 
    
         
            +
                    :format   => format2
         
     | 
| 
      
 213 
     | 
    
         
            +
                }
         
     | 
| 
      
 214 
     | 
    
         
            +
            )
         
     | 
| 
      
 215 
     | 
    
         
            +
             
     | 
| 
      
 216 
     | 
    
         
            +
             
     | 
| 
      
 217 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 218 
     | 
    
         
            +
            #
         
     | 
| 
      
 219 
     | 
    
         
            +
            # Example 7.
         
     | 
| 
      
 220 
     | 
    
         
            +
            #
         
     | 
| 
      
 221 
     | 
    
         
            +
            caption = 'Examples of color scales and data bars. Default colors.'
         
     | 
| 
      
 222 
     | 
    
         
            +
             
     | 
| 
      
 223 
     | 
    
         
            +
            data = 1 .. 12
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
            worksheet7.write('A1', caption)
         
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
            worksheet7.write('B2', "2 Color Scale")
         
     | 
| 
      
 228 
     | 
    
         
            +
            worksheet7.write_col('B3', data)
         
     | 
| 
      
 229 
     | 
    
         
            +
             
     | 
| 
      
 230 
     | 
    
         
            +
            worksheet7.write('D2', "3 Color Scale")
         
     | 
| 
      
 231 
     | 
    
         
            +
            worksheet7.write_col('D3', data)
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
            worksheet7.write('F2', "Data Bars")
         
     | 
| 
      
 234 
     | 
    
         
            +
            worksheet7.write_col('F3', data)
         
     | 
| 
      
 235 
     | 
    
         
            +
             
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
      
 237 
     | 
    
         
            +
            worksheet7.conditional_formatting('B3:B14',
         
     | 
| 
      
 238 
     | 
    
         
            +
                {
         
     | 
| 
      
 239 
     | 
    
         
            +
                    :type => '2_color_scale'
         
     | 
| 
      
 240 
     | 
    
         
            +
                }
         
     | 
| 
      
 241 
     | 
    
         
            +
            )
         
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
      
 243 
     | 
    
         
            +
            worksheet7.conditional_formatting('D3:D14',
         
     | 
| 
      
 244 
     | 
    
         
            +
                {
         
     | 
| 
      
 245 
     | 
    
         
            +
                    :type => '3_color_scale'
         
     | 
| 
      
 246 
     | 
    
         
            +
                }
         
     | 
| 
      
 247 
     | 
    
         
            +
            )
         
     | 
| 
      
 248 
     | 
    
         
            +
             
     | 
| 
      
 249 
     | 
    
         
            +
            worksheet7.conditional_formatting('F3:F14',
         
     | 
| 
      
 250 
     | 
    
         
            +
                {
         
     | 
| 
      
 251 
     | 
    
         
            +
                    :type => 'data_bar'
         
     | 
| 
      
 252 
     | 
    
         
            +
                }
         
     | 
| 
      
 253 
     | 
    
         
            +
            )
         
     | 
| 
      
 254 
     | 
    
         
            +
             
     | 
| 
      
 255 
     | 
    
         
            +
             
     | 
| 
      
 256 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 257 
     | 
    
         
            +
            #
         
     | 
| 
      
 258 
     | 
    
         
            +
            # Example 8.
         
     | 
| 
      
 259 
     | 
    
         
            +
            #
         
     | 
| 
      
 260 
     | 
    
         
            +
            caption = 'Examples of color scales and data bars. Modified colors.'
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
      
 262 
     | 
    
         
            +
            data = 1 .. 12
         
     | 
| 
      
 263 
     | 
    
         
            +
             
     | 
| 
      
 264 
     | 
    
         
            +
            worksheet8.write('A1', caption)
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
            worksheet8.write('B2', "2 Color Scale")
         
     | 
| 
      
 267 
     | 
    
         
            +
            worksheet8.write_col('B3', data)
         
     | 
| 
      
 268 
     | 
    
         
            +
             
     | 
| 
      
 269 
     | 
    
         
            +
            worksheet8.write('D2', "3 Color Scale")
         
     | 
| 
      
 270 
     | 
    
         
            +
            worksheet8.write_col('D3', data)
         
     | 
| 
      
 271 
     | 
    
         
            +
             
     | 
| 
      
 272 
     | 
    
         
            +
            worksheet8.write('F2', "Data Bars")
         
     | 
| 
      
 273 
     | 
    
         
            +
            worksheet8.write_col('F3', data)
         
     | 
| 
      
 274 
     | 
    
         
            +
             
     | 
| 
      
 275 
     | 
    
         
            +
             
     | 
| 
      
 276 
     | 
    
         
            +
            worksheet8.conditional_formatting('B3:B14',
         
     | 
| 
      
 277 
     | 
    
         
            +
                {
         
     | 
| 
      
 278 
     | 
    
         
            +
                    :type      => '2_color_scale',
         
     | 
| 
      
 279 
     | 
    
         
            +
                    :min_color => "#FF0000",
         
     | 
| 
      
 280 
     | 
    
         
            +
                    :max_color => "#00FF00"
         
     | 
| 
      
 281 
     | 
    
         
            +
                }
         
     | 
| 
      
 282 
     | 
    
         
            +
            )
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
            worksheet8.conditional_formatting('D3:D14',
         
     | 
| 
      
 285 
     | 
    
         
            +
                {
         
     | 
| 
      
 286 
     | 
    
         
            +
                    :type      => '3_color_scale',
         
     | 
| 
      
 287 
     | 
    
         
            +
                    :min_color => "#C5D9F1",
         
     | 
| 
      
 288 
     | 
    
         
            +
                    :mid_color => "#8DB4E3",
         
     | 
| 
      
 289 
     | 
    
         
            +
                    :max_color => "#538ED5"
         
     | 
| 
      
 290 
     | 
    
         
            +
                }
         
     | 
| 
      
 291 
     | 
    
         
            +
            )
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
      
 293 
     | 
    
         
            +
            worksheet8.conditional_formatting('F3:F14',
         
     | 
| 
      
 294 
     | 
    
         
            +
                {
         
     | 
| 
      
 295 
     | 
    
         
            +
                    :type      => 'data_bar',
         
     | 
| 
      
 296 
     | 
    
         
            +
                    :bar_color => '#63C384'
         
     | 
| 
       64 
297 
     | 
    
         
             
                }
         
     | 
| 
       65 
298 
     | 
    
         
             
            )
         
     | 
| 
       66 
299 
     | 
    
         | 
    
        data/examples/demo.rb
    CHANGED
    
    | 
         @@ -88,9 +88,8 @@ worksheet.write('B9', 'http://www.ruby-lang.org/', hyperlink_format) 
     | 
|
| 
       88 
88 
     | 
    
         
             
            #
         
     | 
| 
       89 
89 
     | 
    
         
             
            # Images
         
     | 
| 
       90 
90 
     | 
    
         
             
            #
         
     | 
| 
       91 
     | 
    
         
            -
             
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
            #worksheet.insert_image('B10', 'republic.png', 16, 8)
         
     | 
| 
      
 91 
     | 
    
         
            +
            worksheet.write('A10', "Images")
         
     | 
| 
      
 92 
     | 
    
         
            +
            worksheet.insert_image('B10', 'republic.png', 16, 8)
         
     | 
| 
       94 
93 
     | 
    
         | 
| 
       95 
94 
     | 
    
         | 
| 
       96 
95 
     | 
    
         
             
            #######################################################################
         
     | 
    
        data/examples/macros.rb
    ADDED
    
    | 
         @@ -0,0 +1,42 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #######################################################################
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            # An example of adding macros to an WriteXLSX file using VBA project file
         
     | 
| 
      
 7 
     | 
    
         
            +
            # extracted from an existing Excel xlsm file.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            # The +extract_vba.rb+ utility supplied with WriteXLSX can be used to extract
         
     | 
| 
      
 10 
     | 
    
         
            +
            # the vbaProject.bin file.
         
     | 
| 
      
 11 
     | 
    
         
            +
            #
         
     | 
| 
      
 12 
     | 
    
         
            +
            # An embedded macro is connected to a form button on the worksheet.
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # reverse(c), November 2012, John McNamara, jmcnamara@cpan.org
         
     | 
| 
      
 15 
     | 
    
         
            +
            # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 19 
     | 
    
         
            +
            require 'write_xlsx'
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            # Note the file extension should be .xlsm.
         
     | 
| 
      
 22 
     | 
    
         
            +
            workbook  = WriteXLSX.new('macros.xlsm')
         
     | 
| 
      
 23 
     | 
    
         
            +
            worksheet = workbook.add_worksheet
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            worksheet.set_column('A:A', 30)
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # Add the VBA project binary.
         
     | 
| 
      
 28 
     | 
    
         
            +
            workbook.add_vba_project('./vbaProject.bin')
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # Show text for the end user.
         
     | 
| 
      
 31 
     | 
    
         
            +
            worksheet.write('A3', 'Press the button to say hello.')
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            # Add a button tied to a macro in the VBA project.
         
     | 
| 
      
 34 
     | 
    
         
            +
            worksheet.insert_button(
         
     | 
| 
      
 35 
     | 
    
         
            +
                                    'B3',
         
     | 
| 
      
 36 
     | 
    
         
            +
                                    :macro   => 'say_hello',
         
     | 
| 
      
 37 
     | 
    
         
            +
                                    :caption => 'Press Me',
         
     | 
| 
      
 38 
     | 
    
         
            +
                                    :width   => 80,
         
     | 
| 
      
 39 
     | 
    
         
            +
                                    :height  => 30
         
     | 
| 
      
 40 
     | 
    
         
            +
                                    )
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            workbook.close
         
     | 
| 
         @@ -0,0 +1,160 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            # -*- coding: utf-8 -*-
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # Example of how to use Excel::Writer::XLSX to generate Excel outlines and
         
     | 
| 
      
 6 
     | 
    
         
            +
            # grouping.
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # These examples focus mainly on collapsed outlines. See also the
         
     | 
| 
      
 9 
     | 
    
         
            +
            # outlines.pl example program for more general examples.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # reverse ('(c)'), March 2008, John McNamara, jmcnamara@cpan.org
         
     | 
| 
      
 12 
     | 
    
         
            +
            # convert to ruby by Hideo NAKAMURA, cxn03651@msj.biglobe.ne.jp
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'write_xlsx'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            # Create a new workbook and add some worksheets
         
     | 
| 
      
 19 
     | 
    
         
            +
            workbook   = WriteXLSX.new('outline.xlsx')
         
     | 
| 
      
 20 
     | 
    
         
            +
            worksheet1 = workbook.add_worksheet('Outlined Rows')
         
     | 
| 
      
 21 
     | 
    
         
            +
            worksheet2 = workbook.add_worksheet('Collapsed Rows 1')
         
     | 
| 
      
 22 
     | 
    
         
            +
            worksheet3 = workbook.add_worksheet('Collapsed Rows 2')
         
     | 
| 
      
 23 
     | 
    
         
            +
            worksheet4 = workbook.add_worksheet('Collapsed Rows 3')
         
     | 
| 
      
 24 
     | 
    
         
            +
            worksheet5 = workbook.add_worksheet('Outline Columns')
         
     | 
| 
      
 25 
     | 
    
         
            +
            worksheet6 = workbook.add_worksheet('Collapsed Columns')
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            # Add a general format
         
     | 
| 
      
 28 
     | 
    
         
            +
            bold = workbook.add_format(:bold => 1)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 31 
     | 
    
         
            +
            #
         
     | 
| 
      
 32 
     | 
    
         
            +
            # Example 1: Create a worksheet with outlined rows. It also includes SUBTOTAL()
         
     | 
| 
      
 33 
     | 
    
         
            +
            # functions so that it looks like the type of automatic outlines that are
         
     | 
| 
      
 34 
     | 
    
         
            +
            # generated when you use the Excel Data->SubTotals menu item.
         
     | 
| 
      
 35 
     | 
    
         
            +
            #
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            # The syntax is: set_row(row, height, XF, hidden, level, collapsed)
         
     | 
| 
      
 38 
     | 
    
         
            +
            worksheet1.set_row(1, nil, nil, 0, 2)
         
     | 
| 
      
 39 
     | 
    
         
            +
            worksheet1.set_row(2, nil, nil, 0, 2)
         
     | 
| 
      
 40 
     | 
    
         
            +
            worksheet1.set_row(3, nil, nil, 0, 2)
         
     | 
| 
      
 41 
     | 
    
         
            +
            worksheet1.set_row(4, nil, nil, 0, 2)
         
     | 
| 
      
 42 
     | 
    
         
            +
            worksheet1.set_row(5, nil, nil, 0, 1)
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            worksheet1.set_row(6,  nil, nil, 0, 2)
         
     | 
| 
      
 45 
     | 
    
         
            +
            worksheet1.set_row(7,  nil, nil, 0, 2)
         
     | 
| 
      
 46 
     | 
    
         
            +
            worksheet1.set_row(8,  nil, nil, 0, 2)
         
     | 
| 
      
 47 
     | 
    
         
            +
            worksheet1.set_row(9,  nil, nil, 0, 2)
         
     | 
| 
      
 48 
     | 
    
         
            +
            worksheet1.set_row(10, nil, nil, 0, 1)
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            # Write the sub-total data that is common to the row examples.
         
     | 
| 
      
 51 
     | 
    
         
            +
            create_sub_totals(worksheet1, bold)
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 54 
     | 
    
         
            +
            #
         
     | 
| 
      
 55 
     | 
    
         
            +
            # Example 2: Create a worksheet with collapsed outlined rows.
         
     | 
| 
      
 56 
     | 
    
         
            +
            # This is the same as the example 1  except that the all rows are collapsed.
         
     | 
| 
      
 57 
     | 
    
         
            +
            # Note: We need to indicate the row that contains the collapsed symbol '+' with
         
     | 
| 
      
 58 
     | 
    
         
            +
            # the optional parameter, collapsed.
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            worksheet2.set_row(1, nil, nil, 1, 2)
         
     | 
| 
      
 61 
     | 
    
         
            +
            worksheet2.set_row(2, nil, nil, 1, 2)
         
     | 
| 
      
 62 
     | 
    
         
            +
            worksheet2.set_row(3, nil, nil, 1, 2)
         
     | 
| 
      
 63 
     | 
    
         
            +
            worksheet2.set_row(4, nil, nil, 1, 2)
         
     | 
| 
      
 64 
     | 
    
         
            +
            worksheet2.set_row(5, nil, nil, 1, 1)
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            worksheet2.set_row(6,  nil, nil, 1, 2)
         
     | 
| 
      
 67 
     | 
    
         
            +
            worksheet2.set_row(7,  nil, nil, 1, 2)
         
     | 
| 
      
 68 
     | 
    
         
            +
            worksheet2.set_row(8,  nil, nil, 1, 2)
         
     | 
| 
      
 69 
     | 
    
         
            +
            worksheet2.set_row(9,  nil, nil, 1, 2)
         
     | 
| 
      
 70 
     | 
    
         
            +
            worksheet2.set_row(10, nil, nil, 1, 1)
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            worksheet2.set_row(11, nil, nil, 0, 0, 1)
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            # Write the sub-total data that is common to the row examples.
         
     | 
| 
      
 75 
     | 
    
         
            +
            create_sub_totals(worksheet2, bold)
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 78 
     | 
    
         
            +
            #
         
     | 
| 
      
 79 
     | 
    
         
            +
            # Example 3: Create a worksheet with collapsed outlined rows.
         
     | 
| 
      
 80 
     | 
    
         
            +
            # Same as the example 1  except that the two sub-totals are collapsed.
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            worksheet3.set_row(1, nil, nil, 1, 2)
         
     | 
| 
      
 83 
     | 
    
         
            +
            worksheet3.set_row(2, nil, nil, 1, 2)
         
     | 
| 
      
 84 
     | 
    
         
            +
            worksheet3.set_row(3, nil, nil, 1, 2)
         
     | 
| 
      
 85 
     | 
    
         
            +
            worksheet3.set_row(4, nil, nil, 1, 2)
         
     | 
| 
      
 86 
     | 
    
         
            +
            worksheet3.set_row(5, nil, nil, 0, 1, 1)
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
            worksheet3.set_row(6,  nil, nil, 1, 2)
         
     | 
| 
      
 89 
     | 
    
         
            +
            worksheet3.set_row(7,  nil, nil, 1, 2)
         
     | 
| 
      
 90 
     | 
    
         
            +
            worksheet3.set_row(8,  nil, nil, 1, 2)
         
     | 
| 
      
 91 
     | 
    
         
            +
            worksheet3.set_row(9,  nil, nil, 1, 2)
         
     | 
| 
      
 92 
     | 
    
         
            +
            worksheet3.set_row(10, nil, nil, 0, 1, 1)
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            # Write the sub-total data that is common to the row examples.
         
     | 
| 
      
 95 
     | 
    
         
            +
            create_sub_totals(worksheet3, bold)
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 98 
     | 
    
         
            +
            #
         
     | 
| 
      
 99 
     | 
    
         
            +
            # Example 4: Create a worksheet with outlined rows.
         
     | 
| 
      
 100 
     | 
    
         
            +
            # Same as the example 1  except that the two sub-totals are collapsed.
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            worksheet4.set_row(1, nil, nil, 1, 2)
         
     | 
| 
      
 103 
     | 
    
         
            +
            worksheet4.set_row(2, nil, nil, 1, 2)
         
     | 
| 
      
 104 
     | 
    
         
            +
            worksheet4.set_row(3, nil, nil, 1, 2)
         
     | 
| 
      
 105 
     | 
    
         
            +
            worksheet4.set_row(4, nil, nil, 1, 2)
         
     | 
| 
      
 106 
     | 
    
         
            +
            worksheet4.set_row(5, nil, nil, 1, 1, 1)
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            worksheet4.set_row(6,  nil, nil, 1, 2)
         
     | 
| 
      
 109 
     | 
    
         
            +
            worksheet4.set_row(7,  nil, nil, 1, 2)
         
     | 
| 
      
 110 
     | 
    
         
            +
            worksheet4.set_row(8,  nil, nil, 1, 2)
         
     | 
| 
      
 111 
     | 
    
         
            +
            worksheet4.set_row(9,  nil, nil, 1, 2)
         
     | 
| 
      
 112 
     | 
    
         
            +
            worksheet4.set_row(10, nil, nil, 1, 1, 1)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            worksheet4.set_row(11, nil, nil, 0, 0, 1)
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            # Write the sub-total data that is common to the row examples.
         
     | 
| 
      
 117 
     | 
    
         
            +
            create_sub_totals(worksheet4, bold)
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 120 
     | 
    
         
            +
            #
         
     | 
| 
      
 121 
     | 
    
         
            +
            # Example 5: Create a worksheet with outlined columns.
         
     | 
| 
      
 122 
     | 
    
         
            +
            #
         
     | 
| 
      
 123 
     | 
    
         
            +
            data = [
         
     | 
| 
      
 124 
     | 
    
         
            +
                    [ 'Month', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Total' ],
         
     | 
| 
      
 125 
     | 
    
         
            +
                    [ 'North', 50,    20,    15,    25,    65,    80,   '=SUM(B2:G2)' ],
         
     | 
| 
      
 126 
     | 
    
         
            +
                    [ 'South', 10,    20,    30,    50,    50,    50,   '=SUM(B3:G3)' ],
         
     | 
| 
      
 127 
     | 
    
         
            +
                    [ 'East',  45,    75,    50,    15,    75,    100,  '=SUM(B4:G4)' ],
         
     | 
| 
      
 128 
     | 
    
         
            +
                    [ 'West',  15,    15,    55,    35,    20,    50,   '=SUM(B5:G6)' ]
         
     | 
| 
      
 129 
     | 
    
         
            +
                   ]
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            # Add bold format to the first row
         
     | 
| 
      
 132 
     | 
    
         
            +
            worksheet5.set_row(0, nil, bold)
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
            # Syntax: set_column(col1, col2, width, XF, hidden, level, collapsed)
         
     | 
| 
      
 135 
     | 
    
         
            +
            worksheet5.set_column('A:A', 10, bold)
         
     | 
| 
      
 136 
     | 
    
         
            +
            worksheet5.set_column('B:G', 5, nil, 0, 1)
         
     | 
| 
      
 137 
     | 
    
         
            +
            worksheet5.set_column('H:H', 10)
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
            # Write the data and a formula
         
     | 
| 
      
 140 
     | 
    
         
            +
            worksheet5.write_col('A1', data)
         
     | 
| 
      
 141 
     | 
    
         
            +
            worksheet5.write('H6', '=SUM(H2:H5)', bold)
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            ###############################################################################
         
     | 
| 
      
 144 
     | 
    
         
            +
            #
         
     | 
| 
      
 145 
     | 
    
         
            +
            # Example 6: Create a worksheet with collapsed outlined columns.
         
     | 
| 
      
 146 
     | 
    
         
            +
            # This is the same as the previous example except collapsed columns.
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            # Add bold format to the first row
         
     | 
| 
      
 149 
     | 
    
         
            +
            worksheet6.set_row(0, nil, bold)
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
            # Syntax: set_column(col1, col2, width, XF, hidden, level, collapsed)
         
     | 
| 
      
 152 
     | 
    
         
            +
            worksheet6.set_column('A:A', 10, bold)
         
     | 
| 
      
 153 
     | 
    
         
            +
            worksheet6.set_column('B:G', 5,  nil, 1, 1)
         
     | 
| 
      
 154 
     | 
    
         
            +
            worksheet6.set_column('H:H', 10, nil, 0, 0, 1)
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
            # Write the data and a formula
         
     | 
| 
      
 157 
     | 
    
         
            +
            worksheet6.write_col('A1', data)
         
     | 
| 
      
 158 
     | 
    
         
            +
            worksheet6.write('H6', '=SUM(H2:H5)', bold)
         
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
            workbook.close
         
     | 
| 
         Binary file 
     | 
    
        data/examples/shape3.rb
    CHANGED
    
    | 
         @@ -25,8 +25,8 @@ normal = workbook.add_shape( 
     | 
|
| 
       25 
25 
     | 
    
         
             
                                        )
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
            worksheet.insert_shape('A1', normal, 50, 50)
         
     | 
| 
       28 
     | 
    
         
            -
            normal 
     | 
| 
       29 
     | 
    
         
            -
            normal 
     | 
| 
      
 28 
     | 
    
         
            +
            normal.text = 'Scaled 3w x 2h'
         
     | 
| 
      
 29 
     | 
    
         
            +
            normal.name = 'Hope'
         
     | 
| 
       30 
30 
     | 
    
         
             
            worksheet.insert_shape('A1', normal, 250, 50, 3, 2)
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
            workbook.close
         
     | 
    
        data/examples/shape4.rb
    CHANGED
    
    | 
         @@ -29,8 +29,8 @@ shape = workbook.add_shape( 
     | 
|
| 
       29 
29 
     | 
    
         
             
              # Change the last 5 rectangles to stars. Previously
         
     | 
| 
       30 
30 
     | 
    
         
             
              # inserted shapes stay as rectangles.
         
     | 
| 
       31 
31 
     | 
    
         
             
              type = 'star5' if n == 6
         
     | 
| 
       32 
     | 
    
         
            -
              shape 
     | 
| 
       33 
     | 
    
         
            -
              shape 
     | 
| 
      
 32 
     | 
    
         
            +
              shape.type = type
         
     | 
| 
      
 33 
     | 
    
         
            +
              shape.text = "#{type} #{n}"
         
     | 
| 
       34 
34 
     | 
    
         
             
              worksheet.insert_shape('A1', shape, n * 100, 50)
         
     | 
| 
       35 
35 
     | 
    
         
             
            end
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
         @@ -42,14 +42,14 @@ stencil = workbook.add_shape( 
     | 
|
| 
       42 
42 
     | 
    
         
             
                                         )
         
     | 
| 
       43 
43 
     | 
    
         
             
            worksheet.insert_shape('A1', stencil, 100, 150)
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
            stencil 
     | 
| 
      
 45 
     | 
    
         
            +
            stencil.stencil = 0
         
     | 
| 
       46 
46 
     | 
    
         
             
            worksheet.insert_shape('A1', stencil, 200, 150)
         
     | 
| 
       47 
47 
     | 
    
         
             
            worksheet.insert_shape('A1', stencil, 300, 150)
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
            # Ooopa! Changed my mind.
         
     | 
| 
       50 
50 
     | 
    
         
             
            # Change the rectangle to an ellipse (circle),
         
     | 
| 
       51 
51 
     | 
    
         
             
            # for the last two shapes.
         
     | 
| 
       52 
     | 
    
         
            -
            stencil 
     | 
| 
       53 
     | 
    
         
            -
            stencil 
     | 
| 
      
 52 
     | 
    
         
            +
            stencil.type = 'ellipse'
         
     | 
| 
      
 53 
     | 
    
         
            +
            stencil.text = 'Now its a circle'
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
55 
     | 
    
         
             
            workbook.close
         
     | 
    
        data/examples/shape5.rb
    CHANGED
    
    | 
         @@ -34,14 +34,14 @@ worksheet.insert_shape('A1', s2, 250, 200) 
     | 
|
| 
       34 
34 
     | 
    
         
             
            cxn_shape = workbook.add_shape(:type => 'bentConnector3')
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            # Link the start of the connector to the right side.
         
     | 
| 
       37 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       38 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       39 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 37 
     | 
    
         
            +
            cxn_shape.start       = s1.id
         
     | 
| 
      
 38 
     | 
    
         
            +
            cxn_shape.start_index = 4  # 4th connection pt, clockwise from top(0).
         
     | 
| 
      
 39 
     | 
    
         
            +
            cxn_shape.start_side  = 'b' # r)ight or b)ottom.
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            # Link the end of the connector to the left side.
         
     | 
| 
       42 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       43 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       44 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 42 
     | 
    
         
            +
            cxn_shape.end         = s2.id
         
     | 
| 
      
 43 
     | 
    
         
            +
            cxn_shape.end_index   = 0  # clockwise from top(0).
         
     | 
| 
      
 44 
     | 
    
         
            +
            cxn_shape.end_side    = 't' # t)op.
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       47 
47 
     | 
    
         | 
    
        data/examples/shape6.rb
    CHANGED
    
    | 
         @@ -34,14 +34,14 @@ worksheet.insert_shape('A1', s2, 250, 200) 
     | 
|
| 
       34 
34 
     | 
    
         
             
            cxn_shape = workbook.add_shape(:type => 'curvedConnector3')
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         
             
            # Link the start of the connector to the right side.
         
     | 
| 
       37 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       38 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       39 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 37 
     | 
    
         
            +
            cxn_shape.start       = s1.id
         
     | 
| 
      
 38 
     | 
    
         
            +
            cxn_shape.start_index = 2  # 2nd connection pt, clockwise from top(0).
         
     | 
| 
      
 39 
     | 
    
         
            +
            cxn_shape.start_side  = 'r' # r)ight or b)ottom.
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
            # Link the end of the connector to the left side.
         
     | 
| 
       42 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       43 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       44 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 42 
     | 
    
         
            +
            cxn_shape.end         = s2.id
         
     | 
| 
      
 43 
     | 
    
         
            +
            cxn_shape.end_index   = 4  # 4th connection pt, clockwise from top(0).
         
     | 
| 
      
 44 
     | 
    
         
            +
            cxn_shape.end_side    = 'l' # l)eft or t)op.
         
     | 
| 
       45 
45 
     | 
    
         | 
| 
       46 
46 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       47 
47 
     | 
    
         | 
    
        data/examples/shape7.rb
    CHANGED
    
    | 
         @@ -47,28 +47,28 @@ plus = workbook.add_shape( 
     | 
|
| 
       47 
47 
     | 
    
         
             
            p1 = worksheet.insert_shape('A1', plus, 350, 350)
         
     | 
| 
       48 
48 
     | 
    
         
             
            p2 = worksheet.insert_shape('A1', plus, 150, 350)
         
     | 
| 
       49 
49 
     | 
    
         
             
            p3 = worksheet.insert_shape('A1', plus, 350, 150)
         
     | 
| 
       50 
     | 
    
         
            -
            plus 
     | 
| 
      
 50 
     | 
    
         
            +
            plus.adjustments = 35  # change shape of plus symbol.
         
     | 
| 
       51 
51 
     | 
    
         
             
            p4 = worksheet.insert_shape('A1', plus, 150, 150)
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
       53 
53 
     | 
    
         
             
            cxn_shape = workbook.add_shape(:type => 'bentConnector3', :fill => 0)
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       56 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       57 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 55 
     | 
    
         
            +
            cxn_shape.start       = ellipse.id
         
     | 
| 
      
 56 
     | 
    
         
            +
            cxn_shape.start_index = 4   # 4th connection pt, clockwise from top(0).
         
     | 
| 
      
 57 
     | 
    
         
            +
            cxn_shape.start_side  = 'b' # r)ight or b)ottom.
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       60 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       61 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 59 
     | 
    
         
            +
            cxn_shape.end         = p1.id
         
     | 
| 
      
 60 
     | 
    
         
            +
            cxn_shape.end_index   = 0
         
     | 
| 
      
 61 
     | 
    
         
            +
            cxn_shape.end_side    = 't' # l)eft or t)op.
         
     | 
| 
       62 
62 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       63 
63 
     | 
    
         | 
| 
       64 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 64 
     | 
    
         
            +
            cxn_shape.end  = p2.id
         
     | 
| 
       65 
65 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       66 
66 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 67 
     | 
    
         
            +
            cxn_shape.end  = p3.id
         
     | 
| 
       68 
68 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       69 
69 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
            cxn_shape 
     | 
| 
       71 
     | 
    
         
            -
            cxn_shape 
     | 
| 
      
 70 
     | 
    
         
            +
            cxn_shape.end  = p4.id
         
     | 
| 
      
 71 
     | 
    
         
            +
            cxn_shape.adjustments = [-50, 45, 120]
         
     | 
| 
       72 
72 
     | 
    
         
             
            worksheet.insert_shape('A1', cxn_shape, 0, 0)
         
     | 
| 
       73 
73 
     | 
    
         | 
| 
       74 
74 
     | 
    
         
             
            workbook.close
         
     |