write_xlsx 1.09.4 → 1.09.5
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 +108 -0
- data/.rubocop_todo.yml +445 -0
- data/Changes +3 -0
- data/Gemfile +2 -0
- data/Rakefile +14 -8
- data/examples/array_formula.rb +2 -2
- data/examples/autofilter.rb +13 -18
- data/examples/chart_area.rb +10 -10
- data/examples/chart_bar.rb +10 -10
- data/examples/chart_column.rb +10 -10
- data/examples/chart_combined.rb +2 -3
- data/examples/chart_data_labels.rb +23 -35
- data/examples/chart_data_table.rb +16 -16
- data/examples/chart_data_tools.rb +36 -42
- data/examples/chart_doughnut.rb +21 -25
- data/examples/chart_gauge.rb +17 -17
- data/examples/chart_line.rb +25 -26
- data/examples/chart_pareto.rb +3 -3
- data/examples/chart_pie.rb +15 -15
- data/examples/chart_radar.rb +30 -30
- data/examples/chart_scatter.rb +10 -10
- data/examples/chart_secondary_axis.rb +9 -9
- data/examples/chart_stock.rb +10 -11
- data/examples/chart_styles.rb +6 -7
- data/examples/colors.rb +26 -29
- data/examples/comments1.rb +1 -0
- data/examples/comments2.rb +85 -114
- data/examples/conditional_format.rb +159 -150
- data/examples/data_validate.rb +135 -122
- data/examples/date_time.rb +29 -29
- data/examples/defined_name.rb +5 -5
- data/examples/demo.rb +10 -12
- data/examples/diag_border.rb +4 -5
- data/examples/formats.rb +93 -105
- data/examples/headers.rb +2 -7
- data/examples/hyperlink1.rb +5 -6
- data/examples/ignore_errors.rb +1 -1
- data/examples/macros.rb +6 -6
- data/examples/merge1.rb +0 -3
- data/examples/merge2.rb +9 -12
- data/examples/merge3.rb +6 -7
- data/examples/merge4.rb +2 -4
- data/examples/merge5.rb +6 -6
- data/examples/merge6.rb +1 -1
- data/examples/outline.rb +8 -16
- data/examples/outline_collapsed.rb +6 -6
- data/examples/panes.rb +15 -15
- data/examples/properties.rb +9 -9
- data/examples/rich_strings.rb +19 -11
- data/examples/shape1.rb +9 -9
- data/examples/shape2.rb +19 -19
- data/examples/shape3.rb +6 -6
- data/examples/shape4.rb +9 -9
- data/examples/shape5.rb +8 -8
- data/examples/shape6.rb +8 -8
- data/examples/shape7.rb +14 -14
- data/examples/shape8.rb +14 -14
- data/examples/shape_all.rb +6 -6
- data/examples/sparklines1.rb +23 -24
- data/examples/sparklines2.rb +151 -151
- data/examples/tables.rb +86 -94
- data/examples/update_range_format_with_params.rb +4 -4
- data/lib/write_xlsx/chart/area.rb +8 -9
- data/lib/write_xlsx/chart/axis.rb +12 -24
- data/lib/write_xlsx/chart/bar.rb +4 -8
- data/lib/write_xlsx/chart/column.rb +3 -4
- data/lib/write_xlsx/chart/doughnut.rb +3 -2
- data/lib/write_xlsx/chart/line.rb +16 -17
- data/lib/write_xlsx/chart/pie.rb +13 -13
- data/lib/write_xlsx/chart/radar.rb +8 -9
- data/lib/write_xlsx/chart/scatter.rb +20 -23
- data/lib/write_xlsx/chart/series.rb +32 -45
- data/lib/write_xlsx/chart/stock.rb +29 -24
- data/lib/write_xlsx/chart.rb +183 -217
- data/lib/write_xlsx/chartsheet.rb +22 -31
- data/lib/write_xlsx/col_name.rb +2 -1
- data/lib/write_xlsx/colors.rb +1 -1
- data/lib/write_xlsx/compatibility.rb +14 -15
- data/lib/write_xlsx/drawing.rb +54 -55
- data/lib/write_xlsx/format.rb +52 -59
- data/lib/write_xlsx/formats.rb +1 -0
- data/lib/write_xlsx/gradient.rb +5 -9
- data/lib/write_xlsx/package/app.rb +12 -16
- data/lib/write_xlsx/package/button.rb +3 -3
- data/lib/write_xlsx/package/comments.rb +31 -36
- data/lib/write_xlsx/package/conditional_format.rb +90 -110
- data/lib/write_xlsx/package/content_types.rb +20 -21
- data/lib/write_xlsx/package/core.rb +5 -4
- data/lib/write_xlsx/package/custom.rb +7 -7
- data/lib/write_xlsx/package/metadata.rb +6 -5
- data/lib/write_xlsx/package/packager.rb +36 -22
- data/lib/write_xlsx/package/relationships.rb +1 -1
- data/lib/write_xlsx/package/shared_strings.rb +11 -11
- data/lib/write_xlsx/package/styles.rb +54 -68
- data/lib/write_xlsx/package/table.rb +77 -95
- data/lib/write_xlsx/package/theme.rb +3 -3
- data/lib/write_xlsx/package/vml.rb +24 -31
- data/lib/write_xlsx/package/xml_writer_simple.rb +19 -20
- data/lib/write_xlsx/shape.rb +20 -31
- data/lib/write_xlsx/sheets.rb +37 -46
- data/lib/write_xlsx/sparkline.rb +11 -20
- data/lib/write_xlsx/utility.rb +129 -142
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +248 -299
- data/lib/write_xlsx/worksheet/cell_data.rb +41 -17
- data/lib/write_xlsx/worksheet/data_validation.rb +65 -73
- data/lib/write_xlsx/worksheet/hyperlink.rb +10 -16
- data/lib/write_xlsx/worksheet/page_setup.rb +9 -11
- data/lib/write_xlsx/worksheet.rb +434 -539
- data/lib/write_xlsx/zip_file_utils.rb +30 -32
- data/lib/write_xlsx.rb +1 -3
- data/write_xlsx.gemspec +23 -18
- metadata +50 -3881
- data/.gitattributes +0 -1
- data/.gitignore +0 -45
- data/.travis.yml +0 -75
- data/bin/extract_vba.rb +0 -34
- data/test/chart/test_add_series.rb +0 -190
- data/test/chart/test_process_names.rb +0 -27
- data/test/chart/test_write_a_latin.rb +0 -22
- data/test/chart/test_write_auto.rb +0 -15
- data/test/chart/test_write_ax_id.rb +0 -15
- data/test/chart/test_write_ax_pos.rb +0 -15
- data/test/chart/test_write_cross_ax.rb +0 -15
- data/test/chart/test_write_crosses.rb +0 -15
- data/test/chart/test_write_d_lbls.rb +0 -292
- data/test/chart/test_write_format_code.rb +0 -16
- data/test/chart/test_write_idx.rb +0 -15
- data/test/chart/test_write_label_align.rb +0 -15
- data/test/chart/test_write_label_offset.rb +0 -15
- data/test/chart/test_write_lang.rb +0 -15
- data/test/chart/test_write_layout.rb +0 -15
- data/test/chart/test_write_legend.rb +0 -16
- data/test/chart/test_write_legend_pos.rb +0 -23
- data/test/chart/test_write_major_gridlines.rb +0 -15
- data/test/chart/test_write_marker.rb +0 -17
- data/test/chart/test_write_marker_size.rb +0 -15
- data/test/chart/test_write_marker_value.rb +0 -16
- data/test/chart/test_write_num_cache.rb +0 -16
- data/test/chart/test_write_number_format.rb +0 -48
- data/test/chart/test_write_order.rb +0 -15
- data/test/chart/test_write_orientation.rb +0 -15
- data/test/chart/test_write_page_margins.rb +0 -15
- data/test/chart/test_write_page_setup.rb +0 -15
- data/test/chart/test_write_plot_vis_only.rb +0 -15
- data/test/chart/test_write_pt.rb +0 -16
- data/test/chart/test_write_pt_count.rb +0 -16
- data/test/chart/test_write_series_formula.rb +0 -16
- data/test/chart/test_write_style.rb +0 -41
- data/test/chart/test_write_symbol.rb +0 -16
- data/test/chart/test_write_tick_lbl_pos.rb +0 -16
- data/test/chart/test_write_v.rb +0 -16
- data/test/chartsheet/test_chartsheet01.rb +0 -31
- data/test/chartsheet/test_write_sheet_protection.rb +0 -91
- data/test/drawing/test_drawing_chart_01.rb +0 -54
- data/test/drawing/test_drawing_image_01.rb +0 -68
- data/test/drawing/test_drawing_shape_01.rb +0 -71
- data/test/drawing/test_drawing_shape_02.rb +0 -80
- data/test/drawing/test_drawing_shape_03.rb +0 -41
- data/test/drawing/test_drawing_shape_04.rb +0 -105
- data/test/drawing/test_drawing_shape_05.rb +0 -48
- data/test/drawing/test_drawing_shape_06.rb +0 -47
- data/test/drawing/test_drawing_shape_07.rb +0 -52
- data/test/drawing/test_write_a_graphic_frame_locks.rb +0 -18
- data/test/drawing/test_write_c_chart.rb +0 -18
- data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +0 -28
- data/test/drawing/test_write_c_nv_pr.rb +0 -18
- data/test/drawing/test_write_col.rb +0 -18
- data/test/drawing/test_write_col_off.rb +0 -18
- data/test/drawing/test_write_pos.rb +0 -18
- data/test/drawing/test_write_row.rb +0 -18
- data/test/drawing/test_write_row_off.rb +0 -18
- data/test/drawing/test_write_xdr_ext.rb +0 -18
- data/test/drawing/test_write_xfrm_extension.rb +0 -18
- data/test/drawing/test_write_xfrm_offset.rb +0 -18
- data/test/helper.rb +0 -206
- data/test/package/app/test_app01.rb +0 -44
- data/test/package/app/test_app02.rb +0 -46
- data/test/package/app/test_app03.rb +0 -53
- data/test/package/comments/test_comments_01.rb +0 -54
- data/test/package/comments/test_comments_02.rb +0 -54
- data/test/package/content_types/test_content_types.rb +0 -35
- data/test/package/content_types/test_write_default.rb +0 -13
- data/test/package/content_types/test_write_override.rb +0 -13
- data/test/package/core/test_core01.rb +0 -28
- data/test/package/core/test_core02.rb +0 -42
- data/test/package/relationships/test_relationships.rb +0 -28
- data/test/package/relationships/test_sheet_rels.rb +0 -22
- data/test/package/shared_strings/test_shared_strings01.rb +0 -30
- data/test/package/shared_strings/test_shared_strings02.rb +0 -30
- data/test/package/shared_strings/test_write_si.rb +0 -16
- data/test/package/styles/test_styles_01.rb +0 -60
- data/test/package/styles/test_styles_02.rb +0 -95
- data/test/package/styles/test_styles_03.rb +0 -81
- data/test/package/styles/test_styles_04.rb +0 -207
- data/test/package/styles/test_styles_05.rb +0 -141
- data/test/package/styles/test_styles_06.rb +0 -95
- data/test/package/styles/test_styles_07.rb +0 -95
- data/test/package/styles/test_styles_08.rb +0 -100
- data/test/package/styles/test_styles_09.rb +0 -86
- data/test/package/table/test_table01.rb +0 -42
- data/test/package/table/test_table02.rb +0 -44
- data/test/package/table/test_table03.rb +0 -48
- data/test/package/table/test_table04.rb +0 -46
- data/test/package/table/test_table05.rb +0 -46
- data/test/package/table/test_table06.rb +0 -52
- data/test/package/table/test_table07.rb +0 -47
- data/test/package/table/test_table08.rb +0 -53
- data/test/package/table/test_table09.rb +0 -65
- data/test/package/table/test_table10.rb +0 -45
- data/test/package/table/test_table11.rb +0 -60
- data/test/package/table/test_table12.rb +0 -60
- data/test/package/table/test_table13.rb +0 -69
- data/test/package/table/test_write_auto_filter.rb +0 -23
- data/test/package/table/test_write_table_column.rb +0 -22
- data/test/package/table/test_write_table_style_info.rb +0 -26
- data/test/package/vml/test_write_auto_fill.rb +0 -14
- data/test/package/vml/test_write_div.rb +0 -14
- data/test/package/vml/test_write_idmap.rb +0 -14
- data/test/package/vml/test_write_path.rb +0 -30
- data/test/package/vml/test_write_shapelayout.rb +0 -14
- data/test/package/vml/test_write_shapetype.rb +0 -22
- data/test/package/vml/test_write_stroke.rb +0 -14
- data/test/perl_output/a_simple.xlsx +0 -0
- data/test/perl_output/add_vba_project.xlsm +0 -0
- data/test/perl_output/array_formula.xlsx +0 -0
- data/test/perl_output/autofilter.xlsx +0 -0
- data/test/perl_output/background.xlsx +0 -0
- data/test/perl_output/chart_area.xlsx +0 -0
- data/test/perl_output/chart_bar.xlsx +0 -0
- data/test/perl_output/chart_column.xlsx +0 -0
- data/test/perl_output/chart_combined.xlsx +0 -0
- data/test/perl_output/chart_data_labels.xlsx +0 -0
- data/test/perl_output/chart_data_table.xlsx +0 -0
- data/test/perl_output/chart_data_tools.xlsx +0 -0
- data/test/perl_output/chart_doughnut.xlsx +0 -0
- data/test/perl_output/chart_gauge.xlsx +0 -0
- data/test/perl_output/chart_line.xlsx +0 -0
- data/test/perl_output/chart_pareto.xlsx +0 -0
- data/test/perl_output/chart_pie.xlsx +0 -0
- data/test/perl_output/chart_radar.xlsx +0 -0
- data/test/perl_output/chart_scatter.xlsx +0 -0
- data/test/perl_output/chart_scatter06.xlsx +0 -0
- data/test/perl_output/chart_secondary_axis.xlsx +0 -0
- data/test/perl_output/chart_stock.xlsx +0 -0
- data/test/perl_output/comments1.xlsx +0 -0
- data/test/perl_output/comments2.xlsx +0 -0
- data/test/perl_output/conditional_format.xlsx +0 -0
- data/test/perl_output/data_validate.xlsx +0 -0
- data/test/perl_output/date_time.xlsx +0 -0
- data/test/perl_output/defined_name.xlsx +0 -0
- data/test/perl_output/demo.xlsx +0 -0
- data/test/perl_output/diag_border.xlsx +0 -0
- data/test/perl_output/fit_to_pages.xlsx +0 -0
- data/test/perl_output/formats.xlsx +0 -0
- data/test/perl_output/headers.xlsx +0 -0
- data/test/perl_output/hide_first_sheet.xlsx +0 -0
- data/test/perl_output/hide_row_col.xlsx +0 -0
- data/test/perl_output/hide_sheet.xlsx +0 -0
- data/test/perl_output/hyperlink.xlsx +0 -0
- data/test/perl_output/ignore_errors.xlsx +0 -0
- data/test/perl_output/indent.xlsx +0 -0
- data/test/perl_output/keep_leading_zeros.xlsx +0 -0
- data/test/perl_output/merge1.xlsx +0 -0
- data/test/perl_output/merge2.xlsx +0 -0
- data/test/perl_output/merge3.xlsx +0 -0
- data/test/perl_output/merge4.xlsx +0 -0
- data/test/perl_output/merge5.xlsx +0 -0
- data/test/perl_output/merge6.xlsx +0 -0
- data/test/perl_output/multi_line.xlsx +0 -0
- data/test/perl_output/outline.xlsx +0 -0
- data/test/perl_output/outline_collapsed.xlsx +0 -0
- data/test/perl_output/panes.xlsx +0 -0
- data/test/perl_output/print_scale.xlsx +0 -0
- data/test/perl_output/properties.xlsx +0 -0
- data/test/perl_output/protection.xlsx +0 -0
- data/test/perl_output/regions.xlsx +0 -0
- data/test/perl_output/rich_strings.xlsx +0 -0
- data/test/perl_output/right_to_left.xlsx +0 -0
- data/test/perl_output/shape1.xlsx +0 -0
- data/test/perl_output/shape2.xlsx +0 -0
- data/test/perl_output/shape3.xlsx +0 -0
- data/test/perl_output/shape4.xlsx +0 -0
- data/test/perl_output/shape5.xlsx +0 -0
- data/test/perl_output/shape6.xlsx +0 -0
- data/test/perl_output/shape7.xlsx +0 -0
- data/test/perl_output/shape8.xlsx +0 -0
- data/test/perl_output/shape_all.xlsx +0 -0
- data/test/perl_output/sparklines1.xlsx +0 -0
- data/test/perl_output/sparklines2.xlsx +0 -0
- data/test/perl_output/stats.xlsx +0 -0
- data/test/perl_output/stats_ext.xlsx +0 -0
- data/test/perl_output/stocks.xlsx +0 -0
- data/test/perl_output/tab_colors.xlsx +0 -0
- data/test/perl_output/tables.xlsx +0 -0
- data/test/regression/_test_hyperlink31.rb +0 -26
- data/test/regression/disabled_test_vml04.rb +0 -41
- data/test/regression/images/black_150.jpg +0 -0
- data/test/regression/images/black_150.png +0 -0
- data/test/regression/images/black_150e.png +0 -0
- data/test/regression/images/black_300.jpg +0 -0
- data/test/regression/images/black_300.png +0 -0
- data/test/regression/images/black_300e.png +0 -0
- data/test/regression/images/black_72.jpg +0 -0
- data/test/regression/images/black_72.png +0 -0
- data/test/regression/images/black_72e.png +0 -0
- data/test/regression/images/black_96.jpg +0 -0
- data/test/regression/images/black_96.png +0 -0
- data/test/regression/images/blue.jpg +0 -0
- data/test/regression/images/blue.png +0 -0
- data/test/regression/images/grey.jpg +0 -0
- data/test/regression/images/grey.png +0 -0
- data/test/regression/images/happy.jpg +0 -0
- data/test/regression/images/issue32.png +0 -0
- data/test/regression/images/logo.gif +0 -0
- data/test/regression/images/logo.jpg +0 -0
- data/test/regression/images/logo.png +0 -0
- data/test/regression/images/mylogo.png +0 -0
- data/test/regression/images/red.bmp +0 -0
- data/test/regression/images/red.gif +0 -0
- data/test/regression/images/red.jpg +0 -0
- data/test/regression/images/red.png +0 -0
- data/test/regression/images/red2.png +0 -0
- data/test/regression/images/red_208.png +0 -0
- data/test/regression/images/red_64x20.png +0 -0
- data/test/regression/images/train.jpg +0 -0
- data/test/regression/images/yellow.jpg +0 -0
- data/test/regression/images/yellow.png +0 -0
- data/test/regression/images/zero_dpi.jpg +0 -0
- data/test/regression/klt.csv +0 -4
- data/test/regression/test_array_formula01.rb +0 -31
- data/test/regression/test_array_formula02.rb +0 -32
- data/test/regression/test_array_formula03.rb +0 -36
- data/test/regression/test_array_formula04.rb +0 -31
- data/test/regression/test_autofilter00.rb +0 -84
- data/test/regression/test_autofilter01.rb +0 -86
- data/test/regression/test_autofilter02.rb +0 -104
- data/test/regression/test_autofilter03.rb +0 -104
- data/test/regression/test_autofilter04.rb +0 -107
- data/test/regression/test_autofilter05.rb +0 -108
- data/test/regression/test_autofilter06.rb +0 -108
- data/test/regression/test_autofilter07.rb +0 -107
- data/test/regression/test_autofilter08.rb +0 -110
- data/test/regression/test_autofilter09.rb +0 -110
- data/test/regression/test_autofilter10.rb +0 -110
- data/test/regression/test_background01.rb +0 -23
- data/test/regression/test_background02.rb +0 -23
- data/test/regression/test_background03.rb +0 -24
- data/test/regression/test_background04.rb +0 -25
- data/test/regression/test_background05.rb +0 -25
- data/test/regression/test_background06.rb +0 -31
- data/test/regression/test_background07.rb +0 -37
- data/test/regression/test_button01.rb +0 -23
- data/test/regression/test_button02.rb +0 -29
- data/test/regression/test_button03.rb +0 -24
- data/test/regression/test_button04.rb +0 -25
- data/test/regression/test_button05.rb +0 -28
- data/test/regression/test_button06.rb +0 -28
- data/test/regression/test_button07.rb +0 -35
- data/test/regression/test_button08.rb +0 -28
- data/test/regression/test_button13.rb +0 -30
- data/test/regression/test_button14.rb +0 -31
- data/test/regression/test_chart_area01.rb +0 -45
- data/test/regression/test_chart_area02.rb +0 -45
- data/test/regression/test_chart_area03.rb +0 -45
- data/test/regression/test_chart_area04.rb +0 -44
- data/test/regression/test_chart_axis01.rb +0 -45
- data/test/regression/test_chart_axis02.rb +0 -45
- data/test/regression/test_chart_axis03.rb +0 -67
- data/test/regression/test_chart_axis04.rb +0 -52
- data/test/regression/test_chart_axis05.rb +0 -47
- data/test/regression/test_chart_axis06.rb +0 -49
- data/test/regression/test_chart_axis07.rb +0 -53
- data/test/regression/test_chart_axis08.rb +0 -52
- data/test/regression/test_chart_axis09.rb +0 -46
- data/test/regression/test_chart_axis10.rb +0 -52
- data/test/regression/test_chart_axis11.rb +0 -46
- data/test/regression/test_chart_axis12.rb +0 -46
- data/test/regression/test_chart_axis13.rb +0 -52
- data/test/regression/test_chart_axis14.rb +0 -66
- data/test/regression/test_chart_axis15.rb +0 -47
- data/test/regression/test_chart_axis16.rb +0 -69
- data/test/regression/test_chart_axis17.rb +0 -45
- data/test/regression/test_chart_axis18.rb +0 -43
- data/test/regression/test_chart_axis19.rb +0 -45
- data/test/regression/test_chart_axis20.rb +0 -45
- data/test/regression/test_chart_axis21.rb +0 -49
- data/test/regression/test_chart_axis22.rb +0 -44
- data/test/regression/test_chart_axis23.rb +0 -45
- data/test/regression/test_chart_axis24.rb +0 -45
- data/test/regression/test_chart_axis25.rb +0 -44
- data/test/regression/test_chart_axis26.rb +0 -46
- data/test/regression/test_chart_axis27.rb +0 -44
- data/test/regression/test_chart_axis28.rb +0 -44
- data/test/regression/test_chart_axis29.rb +0 -43
- data/test/regression/test_chart_axis30.rb +0 -40
- data/test/regression/test_chart_axis31.rb +0 -40
- data/test/regression/test_chart_axis32.rb +0 -40
- data/test/regression/test_chart_axis33.rb +0 -44
- data/test/regression/test_chart_axis34.rb +0 -43
- data/test/regression/test_chart_axis35.rb +0 -43
- data/test/regression/test_chart_axis36.rb +0 -43
- data/test/regression/test_chart_axis37.rb +0 -45
- data/test/regression/test_chart_axis38.rb +0 -43
- data/test/regression/test_chart_axis39.rb +0 -50
- data/test/regression/test_chart_axis40.rb +0 -44
- data/test/regression/test_chart_axis41.rb +0 -48
- data/test/regression/test_chart_axis42.rb +0 -44
- data/test/regression/test_chart_axis43.rb +0 -44
- data/test/regression/test_chart_axis44.rb +0 -54
- data/test/regression/test_chart_axis45.rb +0 -54
- data/test/regression/test_chart_axis46.rb +0 -54
- data/test/regression/test_chart_axis47.rb +0 -52
- data/test/regression/test_chart_axis48.rb +0 -53
- data/test/regression/test_chart_bar01.rb +0 -44
- data/test/regression/test_chart_bar02.rb +0 -54
- data/test/regression/test_chart_bar03.rb +0 -66
- data/test/regression/test_chart_bar04.rb +0 -69
- data/test/regression/test_chart_bar05.rb +0 -39
- data/test/regression/test_chart_bar06.rb +0 -49
- data/test/regression/test_chart_bar07.rb +0 -53
- data/test/regression/test_chart_bar08.rb +0 -43
- data/test/regression/test_chart_bar09.rb +0 -42
- data/test/regression/test_chart_bar10.rb +0 -46
- data/test/regression/test_chart_bar11.rb +0 -72
- data/test/regression/test_chart_bar12.rb +0 -38
- data/test/regression/test_chart_bar13.rb +0 -48
- data/test/regression/test_chart_bar14.rb +0 -64
- data/test/regression/test_chart_bar15.rb +0 -51
- data/test/regression/test_chart_bar16.rb +0 -49
- data/test/regression/test_chart_bar17.rb +0 -45
- data/test/regression/test_chart_bar18.rb +0 -56
- data/test/regression/test_chart_bar19.rb +0 -48
- data/test/regression/test_chart_bar20.rb +0 -45
- data/test/regression/test_chart_bar21.rb +0 -49
- data/test/regression/test_chart_bar22.rb +0 -66
- data/test/regression/test_chart_bar23.rb +0 -60
- data/test/regression/test_chart_bar24.rb +0 -44
- data/test/regression/test_chart_blank01.rb +0 -41
- data/test/regression/test_chart_blank02.rb +0 -41
- data/test/regression/test_chart_blank03.rb +0 -41
- data/test/regression/test_chart_blank04.rb +0 -41
- data/test/regression/test_chart_blank05.rb +0 -44
- data/test/regression/test_chart_blank06.rb +0 -41
- data/test/regression/test_chart_chartarea01.rb +0 -52
- data/test/regression/test_chart_chartarea02.rb +0 -52
- data/test/regression/test_chart_chartarea03.rb +0 -55
- data/test/regression/test_chart_chartarea04.rb +0 -71
- data/test/regression/test_chart_chartarea05.rb +0 -49
- data/test/regression/test_chart_chartarea06.rb +0 -49
- data/test/regression/test_chart_clustered01.rb +0 -65
- data/test/regression/test_chart_column01.rb +0 -39
- data/test/regression/test_chart_column02.rb +0 -44
- data/test/regression/test_chart_column03.rb +0 -44
- data/test/regression/test_chart_column04.rb +0 -44
- data/test/regression/test_chart_column05.rb +0 -39
- data/test/regression/test_chart_column06.rb +0 -45
- data/test/regression/test_chart_column07.rb +0 -40
- data/test/regression/test_chart_column08.rb +0 -42
- data/test/regression/test_chart_column09.rb +0 -39
- data/test/regression/test_chart_column10.rb +0 -39
- data/test/regression/test_chart_column11.rb +0 -41
- data/test/regression/test_chart_column12.rb +0 -37
- data/test/regression/test_chart_combined01.rb +0 -37
- data/test/regression/test_chart_combined02.rb +0 -43
- data/test/regression/test_chart_combined03.rb +0 -45
- data/test/regression/test_chart_combined04.rb +0 -47
- data/test/regression/test_chart_combined05.rb +0 -49
- data/test/regression/test_chart_combined06.rb +0 -49
- data/test/regression/test_chart_combined07.rb +0 -53
- data/test/regression/test_chart_combined08.rb +0 -65
- data/test/regression/test_chart_combined09.rb +0 -50
- data/test/regression/test_chart_combined10.rb +0 -43
- data/test/regression/test_chart_combined11.rb +0 -63
- data/test/regression/test_chart_crossing01.rb +0 -49
- data/test/regression/test_chart_crossing02.rb +0 -47
- data/test/regression/test_chart_crossing03.rb +0 -52
- data/test/regression/test_chart_crossing04.rb +0 -52
- data/test/regression/test_chart_crossing05.rb +0 -46
- data/test/regression/test_chart_crossing06.rb +0 -46
- data/test/regression/test_chart_data_labels01.rb +0 -47
- data/test/regression/test_chart_data_labels02.rb +0 -47
- data/test/regression/test_chart_data_labels03.rb +0 -47
- data/test/regression/test_chart_data_labels04.rb +0 -47
- data/test/regression/test_chart_data_labels05.rb +0 -50
- data/test/regression/test_chart_data_labels06.rb +0 -50
- data/test/regression/test_chart_data_labels07.rb +0 -40
- data/test/regression/test_chart_data_labels08.rb +0 -46
- data/test/regression/test_chart_data_labels09.rb +0 -47
- data/test/regression/test_chart_data_labels10.rb +0 -47
- data/test/regression/test_chart_data_labels11.rb +0 -37
- data/test/regression/test_chart_data_labels12.rb +0 -37
- data/test/regression/test_chart_data_labels13.rb +0 -37
- data/test/regression/test_chart_data_labels14.rb +0 -37
- data/test/regression/test_chart_data_labels15.rb +0 -37
- data/test/regression/test_chart_data_labels16.rb +0 -40
- data/test/regression/test_chart_data_labels17.rb +0 -63
- data/test/regression/test_chart_data_labels18.rb +0 -53
- data/test/regression/test_chart_data_labels19.rb +0 -53
- data/test/regression/test_chart_data_labels20.rb +0 -44
- data/test/regression/test_chart_data_labels21.rb +0 -48
- data/test/regression/test_chart_data_labels22.rb +0 -47
- data/test/regression/test_chart_data_labels23.rb +0 -50
- data/test/regression/test_chart_data_labels24.rb +0 -50
- data/test/regression/test_chart_data_labels25.rb +0 -61
- data/test/regression/test_chart_data_labels26.rb +0 -44
- data/test/regression/test_chart_data_labels27.rb +0 -44
- data/test/regression/test_chart_data_labels28.rb +0 -52
- data/test/regression/test_chart_data_labels29.rb +0 -43
- data/test/regression/test_chart_data_labels30.rb +0 -46
- data/test/regression/test_chart_data_labels31.rb +0 -49
- data/test/regression/test_chart_data_labels32.rb +0 -54
- data/test/regression/test_chart_data_labels33.rb +0 -52
- data/test/regression/test_chart_data_labels34.rb +0 -54
- data/test/regression/test_chart_data_labels35.rb +0 -46
- data/test/regression/test_chart_data_labels36.rb +0 -54
- data/test/regression/test_chart_data_labels37.rb +0 -51
- data/test/regression/test_chart_data_labels38.rb +0 -54
- data/test/regression/test_chart_data_labels39.rb +0 -53
- data/test/regression/test_chart_data_labels40.rb +0 -53
- data/test/regression/test_chart_data_labels41.rb +0 -54
- data/test/regression/test_chart_data_labels42.rb +0 -58
- data/test/regression/test_chart_data_labels43.rb +0 -58
- data/test/regression/test_chart_data_labels44.rb +0 -56
- data/test/regression/test_chart_data_labels45.rb +0 -57
- data/test/regression/test_chart_data_labels46.rb +0 -61
- data/test/regression/test_chart_data_labels47.rb +0 -61
- data/test/regression/test_chart_data_labels48.rb +0 -55
- data/test/regression/test_chart_data_labels49.rb +0 -55
- data/test/regression/test_chart_data_labels50.rb +0 -57
- data/test/regression/test_chart_date01.rb +0 -53
- data/test/regression/test_chart_date02.rb +0 -59
- data/test/regression/test_chart_date03.rb +0 -59
- data/test/regression/test_chart_date04.rb +0 -61
- data/test/regression/test_chart_date05.rb +0 -57
- data/test/regression/test_chart_display_units01.rb +0 -35
- data/test/regression/test_chart_display_units02.rb +0 -36
- data/test/regression/test_chart_display_units03.rb +0 -36
- data/test/regression/test_chart_display_units04.rb +0 -36
- data/test/regression/test_chart_display_units05.rb +0 -36
- data/test/regression/test_chart_display_units06.rb +0 -36
- data/test/regression/test_chart_display_units07.rb +0 -36
- data/test/regression/test_chart_display_units08.rb +0 -36
- data/test/regression/test_chart_display_units09.rb +0 -36
- data/test/regression/test_chart_display_units10.rb +0 -36
- data/test/regression/test_chart_display_units11.rb +0 -36
- data/test/regression/test_chart_display_units12.rb +0 -41
- data/test/regression/test_chart_doughnut01.rb +0 -39
- data/test/regression/test_chart_doughnut02.rb +0 -38
- data/test/regression/test_chart_doughnut03.rb +0 -38
- data/test/regression/test_chart_doughnut04.rb +0 -38
- data/test/regression/test_chart_doughnut05.rb +0 -38
- data/test/regression/test_chart_doughnut06.rb +0 -34
- data/test/regression/test_chart_doughnut07.rb +0 -37
- data/test/regression/test_chart_drop_lines01.rb +0 -46
- data/test/regression/test_chart_drop_lines02.rb +0 -51
- data/test/regression/test_chart_drop_lines03.rb +0 -46
- data/test/regression/test_chart_drop_lines04.rb +0 -64
- data/test/regression/test_chart_errorbars01.rb +0 -46
- data/test/regression/test_chart_errorbars02.rb +0 -56
- data/test/regression/test_chart_errorbars03.rb +0 -52
- data/test/regression/test_chart_errorbars04.rb +0 -47
- data/test/regression/test_chart_errorbars05.rb +0 -46
- data/test/regression/test_chart_errorbars06.rb +0 -46
- data/test/regression/test_chart_errorbars07.rb +0 -65
- data/test/regression/test_chart_errorbars08.rb +0 -50
- data/test/regression/test_chart_errorbars09.rb +0 -50
- data/test/regression/test_chart_errorbars10.rb +0 -52
- data/test/regression/test_chart_font01.rb +0 -54
- data/test/regression/test_chart_font02.rb +0 -56
- data/test/regression/test_chart_font03.rb +0 -59
- data/test/regression/test_chart_font04.rb +0 -57
- data/test/regression/test_chart_font05.rb +0 -54
- data/test/regression/test_chart_font06.rb +0 -84
- data/test/regression/test_chart_font07.rb +0 -44
- data/test/regression/test_chart_font08.rb +0 -44
- data/test/regression/test_chart_font09.rb +0 -40
- data/test/regression/test_chart_format01.rb +0 -44
- data/test/regression/test_chart_format02.rb +0 -45
- data/test/regression/test_chart_format03.rb +0 -46
- data/test/regression/test_chart_format04.rb +0 -45
- data/test/regression/test_chart_format05.rb +0 -45
- data/test/regression/test_chart_format06.rb +0 -50
- data/test/regression/test_chart_format07.rb +0 -55
- data/test/regression/test_chart_format08.rb +0 -50
- data/test/regression/test_chart_format09.rb +0 -54
- data/test/regression/test_chart_format10.rb +0 -57
- data/test/regression/test_chart_format11.rb +0 -61
- data/test/regression/test_chart_format12.rb +0 -58
- data/test/regression/test_chart_format13.rb +0 -50
- data/test/regression/test_chart_format14.rb +0 -54
- data/test/regression/test_chart_format15.rb +0 -52
- data/test/regression/test_chart_format16.rb +0 -55
- data/test/regression/test_chart_format17.rb +0 -39
- data/test/regression/test_chart_format18.rb +0 -43
- data/test/regression/test_chart_format19.rb +0 -46
- data/test/regression/test_chart_format20.rb +0 -54
- data/test/regression/test_chart_format21.rb +0 -47
- data/test/regression/test_chart_format22.rb +0 -47
- data/test/regression/test_chart_format23.rb +0 -47
- data/test/regression/test_chart_format24.rb +0 -52
- data/test/regression/test_chart_format25.rb +0 -46
- data/test/regression/test_chart_format26.rb +0 -48
- data/test/regression/test_chart_format27.rb +0 -58
- data/test/regression/test_chart_format28.rb +0 -52
- data/test/regression/test_chart_format29.rb +0 -59
- data/test/regression/test_chart_format30.rb +0 -53
- data/test/regression/test_chart_format31.rb +0 -60
- data/test/regression/test_chart_gap01.rb +0 -47
- data/test/regression/test_chart_gap02.rb +0 -47
- data/test/regression/test_chart_gap03.rb +0 -47
- data/test/regression/test_chart_gap04.rb +0 -54
- data/test/regression/test_chart_gap05.rb +0 -56
- data/test/regression/test_chart_gradient01.rb +0 -43
- data/test/regression/test_chart_gradient02.rb +0 -43
- data/test/regression/test_chart_gradient03.rb +0 -46
- data/test/regression/test_chart_gradient04.rb +0 -46
- data/test/regression/test_chart_gradient05.rb +0 -46
- data/test/regression/test_chart_gradient06.rb +0 -46
- data/test/regression/test_chart_gradient07.rb +0 -44
- data/test/regression/test_chart_gradient08.rb +0 -43
- data/test/regression/test_chart_gradient09.rb +0 -43
- data/test/regression/test_chart_gradient10.rb +0 -43
- data/test/regression/test_chart_gradient11.rb +0 -43
- data/test/regression/test_chart_gradient12.rb +0 -46
- data/test/regression/test_chart_gradient13.rb +0 -46
- data/test/regression/test_chart_gridlines01.rb +0 -42
- data/test/regression/test_chart_gridlines02.rb +0 -47
- data/test/regression/test_chart_gridlines03.rb +0 -63
- data/test/regression/test_chart_gridlines04.rb +0 -44
- data/test/regression/test_chart_gridlines05.rb +0 -48
- data/test/regression/test_chart_gridlines06.rb +0 -53
- data/test/regression/test_chart_gridlines07.rb +0 -69
- data/test/regression/test_chart_gridlines08.rb +0 -45
- data/test/regression/test_chart_gridlines09.rb +0 -67
- data/test/regression/test_chart_layout01.rb +0 -48
- data/test/regression/test_chart_layout02.rb +0 -48
- data/test/regression/test_chart_layout03.rb +0 -49
- data/test/regression/test_chart_layout04.rb +0 -47
- data/test/regression/test_chart_layout05.rb +0 -64
- data/test/regression/test_chart_layout06.rb +0 -48
- data/test/regression/test_chart_layout07.rb +0 -48
- data/test/regression/test_chart_layout08.rb +0 -49
- data/test/regression/test_chart_legend01.rb +0 -41
- data/test/regression/test_chart_legend02.rb +0 -41
- data/test/regression/test_chart_legend03.rb +0 -41
- data/test/regression/test_chart_legend04.rb +0 -41
- data/test/regression/test_chart_legend05.rb +0 -41
- data/test/regression/test_chart_legend06.rb +0 -41
- data/test/regression/test_chart_legend07.rb +0 -38
- data/test/regression/test_chart_line01.rb +0 -39
- data/test/regression/test_chart_line02.rb +0 -44
- data/test/regression/test_chart_line03.rb +0 -39
- data/test/regression/test_chart_line04.rb +0 -39
- data/test/regression/test_chart_line05.rb +0 -43
- data/test/regression/test_chart_line06.rb +0 -43
- data/test/regression/test_chart_name01.rb +0 -43
- data/test/regression/test_chart_name02.rb +0 -55
- data/test/regression/test_chart_name03.rb +0 -55
- data/test/regression/test_chart_order01.rb +0 -54
- data/test/regression/test_chart_order02.rb +0 -54
- data/test/regression/test_chart_order03.rb +0 -60
- data/test/regression/test_chart_pattern01.rb +0 -49
- data/test/regression/test_chart_pattern02.rb +0 -106
- data/test/regression/test_chart_pattern03.rb +0 -105
- data/test/regression/test_chart_pattern04.rb +0 -105
- data/test/regression/test_chart_pattern05.rb +0 -105
- data/test/regression/test_chart_pattern06.rb +0 -105
- data/test/regression/test_chart_pattern07.rb +0 -105
- data/test/regression/test_chart_pattern08.rb +0 -105
- data/test/regression/test_chart_pattern09.rb +0 -57
- data/test/regression/test_chart_pattern10.rb +0 -57
- data/test/regression/test_chart_pie01.rb +0 -36
- data/test/regression/test_chart_pie02.rb +0 -38
- data/test/regression/test_chart_pie03.rb +0 -38
- data/test/regression/test_chart_pie04.rb +0 -38
- data/test/regression/test_chart_pie05.rb +0 -38
- data/test/regression/test_chart_points01.rb +0 -37
- data/test/regression/test_chart_points02.rb +0 -40
- data/test/regression/test_chart_points03.rb +0 -42
- data/test/regression/test_chart_points04.rb +0 -52
- data/test/regression/test_chart_points05.rb +0 -49
- data/test/regression/test_chart_points06.rb +0 -49
- data/test/regression/test_chart_radar01.rb +0 -39
- data/test/regression/test_chart_radar02.rb +0 -43
- data/test/regression/test_chart_radar03.rb +0 -43
- data/test/regression/test_chart_scatter01.rb +0 -45
- data/test/regression/test_chart_scatter02.rb +0 -49
- data/test/regression/test_chart_scatter03.rb +0 -49
- data/test/regression/test_chart_scatter04.rb +0 -49
- data/test/regression/test_chart_scatter05.rb +0 -49
- data/test/regression/test_chart_scatter06.rb +0 -51
- data/test/regression/test_chart_scatter07.rb +0 -59
- data/test/regression/test_chart_scatter08.rb +0 -57
- data/test/regression/test_chart_scatter09.rb +0 -59
- data/test/regression/test_chart_scatter10.rb +0 -59
- data/test/regression/test_chart_scatter11.rb +0 -59
- data/test/regression/test_chart_scatter12.rb +0 -51
- data/test/regression/test_chart_scatter13.rb +0 -51
- data/test/regression/test_chart_scatter14.rb +0 -52
- data/test/regression/test_chart_scatter15.rb +0 -44
- data/test/regression/test_chart_size01.rb +0 -41
- data/test/regression/test_chart_size02.rb +0 -41
- data/test/regression/test_chart_size03.rb +0 -42
- data/test/regression/test_chart_size04.rb +0 -41
- data/test/regression/test_chart_size05.rb +0 -39
- data/test/regression/test_chart_sparse01.rb +0 -51
- data/test/regression/test_chart_stock01.rb +0 -65
- data/test/regression/test_chart_stock02.rb +0 -71
- data/test/regression/test_chart_str01.rb +0 -43
- data/test/regression/test_chart_str02.rb +0 -47
- data/test/regression/test_chart_table01.rb +0 -42
- data/test/regression/test_chart_table02.rb +0 -47
- data/test/regression/test_chart_table03.rb +0 -56
- data/test/regression/test_chart_title01.rb +0 -39
- data/test/regression/test_chart_title02.rb +0 -39
- data/test/regression/test_chartsheet01.rb +0 -41
- data/test/regression/test_chartsheet02.rb +0 -48
- data/test/regression/test_chartsheet03.rb +0 -46
- data/test/regression/test_chartsheet04.rb +0 -46
- data/test/regression/test_chartsheet05.rb +0 -46
- data/test/regression/test_chartsheet06.rb +0 -42
- data/test/regression/test_chartsheet07.rb +0 -55
- data/test/regression/test_chartsheet08.rb +0 -59
- data/test/regression/test_chartsheet09.rb +0 -50
- data/test/regression/test_comment01.rb +0 -27
- data/test/regression/test_comment02.rb +0 -28
- data/test/regression/test_comment03.rb +0 -31
- data/test/regression/test_comment04.rb +0 -36
- data/test/regression/test_comment06.rb +0 -33
- data/test/regression/test_comment07.rb +0 -35
- data/test/regression/test_comment08.rb +0 -35
- data/test/regression/test_comment09.rb +0 -31
- data/test/regression/test_comment10.rb +0 -30
- data/test/regression/test_comment11.rb +0 -31
- data/test/regression/test_comment12.rb +0 -30
- data/test/regression/test_comment13.rb +0 -36
- data/test/regression/test_comment14.rb +0 -29
- data/test/regression/test_comment15.rb +0 -28
- data/test/regression/test_comment16.rb +0 -34
- data/test/regression/test_cond_format01.rb +0 -45
- data/test/regression/test_cond_format02.rb +0 -40
- data/test/regression/test_cond_format03.rb +0 -51
- data/test/regression/test_cond_format04.rb +0 -50
- data/test/regression/test_cond_format05.rb +0 -40
- data/test/regression/test_cond_format06.rb +0 -44
- data/test/regression/test_cond_format07.rb +0 -61
- data/test/regression/test_cond_format08.rb +0 -45
- data/test/regression/test_cond_format10.rb +0 -42
- data/test/regression/test_cond_format11.rb +0 -46
- data/test/regression/test_cond_format12.rb +0 -46
- data/test/regression/test_cond_format13.rb +0 -52
- data/test/regression/test_cond_format14.rb +0 -42
- data/test/regression/test_cond_format15.rb +0 -53
- data/test/regression/test_cond_format16.rb +0 -53
- data/test/regression/test_cond_format17.rb +0 -37
- data/test/regression/test_cond_format18.rb +0 -136
- data/test/regression/test_cond_format19.rb +0 -64
- data/test/regression/test_cond_format20.rb +0 -43
- data/test/regression/test_custom_colors01.rb +0 -33
- data/test/regression/test_data_validation01.rb +0 -22
- data/test/regression/test_data_validation02.rb +0 -27
- data/test/regression/test_data_validation03.rb +0 -44
- data/test/regression/test_data_validation04.rb +0 -37
- data/test/regression/test_data_validation05.rb +0 -36
- data/test/regression/test_data_validation08.rb +0 -24
- data/test/regression/test_date_1904_01.rb +0 -31
- data/test/regression/test_date_1904_02.rb +0 -34
- data/test/regression/test_date_examples01.rb +0 -48
- data/test/regression/test_default_format01.rb +0 -22
- data/test/regression/test_default_row01.rb +0 -26
- data/test/regression/test_default_row02.rb +0 -28
- data/test/regression/test_default_row03.rb +0 -28
- data/test/regression/test_default_row04.rb +0 -31
- data/test/regression/test_default_row05.rb +0 -32
- data/test/regression/test_defined_name01.rb +0 -45
- data/test/regression/test_defined_name02.rb +0 -30
- data/test/regression/test_defined_name03.rb +0 -30
- data/test/regression/test_defined_name04.rb +0 -50
- data/test/regression/test_dynamic_array01.rb +0 -25
- data/test/regression/test_escapes01.rb +0 -35
- data/test/regression/test_escapes02.rb +0 -32
- data/test/regression/test_escapes03.rb +0 -33
- data/test/regression/test_escapes04.rb +0 -31
- data/test/regression/test_escapes05.rb +0 -32
- data/test/regression/test_escapes06.rb +0 -26
- data/test/regression/test_escapes07.rb +0 -29
- data/test/regression/test_escapes08.rb +0 -30
- data/test/regression/test_excel2003_style01.rb +0 -21
- data/test/regression/test_excel2003_style02.rb +0 -37
- data/test/regression/test_excel2003_style03.rb +0 -40
- data/test/regression/test_excel2003_style04.rb +0 -24
- data/test/regression/test_excel2003_style05.rb +0 -31
- data/test/regression/test_excel2003_style06.rb +0 -31
- data/test/regression/test_excel2003_style07.rb +0 -31
- data/test/regression/test_excel2003_style08.rb +0 -26
- data/test/regression/test_firstsheet01.rb +0 -43
- data/test/regression/test_fit_to_pages01.rb +0 -35
- data/test/regression/test_fit_to_pages02.rb +0 -35
- data/test/regression/test_fit_to_pages03.rb +0 -35
- data/test/regression/test_fit_to_pages04.rb +0 -35
- data/test/regression/test_fit_to_pages05.rb +0 -35
- data/test/regression/test_format01.rb +0 -35
- data/test/regression/test_format02.rb +0 -47
- data/test/regression/test_format03.rb +0 -31
- data/test/regression/test_format04.rb +0 -41
- data/test/regression/test_format05.rb +0 -26
- data/test/regression/test_format11.rb +0 -28
- data/test/regression/test_format12.rb +0 -41
- data/test/regression/test_format13.rb +0 -31
- data/test/regression/test_format14.rb +0 -26
- data/test/regression/test_format15.rb +0 -26
- data/test/regression/test_format16.rb +0 -24
- data/test/regression/test_format17.rb +0 -24
- data/test/regression/test_formula_results01.rb +0 -37
- data/test/regression/test_gridlines01.rb +0 -34
- data/test/regression/test_header01.rb +0 -28
- data/test/regression/test_header02.rb +0 -28
- data/test/regression/test_header03.rb +0 -31
- data/test/regression/test_header04.rb +0 -30
- data/test/regression/test_header_image01.rb +0 -26
- data/test/regression/test_header_image02.rb +0 -33
- data/test/regression/test_header_image03.rb +0 -34
- data/test/regression/test_header_image04.rb +0 -34
- data/test/regression/test_header_image05.rb +0 -28
- data/test/regression/test_header_image06.rb +0 -32
- data/test/regression/test_header_image07.rb +0 -29
- data/test/regression/test_header_image08.rb +0 -33
- data/test/regression/test_header_image09.rb +0 -32
- data/test/regression/test_header_image10.rb +0 -36
- data/test/regression/test_header_image11.rb +0 -28
- data/test/regression/test_header_image12.rb +0 -28
- data/test/regression/test_header_image13.rb +0 -36
- data/test/regression/test_header_image14.rb +0 -36
- data/test/regression/test_header_image15.rb +0 -36
- data/test/regression/test_header_image16.rb +0 -42
- data/test/regression/test_header_image17.rb +0 -46
- data/test/regression/test_header_image18.rb +0 -48
- data/test/regression/test_header_image19.rb +0 -36
- data/test/regression/test_hide01.rb +0 -25
- data/test/regression/test_hyperlink01.rb +0 -26
- data/test/regression/test_hyperlink02.rb +0 -30
- data/test/regression/test_hyperlink03.rb +0 -36
- data/test/regression/test_hyperlink04.rb +0 -34
- data/test/regression/test_hyperlink05.rb +0 -29
- data/test/regression/test_hyperlink06.rb +0 -28
- data/test/regression/test_hyperlink07.rb +0 -23
- data/test/regression/test_hyperlink08.rb +0 -27
- data/test/regression/test_hyperlink09.rb +0 -28
- data/test/regression/test_hyperlink10.rb +0 -27
- data/test/regression/test_hyperlink11.rb +0 -27
- data/test/regression/test_hyperlink12.rb +0 -28
- data/test/regression/test_hyperlink13.rb +0 -27
- data/test/regression/test_hyperlink14.rb +0 -27
- data/test/regression/test_hyperlink15.rb +0 -29
- data/test/regression/test_hyperlink16.rb +0 -29
- data/test/regression/test_hyperlink17.rb +0 -30
- data/test/regression/test_hyperlink18.rb +0 -30
- data/test/regression/test_hyperlink20.rb +0 -32
- data/test/regression/test_hyperlink21.rb +0 -27
- data/test/regression/test_hyperlink22.rb +0 -27
- data/test/regression/test_hyperlink23.rb +0 -27
- data/test/regression/test_hyperlink24.rb +0 -27
- data/test/regression/test_hyperlink25.rb +0 -30
- data/test/regression/test_hyperlink26.rb +0 -30
- data/test/regression/test_hyperlink27.rb +0 -27
- data/test/regression/test_hyperlink28.rb +0 -50
- data/test/regression/test_hyperlink29.rb +0 -27
- data/test/regression/test_hyperlink30.rb +0 -36
- data/test/regression/test_hyperlink32.rb +0 -27
- data/test/regression/test_hyperlink33.rb +0 -28
- data/test/regression/test_hyperlink34.rb +0 -33
- data/test/regression/test_hyperlink35.rb +0 -39
- data/test/regression/test_hyperlink36.rb +0 -34
- data/test/regression/test_hyperlink37.rb +0 -33
- data/test/regression/test_hyperlink38.rb +0 -27
- data/test/regression/test_hyperlink39.rb +0 -27
- data/test/regression/test_hyperlink40.rb +0 -27
- data/test/regression/test_hyperlink41.rb +0 -27
- data/test/regression/test_hyperlink42.rb +0 -27
- data/test/regression/test_hyperlink43.rb +0 -27
- data/test/regression/test_hyperlink44.rb +0 -27
- data/test/regression/test_hyperlink45.rb +0 -27
- data/test/regression/test_hyperlink47.rb +0 -27
- data/test/regression/test_hyperlink48.rb +0 -31
- data/test/regression/test_hyperlink49.rb +0 -29
- data/test/regression/test_hyperlink50.rb +0 -27
- data/test/regression/test_hyperlink51.rb +0 -27
- data/test/regression/test_ignore_error01.rb +0 -23
- data/test/regression/test_ignore_error02.rb +0 -24
- data/test/regression/test_ignore_error03.rb +0 -26
- data/test/regression/test_ignore_error04.rb +0 -26
- data/test/regression/test_ignore_error05.rb +0 -32
- data/test/regression/test_ignore_error06.rb +0 -32
- data/test/regression/test_image01.rb +0 -23
- data/test/regression/test_image02.rb +0 -23
- data/test/regression/test_image03.rb +0 -23
- data/test/regression/test_image04.rb +0 -23
- data/test/regression/test_image05.rb +0 -26
- data/test/regression/test_image06.rb +0 -36
- data/test/regression/test_image07.rb +0 -25
- data/test/regression/test_image08.rb +0 -27
- data/test/regression/test_image09.rb +0 -24
- data/test/regression/test_image10.rb +0 -24
- data/test/regression/test_image11.rb +0 -24
- data/test/regression/test_image12.rb +0 -27
- data/test/regression/test_image13.rb +0 -27
- data/test/regression/test_image14.rb +0 -29
- data/test/regression/test_image15.rb +0 -31
- data/test/regression/test_image16.rb +0 -24
- data/test/regression/test_image17.rb +0 -23
- data/test/regression/test_image18.rb +0 -27
- data/test/regression/test_image19.rb +0 -24
- data/test/regression/test_image22.rb +0 -24
- data/test/regression/test_image23.rb +0 -30
- data/test/regression/test_image24.rb +0 -24
- data/test/regression/test_image25.rb +0 -24
- data/test/regression/test_image26.rb +0 -30
- data/test/regression/test_image27.rb +0 -24
- data/test/regression/test_image28.rb +0 -27
- data/test/regression/test_image29.rb +0 -27
- data/test/regression/test_image30.rb +0 -27
- data/test/regression/test_image31.rb +0 -30
- data/test/regression/test_image32.rb +0 -28
- data/test/regression/test_image33.rb +0 -32
- data/test/regression/test_image35.rb +0 -26
- data/test/regression/test_image36.rb +0 -26
- data/test/regression/test_image44.rb +0 -28
- data/test/regression/test_image45.rb +0 -29
- data/test/regression/test_image46.rb +0 -29
- data/test/regression/test_image47.rb +0 -28
- data/test/regression/test_image48.rb +0 -32
- data/test/regression/test_image49.rb +0 -38
- data/test/regression/test_image50.rb +0 -24
- data/test/regression/test_image51.rb +0 -30
- data/test/regression/test_image52.rb +0 -26
- data/test/regression/test_image53.rb +0 -26
- data/test/regression/test_image54.rb +0 -26
- data/test/regression/test_image55.rb +0 -27
- data/test/regression/test_image56.rb +0 -23
- data/test/regression/test_image57.rb +0 -23
- data/test/regression/test_landscape01.rb +0 -27
- data/test/regression/test_macro01.rb +0 -29
- data/test/regression/test_merge_cells01.rb +0 -25
- data/test/regression/test_merge_range01.rb +0 -24
- data/test/regression/test_merge_range02.rb +0 -24
- data/test/regression/test_merge_range03.rb +0 -26
- data/test/regression/test_merge_range04.rb +0 -24
- data/test/regression/test_merge_range05.rb +0 -24
- data/test/regression/test_object_position01.rb +0 -26
- data/test/regression/test_object_position02.rb +0 -26
- data/test/regression/test_object_position03.rb +0 -26
- data/test/regression/test_object_position04.rb +0 -44
- data/test/regression/test_object_position06.rb +0 -28
- data/test/regression/test_object_position07.rb +0 -28
- data/test/regression/test_object_position08.rb +0 -47
- data/test/regression/test_object_position09.rb +0 -50
- data/test/regression/test_object_position10.rb +0 -28
- data/test/regression/test_object_position12.rb +0 -25
- data/test/regression/test_object_position13.rb +0 -25
- data/test/regression/test_object_position14.rb +0 -25
- data/test/regression/test_object_position15.rb +0 -29
- data/test/regression/test_object_position16.rb +0 -29
- data/test/regression/test_object_position17.rb +0 -29
- data/test/regression/test_object_position18.rb +0 -29
- data/test/regression/test_object_position19.rb +0 -29
- data/test/regression/test_object_position20.rb +0 -29
- data/test/regression/test_outline01.rb +0 -84
- data/test/regression/test_outline02.rb +0 -87
- data/test/regression/test_outline03.rb +0 -57
- data/test/regression/test_outline04.rb +0 -53
- data/test/regression/test_outline05.rb +0 -88
- data/test/regression/test_outline06.rb +0 -87
- data/test/regression/test_page_breaks01.rb +0 -34
- data/test/regression/test_page_breaks02.rb +0 -34
- data/test/regression/test_page_breaks03.rb +0 -34
- data/test/regression/test_page_breaks04.rb +0 -34
- data/test/regression/test_page_breaks05.rb +0 -34
- data/test/regression/test_page_breaks06.rb +0 -35
- data/test/regression/test_page_view01.rb +0 -34
- data/test/regression/test_panes01.rb +0 -61
- data/test/regression/test_print_across01.rb +0 -35
- data/test/regression/test_print_area01.rb +0 -34
- data/test/regression/test_print_area02.rb +0 -34
- data/test/regression/test_print_area03.rb +0 -34
- data/test/regression/test_print_area04.rb +0 -34
- data/test/regression/test_print_area05.rb +0 -34
- data/test/regression/test_print_area06.rb +0 -34
- data/test/regression/test_print_area07.rb +0 -35
- data/test/regression/test_print_options01.rb +0 -34
- data/test/regression/test_print_options02.rb +0 -34
- data/test/regression/test_print_options03.rb +0 -34
- data/test/regression/test_print_options04.rb +0 -34
- data/test/regression/test_print_options05.rb +0 -37
- data/test/regression/test_print_options06.rb +0 -35
- data/test/regression/test_print_options07.rb +0 -31
- data/test/regression/test_print_scale01.rb +0 -35
- data/test/regression/test_print_scale02.rb +0 -35
- data/test/regression/test_properties01.rb +0 -36
- data/test/regression/test_properties02.rb +0 -25
- data/test/regression/test_properties03.rb +0 -26
- data/test/regression/test_properties04.rb +0 -61
- data/test/regression/test_properties05.rb +0 -30
- data/test/regression/test_protect01.rb +0 -28
- data/test/regression/test_protect02.rb +0 -30
- data/test/regression/test_protect03.rb +0 -30
- data/test/regression/test_protect04.rb +0 -32
- data/test/regression/test_protect05.rb +0 -35
- data/test/regression/test_protect06.rb +0 -35
- data/test/regression/test_protect07.rb +0 -23
- data/test/regression/test_quote_name01.rb +0 -48
- data/test/regression/test_quote_name03.rb +0 -41
- data/test/regression/test_quote_name04.rb +0 -40
- data/test/regression/test_repeat01.rb +0 -34
- data/test/regression/test_repeat02.rb +0 -34
- data/test/regression/test_repeat03.rb +0 -35
- data/test/regression/test_repeat04.rb +0 -34
- data/test/regression/test_repeat05.rb +0 -41
- data/test/regression/test_rich_string01.rb +0 -28
- data/test/regression/test_rich_string02.rb +0 -28
- data/test/regression/test_rich_string03.rb +0 -28
- data/test/regression/test_rich_string04.rb +0 -28
- data/test/regression/test_rich_string05.rb +0 -30
- data/test/regression/test_rich_string06.rb +0 -27
- data/test/regression/test_rich_string07.rb +0 -33
- data/test/regression/test_rich_string08.rb +0 -29
- data/test/regression/test_rich_string09.rb +0 -31
- data/test/regression/test_rich_string10.rb +0 -30
- data/test/regression/test_rich_string11.rb +0 -29
- data/test/regression/test_rich_string12.rb +0 -32
- data/test/regression/test_row_col_format01.rb +0 -24
- data/test/regression/test_row_col_format02.rb +0 -25
- data/test/regression/test_row_col_format03.rb +0 -24
- data/test/regression/test_row_col_format04.rb +0 -25
- data/test/regression/test_row_col_format05.rb +0 -26
- data/test/regression/test_row_col_format06.rb +0 -29
- data/test/regression/test_row_col_format07.rb +0 -24
- data/test/regression/test_row_col_format08.rb +0 -34
- data/test/regression/test_row_col_format09.rb +0 -33
- data/test/regression/test_row_col_format10.rb +0 -24
- data/test/regression/test_row_col_format11.rb +0 -23
- data/test/regression/test_row_col_format12.rb +0 -23
- data/test/regression/test_row_col_format13.rb +0 -28
- data/test/regression/test_row_col_format14.rb +0 -28
- data/test/regression/test_selection01.rb +0 -23
- data/test/regression/test_selection02.rb +0 -33
- data/test/regression/test_set_column01.rb +0 -63
- data/test/regression/test_set_column02.rb +0 -64
- data/test/regression/test_set_column03.rb +0 -34
- data/test/regression/test_set_column04.rb +0 -42
- data/test/regression/test_set_column05.rb +0 -52
- data/test/regression/test_set_column06.rb +0 -49
- data/test/regression/test_set_column07.rb +0 -45
- data/test/regression/test_set_column08.rb +0 -42
- data/test/regression/test_set_column09.rb +0 -31
- data/test/regression/test_set_column10.rb +0 -55
- data/test/regression/test_set_column11.rb +0 -48
- data/test/regression/test_set_print_scale01.rb +0 -36
- data/test/regression/test_set_row01.rb +0 -35
- data/test/regression/test_set_row02.rb +0 -35
- data/test/regression/test_set_row03.rb +0 -35
- data/test/regression/test_set_row04.rb +0 -35
- data/test/regression/test_set_start_page01.rb +0 -33
- data/test/regression/test_set_start_page02.rb +0 -33
- data/test/regression/test_set_start_page03.rb +0 -33
- data/test/regression/test_shape01.rb +0 -25
- data/test/regression/test_shape02.rb +0 -42
- data/test/regression/test_shape03.rb +0 -45
- data/test/regression/test_shape04.rb +0 -43
- data/test/regression/test_shape_connect01.rb +0 -48
- data/test/regression/test_shape_connect02.rb +0 -42
- data/test/regression/test_shape_connect03.rb +0 -78
- data/test/regression/test_shape_connect04.rb +0 -75
- data/test/regression/test_shape_scale01.rb +0 -45
- data/test/regression/test_shape_stencil01.rb +0 -39
- data/test/regression/test_shared_strings01.rb +0 -32
- data/test/regression/test_shared_strings02.rb +0 -45
- data/test/regression/test_shared_strings_encoding.rb +0 -0
- data/test/regression/test_simple01.rb +0 -24
- data/test/regression/test_simple02.rb +0 -32
- data/test/regression/test_simple03.rb +0 -39
- data/test/regression/test_simple04.rb +0 -29
- data/test/regression/test_simple05.rb +0 -40
- data/test/regression/test_tab_color01.rb +0 -20
- data/test/regression/test_table01.rb +0 -27
- data/test/regression/test_table02.rb +0 -37
- data/test/regression/test_table03.rb +0 -33
- data/test/regression/test_table04.rb +0 -37
- data/test/regression/test_table05.rb +0 -41
- data/test/regression/test_table06.rb +0 -44
- data/test/regression/test_table07.rb +0 -29
- data/test/regression/test_table08.rb +0 -48
- data/test/regression/test_table09.rb +0 -65
- data/test/regression/test_table10.rb +0 -68
- data/test/regression/test_table11.rb +0 -37
- data/test/regression/test_table12.rb +0 -36
- data/test/regression/test_table13.rb +0 -51
- data/test/regression/test_table14.rb +0 -51
- data/test/regression/test_table15.rb +0 -37
- data/test/regression/test_table16.rb +0 -37
- data/test/regression/test_table17.rb +0 -70
- data/test/regression/test_table20.rb +0 -34
- data/test/regression/test_table21.rb +0 -36
- data/test/regression/test_table22.rb +0 -32
- data/test/regression/test_table23.rb +0 -56
- data/test/regression/test_table24.rb +0 -27
- data/test/regression/test_table25.rb +0 -27
- data/test/regression/test_table26.rb +0 -38
- data/test/regression/test_tutorial01.rb +0 -38
- data/test/regression/test_tutorial02.rb +0 -44
- data/test/regression/test_tutorial03.rb +0 -49
- data/test/regression/test_types02.rb +0 -25
- data/test/regression/test_types08.rb +0 -31
- data/test/regression/test_update_range_format_with_params.rb +0 -42
- data/test/regression/test_urls_as_strings.rb +0 -25
- data/test/regression/test_utf8_01.rb +0 -23
- data/test/regression/test_utf8_03.rb +0 -23
- data/test/regression/test_utf8_04.rb +0 -23
- data/test/regression/test_utf8_05.rb +0 -26
- data/test/regression/test_utf8_06.rb +0 -28
- data/test/regression/test_utf8_07.rb +0 -27
- data/test/regression/test_utf8_08.rb +0 -38
- data/test/regression/test_utf8_09.rb +0 -20
- data/test/regression/test_utf8_10.rb +0 -42
- data/test/regression/test_utf8_11.rb +0 -23
- data/test/regression/test_vml01.rb +0 -29
- data/test/regression/test_vml02.rb +0 -31
- data/test/regression/test_vml03.rb +0 -40
- data/test/regression/xlsx_files/array_formula01.xlsx +0 -0
- data/test/regression/xlsx_files/array_formula02.xlsx +0 -0
- data/test/regression/xlsx_files/array_formula03.xlsx +0 -0
- data/test/regression/xlsx_files/array_formula04.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter00.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter01.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter02.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter03.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter04.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter05.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter06.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter07.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter08.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter09.xlsx +0 -0
- data/test/regression/xlsx_files/autofilter10.xlsx +0 -0
- data/test/regression/xlsx_files/background01.xlsx +0 -0
- data/test/regression/xlsx_files/background02.xlsx +0 -0
- data/test/regression/xlsx_files/background03.xlsx +0 -0
- data/test/regression/xlsx_files/background04.xlsx +0 -0
- data/test/regression/xlsx_files/background05.xlsx +0 -0
- data/test/regression/xlsx_files/background06.xlsx +0 -0
- data/test/regression/xlsx_files/background07.xlsx +0 -0
- data/test/regression/xlsx_files/button01.xlsx +0 -0
- data/test/regression/xlsx_files/button02.xlsx +0 -0
- data/test/regression/xlsx_files/button03.xlsx +0 -0
- data/test/regression/xlsx_files/button04.xlsx +0 -0
- data/test/regression/xlsx_files/button05.xlsx +0 -0
- data/test/regression/xlsx_files/button07.xlsm +0 -0
- data/test/regression/xlsx_files/button08.xlsx +0 -0
- data/test/regression/xlsx_files/button09.xlsx +0 -0
- data/test/regression/xlsx_files/button10.xlsx +0 -0
- data/test/regression/xlsx_files/button11.xlsx +0 -0
- data/test/regression/xlsx_files/button12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_area01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_area02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_area03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_area04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis13.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis14.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis15.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis16.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis17.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis18.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis19.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis20.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis21.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis22.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis23.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis24.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis25.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis30.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis31.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis32.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis33.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis34.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis35.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis36.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis37.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis38.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis39.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis40.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis41.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis42.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis43.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis44.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis45.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis46.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis47.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis48.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar13.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar14.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar15.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar16.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar17.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar18.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar19.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar20.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar21.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar22.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar23.xlsx +0 -0
- data/test/regression/xlsx_files/chart_bar24.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_blank06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_clustered01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_column12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_crossing06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels13.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels14.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels15.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels16.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels17.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels18.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels19.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels20.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels21.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels22.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels23.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels24.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels25.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels30.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels31.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels32.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels33.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels34.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels35.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels36.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels37.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels38.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels39.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels40.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels41.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels42.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels43.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels44.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels45.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels46.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels47.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels48.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels49.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels50.xlsx +0 -0
- data/test/regression/xlsx_files/chart_date01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_date02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_date03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_date04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_date05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_display_units12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_doughnut07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_drop_lines01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_drop_lines02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_drop_lines03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_drop_lines04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format13.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format14.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format15.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format16.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format17.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format18.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format19.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format20.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format21.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format22.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format23.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format24.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format25.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format26.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format27.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format28.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format29.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format30.xlsx +0 -0
- data/test/regression/xlsx_files/chart_format31.xlsx +0 -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/chart_gap04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gradient13.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gridlines09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_layout08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_legend07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_name01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_name02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_name03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_order01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_order03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pattern10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pie01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pie02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pie03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pie04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_pie05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_points06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_radar03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter11.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter14.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter15.xlsx +0 -0
- data/test/regression/xlsx_files/chart_size01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_size04.xlsx +0 -0
- data/test/regression/xlsx_files/chart_sparse01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_stock01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_stock02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_str01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_str02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_table01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_table02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_table03.xlsx +0 -0
- data/test/regression/xlsx_files/chart_title01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_title02.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet01.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet02.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet03.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet04.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet05.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet06.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet07.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet08.xlsx +0 -0
- data/test/regression/xlsx_files/chartsheet09.xlsx +0 -0
- data/test/regression/xlsx_files/comment01.xlsx +0 -0
- data/test/regression/xlsx_files/comment02.xlsx +0 -0
- data/test/regression/xlsx_files/comment03.xlsx +0 -0
- data/test/regression/xlsx_files/comment04.xlsx +0 -0
- data/test/regression/xlsx_files/comment05.xlsx +0 -0
- data/test/regression/xlsx_files/comment06.xlsx +0 -0
- data/test/regression/xlsx_files/comment07.xlsx +0 -0
- data/test/regression/xlsx_files/comment08.xlsx +0 -0
- data/test/regression/xlsx_files/comment09.xlsx +0 -0
- data/test/regression/xlsx_files/comment10.xlsx +0 -0
- data/test/regression/xlsx_files/comment11.xlsx +0 -0
- data/test/regression/xlsx_files/comment12.xlsx +0 -0
- data/test/regression/xlsx_files/comment13.xlsx +0 -0
- data/test/regression/xlsx_files/comment14.xlsx +0 -0
- data/test/regression/xlsx_files/comment15.xlsx +0 -0
- data/test/regression/xlsx_files/comment16.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format01.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format02.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format03.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format04.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format05.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format06.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format07.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format08.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format10.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format11.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format12.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format14.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format15.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format16.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format17.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format18.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format19.xlsx +0 -0
- data/test/regression/xlsx_files/cond_format20.xlsx +0 -0
- data/test/regression/xlsx_files/custom_colors01.xlsx +0 -0
- data/test/regression/xlsx_files/data_validation01.xlsx +0 -0
- data/test/regression/xlsx_files/data_validation02.xlsx +0 -0
- data/test/regression/xlsx_files/data_validation03.xlsx +0 -0
- data/test/regression/xlsx_files/data_validation08.xlsx +0 -0
- data/test/regression/xlsx_files/date_1904_01.xlsx +0 -0
- data/test/regression/xlsx_files/date_1904_02.xlsx +0 -0
- data/test/regression/xlsx_files/date_examples01.xlsx +0 -0
- data/test/regression/xlsx_files/default_format01.xlsx +0 -0
- data/test/regression/xlsx_files/default_row01.xlsx +0 -0
- data/test/regression/xlsx_files/default_row02.xlsx +0 -0
- data/test/regression/xlsx_files/default_row03.xlsx +0 -0
- data/test/regression/xlsx_files/default_row04.xlsx +0 -0
- data/test/regression/xlsx_files/default_row05.xlsx +0 -0
- data/test/regression/xlsx_files/defined_name01.xlsx +0 -0
- data/test/regression/xlsx_files/defined_name02.xlsx +0 -0
- data/test/regression/xlsx_files/defined_name03.xlsx +0 -0
- data/test/regression/xlsx_files/defined_name04.xlsx +0 -0
- data/test/regression/xlsx_files/dynamic_array01.xlsx +0 -0
- data/test/regression/xlsx_files/escapes01.xlsx +0 -0
- data/test/regression/xlsx_files/escapes02.xlsx +0 -0
- data/test/regression/xlsx_files/escapes03.xlsx +0 -0
- data/test/regression/xlsx_files/escapes04.xlsx +0 -0
- data/test/regression/xlsx_files/escapes05.xlsx +0 -0
- data/test/regression/xlsx_files/escapes06.xlsx +0 -0
- data/test/regression/xlsx_files/escapes07.xlsx +0 -0
- data/test/regression/xlsx_files/escapes08.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style01.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style02.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style03.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style04.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style05.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style06.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style07.xlsx +0 -0
- data/test/regression/xlsx_files/excel2003_style08.xlsx +0 -0
- data/test/regression/xlsx_files/filehandle01.xlsx +0 -0
- data/test/regression/xlsx_files/firstsheet01.xlsx +0 -0
- data/test/regression/xlsx_files/fit_to_pages01.xlsx +0 -0
- data/test/regression/xlsx_files/fit_to_pages02.xlsx +0 -0
- data/test/regression/xlsx_files/fit_to_pages03.xlsx +0 -0
- data/test/regression/xlsx_files/fit_to_pages04.xlsx +0 -0
- data/test/regression/xlsx_files/fit_to_pages05.xlsx +0 -0
- data/test/regression/xlsx_files/format01.xlsx +0 -0
- data/test/regression/xlsx_files/format02.xlsx +0 -0
- data/test/regression/xlsx_files/format03.xlsx +0 -0
- data/test/regression/xlsx_files/format04.xlsx +0 -0
- data/test/regression/xlsx_files/format05.xlsx +0 -0
- data/test/regression/xlsx_files/format11.xlsx +0 -0
- data/test/regression/xlsx_files/format12.xlsx +0 -0
- data/test/regression/xlsx_files/format13.xlsx +0 -0
- data/test/regression/xlsx_files/format14.xlsx +0 -0
- data/test/regression/xlsx_files/format15.xlsx +0 -0
- data/test/regression/xlsx_files/format16.xlsx +0 -0
- data/test/regression/xlsx_files/format17.xlsx +0 -0
- data/test/regression/xlsx_files/formula_results01.xlsx +0 -0
- data/test/regression/xlsx_files/gridlines01.xlsx +0 -0
- data/test/regression/xlsx_files/header01.xlsx +0 -0
- data/test/regression/xlsx_files/header02.xlsx +0 -0
- data/test/regression/xlsx_files/header03.xlsx +0 -0
- data/test/regression/xlsx_files/header04.xlsx +0 -0
- data/test/regression/xlsx_files/header_image01.xlsx +0 -0
- data/test/regression/xlsx_files/header_image02.xlsx +0 -0
- data/test/regression/xlsx_files/header_image03.xlsx +0 -0
- data/test/regression/xlsx_files/header_image04.xlsx +0 -0
- data/test/regression/xlsx_files/header_image05.xlsx +0 -0
- data/test/regression/xlsx_files/header_image06.xlsx +0 -0
- data/test/regression/xlsx_files/header_image07.xlsx +0 -0
- data/test/regression/xlsx_files/header_image08.xlsx +0 -0
- data/test/regression/xlsx_files/header_image09.xlsx +0 -0
- data/test/regression/xlsx_files/header_image10.xlsx +0 -0
- data/test/regression/xlsx_files/header_image11.xlsx +0 -0
- data/test/regression/xlsx_files/header_image12.xlsx +0 -0
- data/test/regression/xlsx_files/header_image13.xlsx +0 -0
- data/test/regression/xlsx_files/header_image14.xlsx +0 -0
- data/test/regression/xlsx_files/header_image15.xlsx +0 -0
- data/test/regression/xlsx_files/header_image16.xlsx +0 -0
- data/test/regression/xlsx_files/header_image17.xlsx +0 -0
- data/test/regression/xlsx_files/header_image18.xlsx +0 -0
- data/test/regression/xlsx_files/header_image19.xlsx +0 -0
- data/test/regression/xlsx_files/hide01.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink01.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink02.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink03.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink04.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink05.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink06.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink07.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink08.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink09.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink10.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink11.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink12.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink13.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink14.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink15.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink16.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink17.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink18.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink20.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink21.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink22.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink23.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink24.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink25.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink26.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink28.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink29.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink30.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink31.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink32.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink33.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink34.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink35.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink36.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink37.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink38.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink39.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink40.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink41.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink42.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink43.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink44.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink45.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink46.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink47.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink48.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink49.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink50.xlsx +0 -0
- data/test/regression/xlsx_files/hyperlink51.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error01.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error02.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error03.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error04.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error05.xlsx +0 -0
- data/test/regression/xlsx_files/ignore_error06.xlsx +0 -0
- data/test/regression/xlsx_files/image01.xlsx +0 -0
- data/test/regression/xlsx_files/image02.xlsx +0 -0
- data/test/regression/xlsx_files/image03.xlsx +0 -0
- data/test/regression/xlsx_files/image04.xlsx +0 -0
- data/test/regression/xlsx_files/image05.xlsx +0 -0
- data/test/regression/xlsx_files/image06.xlsx +0 -0
- data/test/regression/xlsx_files/image07.xlsx +0 -0
- data/test/regression/xlsx_files/image08.xlsx +0 -0
- data/test/regression/xlsx_files/image09.xlsx +0 -0
- data/test/regression/xlsx_files/image10.xlsx +0 -0
- data/test/regression/xlsx_files/image11.xlsx +0 -0
- data/test/regression/xlsx_files/image12.xlsx +0 -0
- data/test/regression/xlsx_files/image13.xlsx +0 -0
- data/test/regression/xlsx_files/image14.xlsx +0 -0
- data/test/regression/xlsx_files/image15.xlsx +0 -0
- data/test/regression/xlsx_files/image16.xlsx +0 -0
- data/test/regression/xlsx_files/image17.xlsx +0 -0
- data/test/regression/xlsx_files/image18.xlsx +0 -0
- data/test/regression/xlsx_files/image19.xlsx +0 -0
- data/test/regression/xlsx_files/image22.xlsx +0 -0
- data/test/regression/xlsx_files/image23.xlsx +0 -0
- data/test/regression/xlsx_files/image24.xlsx +0 -0
- data/test/regression/xlsx_files/image25.xlsx +0 -0
- data/test/regression/xlsx_files/image26.xlsx +0 -0
- data/test/regression/xlsx_files/image27.xlsx +0 -0
- data/test/regression/xlsx_files/image28.xlsx +0 -0
- data/test/regression/xlsx_files/image29.xlsx +0 -0
- data/test/regression/xlsx_files/image30.xlsx +0 -0
- data/test/regression/xlsx_files/image31.xlsx +0 -0
- data/test/regression/xlsx_files/image32.xlsx +0 -0
- data/test/regression/xlsx_files/image33.xlsx +0 -0
- data/test/regression/xlsx_files/image35.xlsx +0 -0
- data/test/regression/xlsx_files/image36.xlsx +0 -0
- data/test/regression/xlsx_files/image44.xlsx +0 -0
- data/test/regression/xlsx_files/image45.xlsx +0 -0
- data/test/regression/xlsx_files/image46.xlsx +0 -0
- data/test/regression/xlsx_files/image47.xlsx +0 -0
- data/test/regression/xlsx_files/image48.xlsx +0 -0
- data/test/regression/xlsx_files/image49.xlsx +0 -0
- data/test/regression/xlsx_files/image50.xlsx +0 -0
- data/test/regression/xlsx_files/image51.xlsx +0 -0
- data/test/regression/xlsx_files/image52.xlsx +0 -0
- data/test/regression/xlsx_files/image53.xlsx +0 -0
- data/test/regression/xlsx_files/image54.xlsx +0 -0
- data/test/regression/xlsx_files/image55.xlsx +0 -0
- data/test/regression/xlsx_files/image56.xlsx +0 -0
- data/test/regression/xlsx_files/image57.xlsx +0 -0
- data/test/regression/xlsx_files/landscape01.xlsx +0 -0
- data/test/regression/xlsx_files/macro01.xlsm +0 -0
- data/test/regression/xlsx_files/merge_cells01.xlsx +0 -0
- data/test/regression/xlsx_files/merge_range01.xlsx +0 -0
- data/test/regression/xlsx_files/merge_range02.xlsx +0 -0
- data/test/regression/xlsx_files/merge_range03.xlsx +0 -0
- data/test/regression/xlsx_files/merge_range04.xlsx +0 -0
- data/test/regression/xlsx_files/merge_range05.xlsx +0 -0
- data/test/regression/xlsx_files/object_position01.xlsx +0 -0
- data/test/regression/xlsx_files/object_position02.xlsx +0 -0
- data/test/regression/xlsx_files/object_position03.xlsx +0 -0
- data/test/regression/xlsx_files/object_position04.xlsx +0 -0
- data/test/regression/xlsx_files/object_position06.xlsx +0 -0
- data/test/regression/xlsx_files/object_position07.xlsx +0 -0
- data/test/regression/xlsx_files/object_position08.xlsx +0 -0
- data/test/regression/xlsx_files/object_position09.xlsx +0 -0
- data/test/regression/xlsx_files/object_position10.xlsx +0 -0
- data/test/regression/xlsx_files/object_position12.xlsx +0 -0
- data/test/regression/xlsx_files/object_position13.xlsx +0 -0
- data/test/regression/xlsx_files/object_position14.xlsx +0 -0
- data/test/regression/xlsx_files/object_position15.xlsx +0 -0
- data/test/regression/xlsx_files/object_position16.xlsx +0 -0
- data/test/regression/xlsx_files/object_position17.xlsx +0 -0
- data/test/regression/xlsx_files/object_position18.xlsx +0 -0
- data/test/regression/xlsx_files/object_position19.xlsx +0 -0
- data/test/regression/xlsx_files/object_position20.xlsx +0 -0
- data/test/regression/xlsx_files/outline01.xlsx +0 -0
- data/test/regression/xlsx_files/outline02.xlsx +0 -0
- data/test/regression/xlsx_files/outline03.xlsx +0 -0
- data/test/regression/xlsx_files/outline04.xlsx +0 -0
- data/test/regression/xlsx_files/outline05.xlsx +0 -0
- data/test/regression/xlsx_files/outline06.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks01.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks02.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks03.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks04.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks05.xlsx +0 -0
- data/test/regression/xlsx_files/page_breaks06.xlsx +0 -0
- data/test/regression/xlsx_files/page_view01.xlsx +0 -0
- data/test/regression/xlsx_files/panes01.xlsx +0 -0
- data/test/regression/xlsx_files/print_across01.xlsx +0 -0
- data/test/regression/xlsx_files/print_area01.xlsx +0 -0
- data/test/regression/xlsx_files/print_area02.xlsx +0 -0
- data/test/regression/xlsx_files/print_area03.xlsx +0 -0
- data/test/regression/xlsx_files/print_area04.xlsx +0 -0
- data/test/regression/xlsx_files/print_area05.xlsx +0 -0
- data/test/regression/xlsx_files/print_area06.xlsx +0 -0
- data/test/regression/xlsx_files/print_area07.xlsx +0 -0
- data/test/regression/xlsx_files/print_options01.xlsx +0 -0
- data/test/regression/xlsx_files/print_options02.xlsx +0 -0
- data/test/regression/xlsx_files/print_options03.xlsx +0 -0
- data/test/regression/xlsx_files/print_options04.xlsx +0 -0
- data/test/regression/xlsx_files/print_options05.xlsx +0 -0
- data/test/regression/xlsx_files/print_options06.xlsx +0 -0
- data/test/regression/xlsx_files/print_options07.xlsx +0 -0
- data/test/regression/xlsx_files/print_scale01.xlsx +0 -0
- data/test/regression/xlsx_files/print_scale02.xlsx +0 -0
- data/test/regression/xlsx_files/properties01.xlsx +0 -0
- data/test/regression/xlsx_files/properties02.xlsx +0 -0
- data/test/regression/xlsx_files/properties03.xlsx +0 -0
- data/test/regression/xlsx_files/properties04.xlsx +0 -0
- data/test/regression/xlsx_files/properties05.xlsx +0 -0
- data/test/regression/xlsx_files/protect01.xlsx +0 -0
- data/test/regression/xlsx_files/protect02.xlsx +0 -0
- data/test/regression/xlsx_files/protect03.xlsx +0 -0
- data/test/regression/xlsx_files/protect04.xlsx +0 -0
- data/test/regression/xlsx_files/protect05.xlsx +0 -0
- data/test/regression/xlsx_files/protect06.xlsx +0 -0
- data/test/regression/xlsx_files/protect07.xlsx +0 -0
- data/test/regression/xlsx_files/quote_name01.xlsx +0 -0
- data/test/regression/xlsx_files/quote_name02.xlsx +0 -0
- data/test/regression/xlsx_files/quote_name03.xlsx +0 -0
- data/test/regression/xlsx_files/quote_name04.xlsx +0 -0
- data/test/regression/xlsx_files/repeat01.xlsx +0 -0
- data/test/regression/xlsx_files/repeat02.xlsx +0 -0
- data/test/regression/xlsx_files/repeat03.xlsx +0 -0
- data/test/regression/xlsx_files/repeat04.xlsx +0 -0
- data/test/regression/xlsx_files/repeat05.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string01.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string02.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string03.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string04.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string05.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string06.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string07.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string08.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string09.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string10.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string11.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format01.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format02.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format03.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format04.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format05.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format06.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format07.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format08.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format09.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format10.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format11.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format12.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format13.xlsx +0 -0
- data/test/regression/xlsx_files/row_col_format14.xlsx +0 -0
- data/test/regression/xlsx_files/selection01.xlsx +0 -0
- data/test/regression/xlsx_files/selection02.xlsx +0 -0
- data/test/regression/xlsx_files/set_column01.xlsx +0 -0
- data/test/regression/xlsx_files/set_column03.xlsx +0 -0
- data/test/regression/xlsx_files/set_column04.xlsx +0 -0
- data/test/regression/xlsx_files/set_column05.xlsx +0 -0
- data/test/regression/xlsx_files/set_column06.xlsx +0 -0
- data/test/regression/xlsx_files/set_column07.xlsx +0 -0
- data/test/regression/xlsx_files/set_column08.xlsx +0 -0
- data/test/regression/xlsx_files/set_column09.xlsx +0 -0
- data/test/regression/xlsx_files/set_print_scale01.xlsx +0 -0
- data/test/regression/xlsx_files/set_row01.xlsx +0 -0
- data/test/regression/xlsx_files/set_row03.xlsx +0 -0
- data/test/regression/xlsx_files/set_start_page01.xlsx +0 -0
- data/test/regression/xlsx_files/set_start_page02.xlsx +0 -0
- data/test/regression/xlsx_files/set_start_page03.xlsx +0 -0
- data/test/regression/xlsx_files/shape01.xlsx +0 -0
- data/test/regression/xlsx_files/shape02.xlsx +0 -0
- data/test/regression/xlsx_files/shape03.xlsx +0 -0
- data/test/regression/xlsx_files/shape04.xlsx +0 -0
- data/test/regression/xlsx_files/shape_connect01.xlsx +0 -0
- data/test/regression/xlsx_files/shape_connect02.xlsx +0 -0
- data/test/regression/xlsx_files/shape_connect03.xlsx +0 -0
- data/test/regression/xlsx_files/shape_connect04.xlsx +0 -0
- data/test/regression/xlsx_files/shape_scale01.xlsx +0 -0
- data/test/regression/xlsx_files/shape_stencil01.xlsx +0 -0
- data/test/regression/xlsx_files/shared_strings01.xlsx +0 -0
- data/test/regression/xlsx_files/shared_strings02.xlsx +0 -0
- data/test/regression/xlsx_files/shared_strings_encoding.xlsx +0 -0
- data/test/regression/xlsx_files/simple01.xlsx +0 -0
- data/test/regression/xlsx_files/simple02.xlsx +0 -0
- data/test/regression/xlsx_files/simple03.xlsx +0 -0
- data/test/regression/xlsx_files/simple04.xlsx +0 -0
- data/test/regression/xlsx_files/simple05.xlsx +0 -0
- data/test/regression/xlsx_files/tab_color01.xlsx +0 -0
- data/test/regression/xlsx_files/table01.xlsx +0 -0
- data/test/regression/xlsx_files/table02.xlsx +0 -0
- data/test/regression/xlsx_files/table03.xlsx +0 -0
- data/test/regression/xlsx_files/table04.xlsx +0 -0
- data/test/regression/xlsx_files/table05.xlsx +0 -0
- data/test/regression/xlsx_files/table06.xlsx +0 -0
- data/test/regression/xlsx_files/table07.xlsx +0 -0
- data/test/regression/xlsx_files/table08.xlsx +0 -0
- data/test/regression/xlsx_files/table09.xlsx +0 -0
- data/test/regression/xlsx_files/table10.xlsx +0 -0
- data/test/regression/xlsx_files/table11.xlsx +0 -0
- data/test/regression/xlsx_files/table12.xlsx +0 -0
- data/test/regression/xlsx_files/table13.xlsx +0 -0
- data/test/regression/xlsx_files/table14.xlsx +0 -0
- data/test/regression/xlsx_files/table15.xlsx +0 -0
- data/test/regression/xlsx_files/table17.xlsx +0 -0
- data/test/regression/xlsx_files/table18.xlsx +0 -0
- data/test/regression/xlsx_files/table19.xlsx +0 -0
- data/test/regression/xlsx_files/table21.xlsx +0 -0
- data/test/regression/xlsx_files/table22.xlsx +0 -0
- data/test/regression/xlsx_files/table23.xlsx +0 -0
- data/test/regression/xlsx_files/table24.xlsx +0 -0
- data/test/regression/xlsx_files/table25.xlsx +0 -0
- data/test/regression/xlsx_files/table26.xlsx +0 -0
- data/test/regression/xlsx_files/tutorial01.xlsx +0 -0
- data/test/regression/xlsx_files/tutorial02.xlsx +0 -0
- data/test/regression/xlsx_files/tutorial03.xlsx +0 -0
- data/test/regression/xlsx_files/types02.xlsx +0 -0
- data/test/regression/xlsx_files/types08.xlsx +0 -0
- data/test/regression/xlsx_files/update_range_format_with_params.xlsx +0 -0
- data/test/regression/xlsx_files/urls_as_strings.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_01.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_03.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_04.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_05.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_06.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_07.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_08.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_09.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_10.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
- data/test/regression/xlsx_files/vbaProject01.bin +0 -0
- data/test/regression/xlsx_files/vbaProject02.bin +0 -0
- data/test/regression/xlsx_files/vml01.xlsx +0 -0
- data/test/regression/xlsx_files/vml02.xlsx +0 -0
- data/test/regression/xlsx_files/vml03.xlsx +0 -0
- data/test/regression/xlsx_files/vml04.xlsx +0 -0
- data/test/republic.png +0 -0
- data/test/run_test.rb +0 -9
- data/test/test_delete_files.rb +0 -37
- data/test/test_example_match.rb +0 -6348
- data/test/test_option_hash_for_workbook.rb +0 -72
- data/test/test_xml_writer_simple.rb +0 -64
- data/test/utility/test_range.rb +0 -20
- data/test/vbaProject.bin +0 -0
- data/test/workbook/test_check_sheetname.rb +0 -51
- data/test/workbook/test_define_name.rb +0 -16
- data/test/workbook/test_get_chart_range.rb +0 -57
- data/test/workbook/test_sort_defined_names.rb +0 -77
- data/test/workbook/test_workbook_01.rb +0 -29
- data/test/workbook/test_workbook_02.rb +0 -31
- data/test/workbook/test_workbook_03.rb +0 -31
- data/test/workbook/test_worksheet_by_name.rb +0 -35
- data/test/workbook/test_write_calc_pr.rb +0 -41
- data/test/workbook/test_write_defined_name.rb +0 -17
- data/test/workbook/test_write_defined_names.rb +0 -41
- data/test/workbook/test_write_workbook_view.rb +0 -117
- data/test/worksheet/test_calculate_spans.rb +0 -58
- data/test/worksheet/test_cond_format_01.rb +0 -82
- data/test/worksheet/test_cond_format_02.rb +0 -87
- data/test/worksheet/test_cond_format_03.rb +0 -97
- data/test/worksheet/test_cond_format_04.rb +0 -85
- data/test/worksheet/test_cond_format_05.rb +0 -96
- data/test/worksheet/test_cond_format_06.rb +0 -106
- data/test/worksheet/test_cond_format_07.rb +0 -116
- data/test/worksheet/test_cond_format_08.rb +0 -115
- data/test/worksheet/test_cond_format_09.rb +0 -108
- data/test/worksheet/test_cond_format_10.rb +0 -83
- data/test/worksheet/test_cond_format_11.rb +0 -85
- data/test/worksheet/test_cond_format_12.rb +0 -133
- data/test/worksheet/test_cond_format_13.rb +0 -135
- data/test/worksheet/test_cond_format_14.rb +0 -132
- data/test/worksheet/test_cond_format_15.rb +0 -93
- data/test/worksheet/test_cond_format_16.rb +0 -138
- data/test/worksheet/test_cond_format_17.rb +0 -141
- data/test/worksheet/test_cond_format_18.rb +0 -135
- data/test/worksheet/test_cond_format_19.rb +0 -139
- data/test/worksheet/test_cond_format_20.rb +0 -119
- data/test/worksheet/test_cond_format_21.rb +0 -90
- data/test/worksheet/test_cond_format_22.rb +0 -266
- data/test/worksheet/test_cond_format_23.rb +0 -242
- data/test/worksheet/test_cond_format_24.rb +0 -303
- data/test/worksheet/test_convert_date_time_01.rb +0 -439
- data/test/worksheet/test_convert_date_time_02.rb +0 -472
- data/test/worksheet/test_convert_date_time_03.rb +0 -435
- data/test/worksheet/test_convert_date_time_04.rb +0 -19
- data/test/worksheet/test_data_bar_01.rb +0 -53
- data/test/worksheet/test_data_bar_02.rb +0 -79
- data/test/worksheet/test_data_bar_03.rb +0 -147
- data/test/worksheet/test_data_bar_04.rb +0 -145
- data/test/worksheet/test_data_bar_05.rb +0 -147
- data/test/worksheet/test_data_bar_06.rb +0 -145
- data/test/worksheet/test_data_bar_07.rb +0 -146
- data/test/worksheet/test_data_bar_08.rb +0 -54
- data/test/worksheet/test_data_bar_09.rb +0 -80
- data/test/worksheet/test_data_bar_10.rb +0 -165
- data/test/worksheet/test_data_bar_11.rb +0 -167
- data/test/worksheet/test_data_bar_12.rb +0 -104
- data/test/worksheet/test_extract_filter_tokens.rb +0 -109
- data/test/worksheet/test_parse_filter_expression.rb +0 -143
- data/test/worksheet/test_pixels_to_row_col.rb +0 -46
- data/test/worksheet/test_position_object.rb +0 -50
- data/test/worksheet/test_repeat_formula.rb +0 -55
- data/test/worksheet/test_sparkline_01.rb +0 -65
- data/test/worksheet/test_sparkline_02.rb +0 -92
- data/test/worksheet/test_sparkline_03.rb +0 -133
- data/test/worksheet/test_sparkline_04.rb +0 -93
- data/test/worksheet/test_sparkline_05.rb +0 -93
- data/test/worksheet/test_sparkline_06.rb +0 -114
- data/test/worksheet/test_sparkline_07.rb +0 -357
- data/test/worksheet/test_sparkline_08.rb +0 -177
- data/test/worksheet/test_sparkline_09.rb +0 -1250
- data/test/worksheet/test_sparkline_10.rb +0 -107
- data/test/worksheet/test_sparkline_11.rb +0 -218
- data/test/worksheet/test_sparkline_12.rb +0 -94
- data/test/worksheet/test_update_format_methods.rb +0 -91
- data/test/worksheet/test_worksheet_01.rb +0 -32
- data/test/worksheet/test_worksheet_02.rb +0 -38
- data/test/worksheet/test_worksheet_03.rb +0 -44
- data/test/worksheet/test_worksheet_04.rb +0 -45
- data/test/worksheet/test_write_array_formula_01.rb +0 -98
- data/test/worksheet/test_write_autofilter.rb +0 -260
- data/test/worksheet/test_write_brk.rb +0 -18
- data/test/worksheet/test_write_cell.rb +0 -54
- data/test/worksheet/test_write_cell_value.rb +0 -33
- data/test/worksheet/test_write_col_breaks.rb +0 -27
- data/test/worksheet/test_write_col_info.rb +0 -95
- data/test/worksheet/test_write_conditional_formatting.rb +0 -72
- data/test/worksheet/test_write_custom_filter.rb +0 -18
- data/test/worksheet/test_write_custom_filters.rb +0 -25
- data/test/worksheet/test_write_data_validation_01.rb +0 -113
- data/test/worksheet/test_write_data_validation_02.rb +0 -585
- data/test/worksheet/test_write_dimension.rb +0 -94
- data/test/worksheet/test_write_filter.rb +0 -18
- data/test/worksheet/test_write_filter_column.rb +0 -18
- data/test/worksheet/test_write_filters.rb +0 -32
- data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +0 -18
- data/test/worksheet/test_write_header_footer.rb +0 -58
- data/test/worksheet/test_write_hyperlink.rb +0 -32
- data/test/worksheet/test_write_legacy_drawing.rb +0 -19
- data/test/worksheet/test_write_merge_cell.rb +0 -18
- data/test/worksheet/test_write_merge_cells.rb +0 -192
- data/test/worksheet/test_write_methods.rb +0 -248
- data/test/worksheet/test_write_page_margins.rb +0 -98
- data/test/worksheet/test_write_page_set_up_pr.rb +0 -19
- data/test/worksheet/test_write_page_setup.rb +0 -54
- data/test/worksheet/test_write_pane.rb +0 -123
- data/test/worksheet/test_write_phonetic_pr.rb +0 -19
- data/test/worksheet/test_write_print_options.rb +0 -77
- data/test/worksheet/test_write_row_breaks.rb +0 -27
- data/test/worksheet/test_write_row_element.rb +0 -69
- data/test/worksheet/test_write_selection.rb +0 -18
- data/test/worksheet/test_write_sheet_calc_pr.rb +0 -18
- data/test/worksheet/test_write_sheet_data.rb +0 -18
- data/test/worksheet/test_write_sheet_format_pr.rb +0 -18
- data/test/worksheet/test_write_sheet_pr.rb +0 -36
- data/test/worksheet/test_write_sheet_protection.rb +0 -174
- data/test/worksheet/test_write_sheet_view.rb +0 -71
- data/test/worksheet/test_write_sheet_view1.rb +0 -64
- data/test/worksheet/test_write_sheet_view2.rb +0 -56
- data/test/worksheet/test_write_sheet_view3.rb +0 -83
- data/test/worksheet/test_write_sheet_view4.rb +0 -83
- data/test/worksheet/test_write_sheet_view5.rb +0 -74
- data/test/worksheet/test_write_sheet_view6.rb +0 -51
- data/test/worksheet/test_write_sheet_view7.rb +0 -71
- data/test/worksheet/test_write_sheet_view8.rb +0 -51
- data/test/worksheet/test_write_sheet_view9.rb +0 -51
- data/test/worksheet/test_write_tab_color.rb +0 -23
- data/test/worksheet/test_write_worksheet_attributes.rb +0 -21
data/lib/write_xlsx/worksheet.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
# frozen_string_literal: true
|
|
3
|
+
|
|
3
4
|
require 'write_xlsx/package/xml_writer_simple'
|
|
4
5
|
require 'write_xlsx/package/button'
|
|
5
6
|
require 'write_xlsx/colors'
|
|
@@ -36,7 +37,7 @@ module Writexlsx
|
|
|
36
37
|
attr_reader :vba_codename # :nodoc:
|
|
37
38
|
attr_writer :excel_version
|
|
38
39
|
|
|
39
|
-
def initialize(workbook, index, name)
|
|
40
|
+
def initialize(workbook, index, name) # :nodoc:
|
|
40
41
|
@writer = Package::XMLWriterSimple.new
|
|
41
42
|
|
|
42
43
|
@workbook = workbook
|
|
@@ -138,19 +139,19 @@ module Writexlsx
|
|
|
138
139
|
@original_row_height = 12.75
|
|
139
140
|
@default_row_height = 12.75
|
|
140
141
|
@default_row_pixels = 17
|
|
141
|
-
self
|
|
142
|
-
self
|
|
142
|
+
self.margins_left_right = 0.75
|
|
143
|
+
self.margins_top_bottom = 1
|
|
143
144
|
@page_setup.margin_header = 0.5
|
|
144
145
|
@page_setup.margin_footer = 0.5
|
|
145
146
|
@page_setup.header_footer_aligns = false
|
|
146
147
|
end
|
|
147
148
|
end
|
|
148
149
|
|
|
149
|
-
def set_xml_writer(filename)
|
|
150
|
+
def set_xml_writer(filename) # :nodoc:
|
|
150
151
|
@writer.set_xml_writer(filename)
|
|
151
152
|
end
|
|
152
153
|
|
|
153
|
-
def assemble_xml_file
|
|
154
|
+
def assemble_xml_file # :nodoc:
|
|
154
155
|
write_xml_declaration do
|
|
155
156
|
@writer.tag_elements('worksheet', write_worksheet_attributes) do
|
|
156
157
|
write_sheet_pr
|
|
@@ -188,9 +189,7 @@ module Writexlsx
|
|
|
188
189
|
#
|
|
189
190
|
# The name method is used to retrieve the name of a worksheet.
|
|
190
191
|
#
|
|
191
|
-
|
|
192
|
-
@name
|
|
193
|
-
end
|
|
192
|
+
attr_reader :name
|
|
194
193
|
|
|
195
194
|
#
|
|
196
195
|
# Set this worksheet as a selected worksheet, i.e. the worksheet has its tab
|
|
@@ -244,8 +243,10 @@ module Writexlsx
|
|
|
244
243
|
@protect = protect_default_settings.merge(options)
|
|
245
244
|
|
|
246
245
|
# Set the password after the user defined values.
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
if password && password != ''
|
|
247
|
+
@protect[:password] =
|
|
248
|
+
encode_password(password)
|
|
249
|
+
end
|
|
249
250
|
end
|
|
250
251
|
|
|
251
252
|
#
|
|
@@ -300,7 +301,7 @@ module Writexlsx
|
|
|
300
301
|
def set_column(*args)
|
|
301
302
|
# Check for a cell reference in A1 notation and substitute row and column
|
|
302
303
|
if args[0].to_s =~ /^\D/
|
|
303
|
-
|
|
304
|
+
_row1, firstcol, _row2, lastcol, *data = substitute_cellref(*args)
|
|
304
305
|
else
|
|
305
306
|
firstcol, lastcol, *data = args
|
|
306
307
|
end
|
|
@@ -342,9 +343,9 @@ module Writexlsx
|
|
|
342
343
|
|
|
343
344
|
# Store the col sizes for use when calculating image vertices taking
|
|
344
345
|
# hidden columns into account. Also store the column formats.
|
|
345
|
-
width
|
|
346
|
+
width ||= @default_col_width
|
|
346
347
|
|
|
347
|
-
(firstcol
|
|
348
|
+
(firstcol..lastcol).each do |col|
|
|
348
349
|
@col_sizes[col] = [width, hidden]
|
|
349
350
|
@col_formats[col] = format if format
|
|
350
351
|
end
|
|
@@ -376,9 +377,7 @@ module Writexlsx
|
|
|
376
377
|
hidden = data[4] || 0
|
|
377
378
|
level = data[5]
|
|
378
379
|
|
|
379
|
-
if ptrue?(pixels)
|
|
380
|
-
width = pixels_to_width(pixels)
|
|
381
|
-
end
|
|
380
|
+
width = pixels_to_width(pixels) if ptrue?(pixels)
|
|
382
381
|
|
|
383
382
|
set_column(first_col, last_col, width, format, hidden, level)
|
|
384
383
|
end
|
|
@@ -408,7 +407,7 @@ module Writexlsx
|
|
|
408
407
|
# Selection isn't set for cell A1.
|
|
409
408
|
return if sqref == 'A1'
|
|
410
409
|
|
|
411
|
-
@selections = [
|
|
410
|
+
@selections = [[nil, active_cell, sqref]]
|
|
412
411
|
end
|
|
413
412
|
|
|
414
413
|
#
|
|
@@ -431,7 +430,7 @@ module Writexlsx
|
|
|
431
430
|
left_col ||= col
|
|
432
431
|
type ||= 0
|
|
433
432
|
|
|
434
|
-
@panes = [row, col, top_row, left_col, type
|
|
433
|
+
@panes = [row, col, top_row, left_col, type]
|
|
435
434
|
end
|
|
436
435
|
|
|
437
436
|
#
|
|
@@ -492,7 +491,7 @@ module Writexlsx
|
|
|
492
491
|
|
|
493
492
|
def set_paper(paper_size)
|
|
494
493
|
put_deprecate_message("#{self}.set_paper")
|
|
495
|
-
self
|
|
494
|
+
self.paper = paper_size
|
|
496
495
|
end
|
|
497
496
|
|
|
498
497
|
#
|
|
@@ -500,26 +499,21 @@ module Writexlsx
|
|
|
500
499
|
#
|
|
501
500
|
def set_header(string = '', margin = 0.3, options = {})
|
|
502
501
|
raise 'Header string must be less than 255 characters' if string.length > 255
|
|
502
|
+
|
|
503
503
|
# Replace the Excel placeholder &[Picture] with the internal &G.
|
|
504
504
|
@page_setup.header = string.gsub(/&\[Picture\]/, '&G')
|
|
505
505
|
|
|
506
|
-
if options[:align_with_margins]
|
|
507
|
-
@page_setup.header_footer_aligns = options[:align_with_margins]
|
|
508
|
-
end
|
|
506
|
+
@page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
|
|
509
507
|
|
|
510
|
-
if options[:scale_with_doc]
|
|
511
|
-
@page_setup.header_footer_scales = options[:scale_with_doc]
|
|
512
|
-
end
|
|
508
|
+
@page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
|
|
513
509
|
|
|
514
510
|
# Reset the array in case the function is called more than once.
|
|
515
511
|
@header_images = []
|
|
516
512
|
|
|
517
513
|
[
|
|
518
|
-
|
|
514
|
+
[:image_left, 'LH'], [:image_center, 'CH'], [:image_right, 'RH']
|
|
519
515
|
].each do |p|
|
|
520
|
-
if options[p.first]
|
|
521
|
-
@header_images << [options[p.first], p.last]
|
|
522
|
-
end
|
|
516
|
+
@header_images << [options[p.first], p.last] if options[p.first]
|
|
523
517
|
end
|
|
524
518
|
|
|
525
519
|
# placeholeder /&G/ の数
|
|
@@ -527,9 +521,7 @@ module Writexlsx
|
|
|
527
521
|
|
|
528
522
|
image_count = @header_images.count
|
|
529
523
|
|
|
530
|
-
if image_count != placeholder_count
|
|
531
|
-
raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}"
|
|
532
|
-
end
|
|
524
|
+
raise "Number of header image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.header}" if image_count != placeholder_count
|
|
533
525
|
|
|
534
526
|
@has_header_vml = true if image_count > 0
|
|
535
527
|
|
|
@@ -543,28 +535,22 @@ module Writexlsx
|
|
|
543
535
|
def set_footer(string = '', margin = 0.3, options = {})
|
|
544
536
|
raise 'Footer string must be less than 255 characters' if string.length > 255
|
|
545
537
|
|
|
546
|
-
@page_setup.footer
|
|
538
|
+
@page_setup.footer = string.dup
|
|
547
539
|
|
|
548
540
|
# Replace the Excel placeholder &[Picture] with the internal &G.
|
|
549
541
|
@page_setup.footer = string.gsub(/&\[Picture\]/, '&G')
|
|
550
542
|
|
|
551
|
-
if options[:align_with_margins]
|
|
552
|
-
@page_setup.header_footer_aligns = options[:align_with_margins]
|
|
553
|
-
end
|
|
543
|
+
@page_setup.header_footer_aligns = options[:align_with_margins] if options[:align_with_margins]
|
|
554
544
|
|
|
555
|
-
if options[:scale_with_doc]
|
|
556
|
-
@page_setup.header_footer_scales = options[:scale_with_doc]
|
|
557
|
-
end
|
|
545
|
+
@page_setup.header_footer_scales = options[:scale_with_doc] if options[:scale_with_doc]
|
|
558
546
|
|
|
559
547
|
# Reset the array in case the function is called more than once.
|
|
560
548
|
@footer_images = []
|
|
561
549
|
|
|
562
550
|
[
|
|
563
|
-
|
|
551
|
+
[:image_left, 'LF'], [:image_center, 'CF'], [:image_right, 'RF']
|
|
564
552
|
].each do |p|
|
|
565
|
-
if options[p.first]
|
|
566
|
-
@footer_images << [options[p.first], p.last]
|
|
567
|
-
end
|
|
553
|
+
@footer_images << [options[p.first], p.last] if options[p.first]
|
|
568
554
|
end
|
|
569
555
|
|
|
570
556
|
# placeholeder /&G/ の数
|
|
@@ -572,9 +558,7 @@ module Writexlsx
|
|
|
572
558
|
|
|
573
559
|
image_count = @footer_images.count
|
|
574
560
|
|
|
575
|
-
if image_count != placeholder_count
|
|
576
|
-
raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}"
|
|
577
|
-
end
|
|
561
|
+
raise "Number of footer image (#{image_count}) doesn't match placeholder count (#{placeholder_count}) in string: #{@page_setup.footer}" if image_count != placeholder_count
|
|
578
562
|
|
|
579
563
|
@has_header_vml = true if image_count > 0
|
|
580
564
|
|
|
@@ -600,10 +584,10 @@ module Writexlsx
|
|
|
600
584
|
# Set all the page margins to the same value in inches.
|
|
601
585
|
#
|
|
602
586
|
def margins=(margin)
|
|
603
|
-
self
|
|
604
|
-
self
|
|
605
|
-
self
|
|
606
|
-
self
|
|
587
|
+
self.margin_left = margin
|
|
588
|
+
self.margin_right = margin
|
|
589
|
+
self.margin_top = margin
|
|
590
|
+
self.margin_bottom = margin
|
|
607
591
|
end
|
|
608
592
|
|
|
609
593
|
#
|
|
@@ -611,8 +595,8 @@ module Writexlsx
|
|
|
611
595
|
# See set_margins
|
|
612
596
|
#
|
|
613
597
|
def margins_left_right=(margin)
|
|
614
|
-
self
|
|
615
|
-
self
|
|
598
|
+
self.margin_left = margin
|
|
599
|
+
self.margin_right = margin
|
|
616
600
|
end
|
|
617
601
|
|
|
618
602
|
#
|
|
@@ -620,8 +604,8 @@ module Writexlsx
|
|
|
620
604
|
# See set_margins
|
|
621
605
|
#
|
|
622
606
|
def margins_top_bottom=(margin)
|
|
623
|
-
self
|
|
624
|
-
self
|
|
607
|
+
self.margin_top = margin
|
|
608
|
+
self.margin_bottom = margin
|
|
625
609
|
end
|
|
626
610
|
|
|
627
611
|
#
|
|
@@ -661,7 +645,7 @@ module Writexlsx
|
|
|
661
645
|
#
|
|
662
646
|
def set_margins(margin)
|
|
663
647
|
put_deprecate_message("#{self}.set_margins")
|
|
664
|
-
self
|
|
648
|
+
self.margins = margin
|
|
665
649
|
end
|
|
666
650
|
|
|
667
651
|
#
|
|
@@ -670,7 +654,7 @@ module Writexlsx
|
|
|
670
654
|
#
|
|
671
655
|
def set_margins_LR(margin)
|
|
672
656
|
put_deprecate_message("#{self}.set_margins_LR")
|
|
673
|
-
self
|
|
657
|
+
self.margins_left_right = margin
|
|
674
658
|
end
|
|
675
659
|
|
|
676
660
|
#
|
|
@@ -679,7 +663,7 @@ module Writexlsx
|
|
|
679
663
|
#
|
|
680
664
|
def set_margins_TB(margin)
|
|
681
665
|
put_deprecate_message("#{self}.set_margins_TB")
|
|
682
|
-
self
|
|
666
|
+
self.margins_top_bottom = margin
|
|
683
667
|
end
|
|
684
668
|
|
|
685
669
|
#
|
|
@@ -688,7 +672,7 @@ module Writexlsx
|
|
|
688
672
|
#
|
|
689
673
|
def set_margin_left(margin = 0.7)
|
|
690
674
|
put_deprecate_message("#{self}.set_margin_left")
|
|
691
|
-
self
|
|
675
|
+
self.margin_left = margin
|
|
692
676
|
end
|
|
693
677
|
|
|
694
678
|
#
|
|
@@ -697,7 +681,7 @@ module Writexlsx
|
|
|
697
681
|
#
|
|
698
682
|
def set_margin_right(margin = 0.7)
|
|
699
683
|
put_deprecate_message("#{self}.set_margin_right")
|
|
700
|
-
self
|
|
684
|
+
self.margin_right = margin
|
|
701
685
|
end
|
|
702
686
|
|
|
703
687
|
#
|
|
@@ -706,7 +690,7 @@ module Writexlsx
|
|
|
706
690
|
#
|
|
707
691
|
def set_margin_top(margin = 0.75)
|
|
708
692
|
put_deprecate_message("#{self}.set_margin_top")
|
|
709
|
-
self
|
|
693
|
+
self.margin_top = margin
|
|
710
694
|
end
|
|
711
695
|
|
|
712
696
|
#
|
|
@@ -715,7 +699,7 @@ module Writexlsx
|
|
|
715
699
|
#
|
|
716
700
|
def set_margin_bottom(margin = 0.75)
|
|
717
701
|
put_deprecate_message("#{self}.set_margin_bottom")
|
|
718
|
-
self
|
|
702
|
+
self.margin_bottom = margin
|
|
719
703
|
end
|
|
720
704
|
|
|
721
705
|
#
|
|
@@ -747,7 +731,7 @@ module Writexlsx
|
|
|
747
731
|
#
|
|
748
732
|
def repeat_columns(*args)
|
|
749
733
|
if args[0] =~ /^\D/
|
|
750
|
-
|
|
734
|
+
_dummy, first_col, _dummy, last_col = substitute_cellref(*args)
|
|
751
735
|
else
|
|
752
736
|
first_col, last_col = args
|
|
753
737
|
end
|
|
@@ -771,13 +755,12 @@ module Writexlsx
|
|
|
771
755
|
#
|
|
772
756
|
def print_area(*args)
|
|
773
757
|
return @page_setup.print_area.dup if args.empty?
|
|
758
|
+
|
|
774
759
|
row1, col1, row2, col2 = row_col_notation(args)
|
|
775
760
|
return if [row1, col1, row2, col2].include?(nil)
|
|
776
761
|
|
|
777
762
|
# Ignore max print area since this is the same as no print area for Excel.
|
|
778
|
-
if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
|
|
779
|
-
return
|
|
780
|
-
end
|
|
763
|
+
return if row1 == 0 && col1 == 0 && row2 == ROW_MAX - 1 && col2 == COL_MAX - 1
|
|
781
764
|
|
|
782
765
|
# Build up the print area range "=Sheet2!R1C1:R2C1"
|
|
783
766
|
@page_setup.print_area = convert_name_area(row1, col1, row2, col2)
|
|
@@ -788,12 +771,12 @@ module Writexlsx
|
|
|
788
771
|
#
|
|
789
772
|
def zoom=(scale)
|
|
790
773
|
# Confine the scale to Excel's range
|
|
791
|
-
if scale < 10 or scale > 400
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
774
|
+
@zoom = if scale < 10 or scale > 400
|
|
775
|
+
# carp "Zoom factor scale outside range: 10 <= zoom <= 400"
|
|
776
|
+
100
|
|
777
|
+
else
|
|
778
|
+
scale.to_i
|
|
779
|
+
end
|
|
797
780
|
end
|
|
798
781
|
|
|
799
782
|
# This method is deprecated. use zoom=().
|
|
@@ -823,23 +806,23 @@ module Writexlsx
|
|
|
823
806
|
#
|
|
824
807
|
def set_print_scale(scale = 100)
|
|
825
808
|
put_deprecate_message("#{self}.set_print_scale")
|
|
826
|
-
self
|
|
809
|
+
self.print_scale = (scale)
|
|
827
810
|
end
|
|
828
811
|
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
812
|
+
#
|
|
813
|
+
# Set the option to print the worksheet in black and white.
|
|
814
|
+
#
|
|
815
|
+
def print_black_and_white
|
|
816
|
+
@page_setup.black_white = true
|
|
834
817
|
end
|
|
835
818
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
819
|
+
#
|
|
820
|
+
# Causes the write() method to treat integers with a leading zero as a string.
|
|
821
|
+
# This ensures that any leading zeros such, as in zip codes, are maintained.
|
|
822
|
+
#
|
|
823
|
+
def keep_leading_zeros(flag = true)
|
|
824
|
+
@leading_zeros = !!flag
|
|
825
|
+
end
|
|
843
826
|
|
|
844
827
|
#
|
|
845
828
|
# Display the worksheet right to left for some eastern versions of Excel.
|
|
@@ -852,7 +835,7 @@ module Writexlsx
|
|
|
852
835
|
# Hide cell zero values.
|
|
853
836
|
#
|
|
854
837
|
def hide_zero(flag = true)
|
|
855
|
-
|
|
838
|
+
@show_zeros = !flag
|
|
856
839
|
end
|
|
857
840
|
|
|
858
841
|
#
|
|
@@ -877,7 +860,7 @@ module Writexlsx
|
|
|
877
860
|
|
|
878
861
|
def set_start_page(page_start)
|
|
879
862
|
put_deprecate_message("#{self}.set_start_page")
|
|
880
|
-
self
|
|
863
|
+
self.start_page = page_start
|
|
881
864
|
end
|
|
882
865
|
|
|
883
866
|
#
|
|
@@ -893,6 +876,7 @@ module Writexlsx
|
|
|
893
876
|
# Check for a cell reference in A1 notation and substitute row and column
|
|
894
877
|
row_col_args = row_col_notation(args)
|
|
895
878
|
token = row_col_args[2] || ''
|
|
879
|
+
token = token.to_s if token.instance_of?(Time)
|
|
896
880
|
|
|
897
881
|
# Match an array ref.
|
|
898
882
|
if token.respond_to?(:to_ary)
|
|
@@ -916,13 +900,13 @@ module Writexlsx
|
|
|
916
900
|
write_blank(*row_col_args)
|
|
917
901
|
elsif @workbook.strings_to_urls
|
|
918
902
|
# Match http, https or ftp URL
|
|
919
|
-
if token =~ %r
|
|
903
|
+
if token =~ %r{\A[fh]tt?ps?://}
|
|
920
904
|
write_url(*args)
|
|
921
905
|
# Match mailto:
|
|
922
|
-
elsif token =~
|
|
906
|
+
elsif token =~ /\Amailto:/
|
|
923
907
|
write_url(*args)
|
|
924
908
|
# Match internal or external sheet link
|
|
925
|
-
elsif token =~
|
|
909
|
+
elsif token =~ /\A(?:in|ex)ternal:/
|
|
926
910
|
write_url(*args)
|
|
927
911
|
else
|
|
928
912
|
write_string(*args)
|
|
@@ -1054,7 +1038,7 @@ module Writexlsx
|
|
|
1054
1038
|
check_dimensions(row, col)
|
|
1055
1039
|
store_row_col_max_min_values(row, col)
|
|
1056
1040
|
|
|
1057
|
-
fragments,
|
|
1041
|
+
fragments, _length = rich_strings_fragments(rich_strings)
|
|
1058
1042
|
# can't allow 2 formats in a row
|
|
1059
1043
|
return -4 unless fragments
|
|
1060
1044
|
|
|
@@ -1128,11 +1112,11 @@ module Writexlsx
|
|
|
1128
1112
|
store_row_col_max_min_values(row2, col2)
|
|
1129
1113
|
|
|
1130
1114
|
# Define array range
|
|
1131
|
-
if row1 == row2 && col1 == col2
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1115
|
+
range = if row1 == row2 && col1 == col2
|
|
1116
|
+
xl_rowcol_to_cell(row1, col1)
|
|
1117
|
+
else
|
|
1118
|
+
"#{xl_rowcol_to_cell(row1, col1)}:#{xl_rowcol_to_cell(row2, col2)}"
|
|
1119
|
+
end
|
|
1136
1120
|
|
|
1137
1121
|
# Remove array formula braces and the leading =.
|
|
1138
1122
|
formula = formula.sub(/^\{(.*)\}$/, '\1').sub(/^=/, '')
|
|
@@ -1151,6 +1135,7 @@ module Writexlsx
|
|
|
1151
1135
|
(row1..row2).each do |row|
|
|
1152
1136
|
(col1..col2).each do |col|
|
|
1153
1137
|
next if row == row1 && col == col1
|
|
1138
|
+
|
|
1154
1139
|
write_number(row, col, 0, xf)
|
|
1155
1140
|
end
|
|
1156
1141
|
end
|
|
@@ -1186,7 +1171,6 @@ module Writexlsx
|
|
|
1186
1171
|
|
|
1187
1172
|
val = val ? 1 : 0 # Boolean value.
|
|
1188
1173
|
# xf : cell format.
|
|
1189
|
-
type = 'l' # The data type
|
|
1190
1174
|
|
|
1191
1175
|
# Check that row and col are valid and store max and min values
|
|
1192
1176
|
check_dimensions(row, col)
|
|
@@ -1225,15 +1209,15 @@ module Writexlsx
|
|
|
1225
1209
|
format.set_format_properties(params)
|
|
1226
1210
|
end
|
|
1227
1211
|
# keep original value of cell
|
|
1228
|
-
if cell_data.is_a? FormulaCellData
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1212
|
+
value = if cell_data.is_a? FormulaCellData
|
|
1213
|
+
"=#{cell_data.token}"
|
|
1214
|
+
elsif cell_data.is_a? FormulaArrayCellData
|
|
1215
|
+
"{=#{cell_data.token}}"
|
|
1216
|
+
elsif cell_data.is_a? StringCellData
|
|
1217
|
+
@workbook.shared_strings.string(cell_data.data[:sst_id])
|
|
1218
|
+
else
|
|
1219
|
+
cell_data.data
|
|
1220
|
+
end
|
|
1237
1221
|
write(row, col, value, format)
|
|
1238
1222
|
end
|
|
1239
1223
|
end
|
|
@@ -1250,7 +1234,7 @@ module Writexlsx
|
|
|
1250
1234
|
raise WriteXLSXInsufficientArgumentError if [row_first, col_first, row_last, col_last, params].include?(nil)
|
|
1251
1235
|
|
|
1252
1236
|
# Swap last row/col with first row/col as necessary
|
|
1253
|
-
row_first, row_last
|
|
1237
|
+
row_first, row_last = row_last, row_first if row_first > row_last
|
|
1254
1238
|
col_first, col_last = col_last, col_first if col_first > col_last
|
|
1255
1239
|
|
|
1256
1240
|
# Check that column number is valid and store the max value
|
|
@@ -1309,12 +1293,10 @@ module Writexlsx
|
|
|
1309
1293
|
hyperlink = Hyperlink.factory(url, str, tip)
|
|
1310
1294
|
store_hyperlink(row, col, hyperlink)
|
|
1311
1295
|
|
|
1312
|
-
if hyperlinks_count > 65_530
|
|
1313
|
-
raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet."
|
|
1314
|
-
end
|
|
1296
|
+
raise "URL '#{url}' added but URL exceeds Excel's limit of 65,530 URLs per worksheet." if hyperlinks_count > 65_530
|
|
1315
1297
|
|
|
1316
1298
|
# Add the default URL format.
|
|
1317
|
-
xf
|
|
1299
|
+
xf ||= @default_url_format
|
|
1318
1300
|
|
|
1319
1301
|
# Write the hyperlink string.
|
|
1320
1302
|
write_string(row, col, hyperlink.str, xf)
|
|
@@ -1359,7 +1341,7 @@ module Writexlsx
|
|
|
1359
1341
|
row, col, chart, *options = row_col_notation(args)
|
|
1360
1342
|
raise WriteXLSXInsufficientArgumentError if [row, col, chart].include?(nil)
|
|
1361
1343
|
|
|
1362
|
-
if options.first.
|
|
1344
|
+
if options.first.instance_of?(Hash)
|
|
1363
1345
|
params = options.first
|
|
1364
1346
|
x_offset = params[:x_offset]
|
|
1365
1347
|
y_offset = params[:y_offset]
|
|
@@ -1404,7 +1386,7 @@ module Writexlsx
|
|
|
1404
1386
|
row, col, image, *options = row_col_notation(args)
|
|
1405
1387
|
raise WriteXLSXInsufficientArgumentError if [row, col, image].include?(nil)
|
|
1406
1388
|
|
|
1407
|
-
if options.first.
|
|
1389
|
+
if options.first.instance_of?(Hash)
|
|
1408
1390
|
# Newer hash bashed options
|
|
1409
1391
|
params = options.first
|
|
1410
1392
|
x_offset = params[:x_offset]
|
|
@@ -1443,7 +1425,7 @@ module Writexlsx
|
|
|
1443
1425
|
row, col, formula, format, *pairs = row_col_notation(args)
|
|
1444
1426
|
raise WriteXLSXInsufficientArgumentError if [row, col].include?(nil)
|
|
1445
1427
|
|
|
1446
|
-
raise "Odd number of elements in pattern/replacement list" unless pairs.size
|
|
1428
|
+
raise "Odd number of elements in pattern/replacement list" unless pairs.size.even?
|
|
1447
1429
|
raise "Not a valid formula" unless formula.respond_to?(:to_ary)
|
|
1448
1430
|
|
|
1449
1431
|
tokens = formula.join("\t").split("\t")
|
|
@@ -1454,7 +1436,7 @@ module Writexlsx
|
|
|
1454
1436
|
value = pairs.pop
|
|
1455
1437
|
pairs.pop
|
|
1456
1438
|
end
|
|
1457
|
-
|
|
1439
|
+
until pairs.empty?
|
|
1458
1440
|
pattern = pairs.shift
|
|
1459
1441
|
replace = pairs.shift
|
|
1460
1442
|
|
|
@@ -1475,6 +1457,7 @@ module Writexlsx
|
|
|
1475
1457
|
#
|
|
1476
1458
|
def set_row(*args)
|
|
1477
1459
|
return unless args[0]
|
|
1460
|
+
|
|
1478
1461
|
row = args[0]
|
|
1479
1462
|
height = args[1] || @default_height
|
|
1480
1463
|
xf = args[2]
|
|
@@ -1541,9 +1524,7 @@ module Writexlsx
|
|
|
1541
1524
|
@row_size_changed = 1
|
|
1542
1525
|
end
|
|
1543
1526
|
|
|
1544
|
-
if ptrue?(zero_height)
|
|
1545
|
-
@default_row_zeroed = 1
|
|
1546
|
-
end
|
|
1527
|
+
@default_row_zeroed = 1 if ptrue?(zero_height)
|
|
1547
1528
|
end
|
|
1548
1529
|
|
|
1549
1530
|
#
|
|
@@ -1560,7 +1541,7 @@ module Writexlsx
|
|
|
1560
1541
|
raise "Can't merge single cell" if row_first == row_last && col_first == col_last
|
|
1561
1542
|
|
|
1562
1543
|
# Swap last row/col with first row/col as necessary
|
|
1563
|
-
row_first, row_last
|
|
1544
|
+
row_first, row_last = row_last, row_first if row_first > row_last
|
|
1564
1545
|
col_first, col_last = col_last, col_first if col_first > col_last
|
|
1565
1546
|
|
|
1566
1547
|
# Check that the data range is valid and store the max and min values.
|
|
@@ -1683,7 +1664,7 @@ module Writexlsx
|
|
|
1683
1664
|
# into a worksheet.
|
|
1684
1665
|
#
|
|
1685
1666
|
def insert_button(*args)
|
|
1686
|
-
@buttons_array << button_params(*
|
|
1667
|
+
@buttons_array << button_params(*row_col_notation(args))
|
|
1687
1668
|
@has_vml = 1
|
|
1688
1669
|
end
|
|
1689
1670
|
|
|
@@ -1705,11 +1686,7 @@ module Writexlsx
|
|
|
1705
1686
|
# Set the option to hide gridlines on the screen and the printed page.
|
|
1706
1687
|
#
|
|
1707
1688
|
def hide_gridlines(option = 1)
|
|
1708
|
-
|
|
1709
|
-
@screen_gridlines = false
|
|
1710
|
-
else
|
|
1711
|
-
@screen_gridlines = true
|
|
1712
|
-
end
|
|
1689
|
+
@screen_gridlines = (option != 2)
|
|
1713
1690
|
|
|
1714
1691
|
@page_setup.hide_gridlines(option)
|
|
1715
1692
|
end
|
|
@@ -1743,7 +1720,7 @@ module Writexlsx
|
|
|
1743
1720
|
def fit_to_pages(width = 1, height = 1)
|
|
1744
1721
|
@page_setup.fit_page = true
|
|
1745
1722
|
@page_setup.fit_width = width
|
|
1746
|
-
@page_setup.fit_height
|
|
1723
|
+
@page_setup.fit_height = height
|
|
1747
1724
|
@page_setup.page_setup_changed = true
|
|
1748
1725
|
end
|
|
1749
1726
|
|
|
@@ -1779,9 +1756,7 @@ module Writexlsx
|
|
|
1779
1756
|
|
|
1780
1757
|
tokens = extract_filter_tokens(expression)
|
|
1781
1758
|
|
|
1782
|
-
unless tokens.size == 3 || tokens.size == 7
|
|
1783
|
-
raise "Incorrect number of tokens in expression '#{expression}'"
|
|
1784
|
-
end
|
|
1759
|
+
raise "Incorrect number of tokens in expression '#{expression}'" unless tokens.size == 3 || tokens.size == 7
|
|
1785
1760
|
|
|
1786
1761
|
tokens = parse_filter_expression(expression, tokens)
|
|
1787
1762
|
|
|
@@ -1891,7 +1866,7 @@ module Writexlsx
|
|
|
1891
1866
|
def prepare_chart(index, chart_id, drawing_id) # :nodoc:
|
|
1892
1867
|
drawing_type = 1
|
|
1893
1868
|
|
|
1894
|
-
row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor
|
|
1869
|
+
row, col, chart, x_offset, y_offset, x_scale, y_scale, anchor = @charts[index]
|
|
1895
1870
|
chart.id = chart_id - 1
|
|
1896
1871
|
x_scale ||= 0
|
|
1897
1872
|
y_scale ||= 0
|
|
@@ -1910,14 +1885,14 @@ module Writexlsx
|
|
|
1910
1885
|
|
|
1911
1886
|
# Create a Drawing object to use with worksheet unless one already exists.
|
|
1912
1887
|
drawing = Drawing.new(drawing_type, dimensions, 0, 0, name, nil, anchor, drawing_rel_index, 0, nil, 0)
|
|
1913
|
-
if
|
|
1888
|
+
if drawings?
|
|
1889
|
+
@drawings.add_drawing_object(drawing)
|
|
1890
|
+
else
|
|
1914
1891
|
@drawings = Drawings.new
|
|
1915
1892
|
@drawings.add_drawing_object(drawing)
|
|
1916
1893
|
@drawings.embedded = 1
|
|
1917
1894
|
|
|
1918
|
-
@external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"
|
|
1919
|
-
else
|
|
1920
|
-
@drawings.add_drawing_object(drawing)
|
|
1895
|
+
@external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
|
|
1921
1896
|
end
|
|
1922
1897
|
@drawing_links << ['/chart', "../charts/chart#{chart_id}.xml"]
|
|
1923
1898
|
end
|
|
@@ -1933,31 +1908,31 @@ module Writexlsx
|
|
|
1933
1908
|
|
|
1934
1909
|
# Iterate through the table data.
|
|
1935
1910
|
data = []
|
|
1936
|
-
(row_start
|
|
1911
|
+
(row_start..row_end).each do |row_num|
|
|
1937
1912
|
# Store nil if row doesn't exist.
|
|
1938
|
-
|
|
1913
|
+
unless @cell_data_table[row_num]
|
|
1939
1914
|
data << nil
|
|
1940
1915
|
next
|
|
1941
1916
|
end
|
|
1942
1917
|
|
|
1943
|
-
(col_start
|
|
1944
|
-
|
|
1918
|
+
(col_start..col_end).each do |col_num|
|
|
1919
|
+
cell = @cell_data_table[row_num][col_num]
|
|
1920
|
+
if cell
|
|
1945
1921
|
data << cell.data
|
|
1946
1922
|
else
|
|
1947
|
-
# Store nil if col doesn't exist.
|
|
1948
1923
|
data << nil
|
|
1949
1924
|
end
|
|
1950
1925
|
end
|
|
1951
1926
|
end
|
|
1952
1927
|
|
|
1953
|
-
|
|
1928
|
+
data
|
|
1954
1929
|
end
|
|
1955
1930
|
|
|
1956
1931
|
#
|
|
1957
1932
|
# Calculate the vertices that define the position of a graphical object within
|
|
1958
1933
|
# the worksheet in pixels.
|
|
1959
1934
|
#
|
|
1960
|
-
def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil)
|
|
1935
|
+
def position_object_pixels(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
|
|
1961
1936
|
# Adjust start column for negative offsets.
|
|
1962
1937
|
while x1 < 0 && col_start > 0
|
|
1963
1938
|
x1 += size_col(col_start - 1)
|
|
@@ -1975,22 +1950,22 @@ module Writexlsx
|
|
|
1975
1950
|
y1 = 0 if y1 < 0
|
|
1976
1951
|
|
|
1977
1952
|
# Calculate the absolute x offset of the top-left vertex.
|
|
1978
|
-
if @col_size_changed
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1953
|
+
x_abs = if @col_size_changed
|
|
1954
|
+
(0..col_start - 1).inject(0) { |sum, col| sum += size_col(col, anchor) }
|
|
1955
|
+
else
|
|
1956
|
+
# Optimisation for when the column widths haven't changed.
|
|
1957
|
+
@default_col_pixels * col_start
|
|
1958
|
+
end
|
|
1984
1959
|
x_abs += x1
|
|
1985
1960
|
|
|
1986
1961
|
# Calculate the absolute y offset of the top-left vertex.
|
|
1987
1962
|
# Store the column change to allow optimisations.
|
|
1988
|
-
if @row_size_changed
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
|
|
1963
|
+
y_abs = if @row_size_changed
|
|
1964
|
+
(0..row_start - 1).inject(0) { |sum, row| sum += size_row(row, anchor) }
|
|
1965
|
+
else
|
|
1966
|
+
# Optimisation for when the row heights haven't changed.
|
|
1967
|
+
@default_row_pixels * row_start
|
|
1968
|
+
end
|
|
1994
1969
|
y_abs += y1
|
|
1995
1970
|
|
|
1996
1971
|
# Adjust start column for offsets that are greater than the col width.
|
|
@@ -2043,7 +2018,7 @@ module Writexlsx
|
|
|
2043
2018
|
#
|
|
2044
2019
|
# Write the cell value <v> element.
|
|
2045
2020
|
#
|
|
2046
|
-
def write_cell_value(value = '')
|
|
2021
|
+
def write_cell_value(value = '') # :nodoc:
|
|
2047
2022
|
return write_cell_formula('=NA()') if !value.nil? && value.is_a?(Float) && value.nan?
|
|
2048
2023
|
|
|
2049
2024
|
value ||= ''
|
|
@@ -2054,24 +2029,24 @@ module Writexlsx
|
|
|
2054
2029
|
#
|
|
2055
2030
|
# Write the cell formula <f> element.
|
|
2056
2031
|
#
|
|
2057
|
-
def write_cell_formula(formula = '')
|
|
2032
|
+
def write_cell_formula(formula = '') # :nodoc:
|
|
2058
2033
|
@writer.data_element('f', formula)
|
|
2059
2034
|
end
|
|
2060
2035
|
|
|
2061
2036
|
#
|
|
2062
2037
|
# Write the cell array formula <f> element.
|
|
2063
2038
|
#
|
|
2064
|
-
def write_cell_array_formula(formula, range)
|
|
2039
|
+
def write_cell_array_formula(formula, range) # :nodoc:
|
|
2065
2040
|
@writer.data_element(
|
|
2066
2041
|
'f', formula,
|
|
2067
2042
|
[
|
|
2068
|
-
[
|
|
2043
|
+
%w[t array],
|
|
2069
2044
|
['ref', range]
|
|
2070
2045
|
]
|
|
2071
2046
|
)
|
|
2072
2047
|
end
|
|
2073
2048
|
|
|
2074
|
-
def date_1904?
|
|
2049
|
+
def date_1904? # :nodoc:
|
|
2075
2050
|
@workbook.date_1904?
|
|
2076
2051
|
end
|
|
2077
2052
|
|
|
@@ -2083,9 +2058,9 @@ module Writexlsx
|
|
|
2083
2058
|
# Convert from an Excel internal colour index to a XML style #RRGGBB index
|
|
2084
2059
|
# based on the default or user defined values in the Workbook palette.
|
|
2085
2060
|
#
|
|
2086
|
-
def palette_color(index)
|
|
2061
|
+
def palette_color(index) # :nodoc:
|
|
2087
2062
|
if index.to_s =~ /^#([0-9A-F]{6})$/i
|
|
2088
|
-
"FF#{
|
|
2063
|
+
"FF#{::Regexp.last_match(1).upcase}"
|
|
2089
2064
|
else
|
|
2090
2065
|
"FF#{super(index)}"
|
|
2091
2066
|
end
|
|
@@ -2125,7 +2100,7 @@ module Writexlsx
|
|
|
2125
2100
|
# The VML o:idmap data id contains a comma separated range when there is
|
|
2126
2101
|
# more than one 1024 block of comments, like this: data="1,2".
|
|
2127
2102
|
data = "#{vml_data_id}"
|
|
2128
|
-
(1
|
|
2103
|
+
(1..num_comments_block).each do |i|
|
|
2129
2104
|
data += ",#{vml_data_id + i}"
|
|
2130
2105
|
end
|
|
2131
2106
|
@vml_data_id = data
|
|
@@ -2183,11 +2158,7 @@ module Writexlsx
|
|
|
2183
2158
|
# set the vba name for the worksheet
|
|
2184
2159
|
#
|
|
2185
2160
|
def set_vba_name(vba_codename = nil)
|
|
2186
|
-
|
|
2187
|
-
@vba_codename = vba_codename
|
|
2188
|
-
else
|
|
2189
|
-
@vba_codename = @name
|
|
2190
|
-
end
|
|
2161
|
+
@vba_codename = vba_codename || @name
|
|
2191
2162
|
end
|
|
2192
2163
|
|
|
2193
2164
|
#
|
|
@@ -2195,33 +2166,29 @@ module Writexlsx
|
|
|
2195
2166
|
#
|
|
2196
2167
|
def ignore_errors(ignores)
|
|
2197
2168
|
# List of valid input parameters.
|
|
2198
|
-
valid_parameter_keys = [
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2169
|
+
valid_parameter_keys = %i[
|
|
2170
|
+
number_stored_as_text
|
|
2171
|
+
eval_error
|
|
2172
|
+
formula_differs
|
|
2173
|
+
formula_range
|
|
2174
|
+
formula_unlocked
|
|
2175
|
+
empty_cell_reference
|
|
2176
|
+
list_data_validation
|
|
2177
|
+
calculated_column
|
|
2178
|
+
two_digit_text_year
|
|
2208
2179
|
]
|
|
2209
2180
|
|
|
2210
|
-
unless (ignores.keys - valid_parameter_keys).empty?
|
|
2211
|
-
raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()."
|
|
2212
|
-
end
|
|
2181
|
+
raise "Unknown parameter '#{ignores.key - valid_parameter_keys}' in ignore_errors()." unless (ignores.keys - valid_parameter_keys).empty?
|
|
2213
2182
|
|
|
2214
2183
|
@ignore_errors = ignores
|
|
2215
2184
|
end
|
|
2216
2185
|
|
|
2217
|
-
def write_ext(url)
|
|
2186
|
+
def write_ext(url, &block)
|
|
2218
2187
|
attributes = [
|
|
2219
2188
|
['xmlns:x14', "#{OFFICE_URL}spreadsheetml/2009/9/main"],
|
|
2220
2189
|
['uri', url]
|
|
2221
2190
|
]
|
|
2222
|
-
@writer.tag_elements('ext', attributes)
|
|
2223
|
-
yield
|
|
2224
|
-
end
|
|
2191
|
+
@writer.tag_elements('ext', attributes, &block)
|
|
2225
2192
|
end
|
|
2226
2193
|
|
|
2227
2194
|
def write_sparkline_groups
|
|
@@ -2279,11 +2246,7 @@ module Writexlsx
|
|
|
2279
2246
|
|
|
2280
2247
|
def cell_format_of_rich_string(rich_strings)
|
|
2281
2248
|
# If the last arg is a format we use it as the cell format.
|
|
2282
|
-
if rich_strings[-1].respond_to?(:xf_index)
|
|
2283
|
-
rich_strings.pop
|
|
2284
|
-
else
|
|
2285
|
-
nil
|
|
2286
|
-
end
|
|
2249
|
+
rich_strings.pop if rich_strings[-1].respond_to?(:xf_index)
|
|
2287
2250
|
end
|
|
2288
2251
|
|
|
2289
2252
|
#
|
|
@@ -2310,12 +2273,12 @@ module Writexlsx
|
|
|
2310
2273
|
last = 'format'
|
|
2311
2274
|
else
|
|
2312
2275
|
# Token is a string.
|
|
2313
|
-
if last
|
|
2314
|
-
# If previous token wasn't a format add one before the string.
|
|
2315
|
-
fragments << default << token
|
|
2316
|
-
else
|
|
2276
|
+
if last == 'format'
|
|
2317
2277
|
# If previous token was a format just add the string.
|
|
2318
2278
|
fragments << token
|
|
2279
|
+
else
|
|
2280
|
+
# If previous token wasn't a format add one before the string.
|
|
2281
|
+
fragments << default << token
|
|
2319
2282
|
end
|
|
2320
2283
|
|
|
2321
2284
|
length += token.size # Keep track of actual string length.
|
|
@@ -2332,7 +2295,7 @@ module Writexlsx
|
|
|
2332
2295
|
writer = Package::XMLWriterSimple.new
|
|
2333
2296
|
|
|
2334
2297
|
# If the first token is a string start the <r> element.
|
|
2335
|
-
writer.start_tag('r')
|
|
2298
|
+
writer.start_tag('r') unless fragments[0].respond_to?(:xf_index)
|
|
2336
2299
|
|
|
2337
2300
|
# Write the XML elements for the format string fragments.
|
|
2338
2301
|
fragments.each do |token|
|
|
@@ -2354,9 +2317,10 @@ module Writexlsx
|
|
|
2354
2317
|
|
|
2355
2318
|
# Pad out the rest of the area with formatted blank cells.
|
|
2356
2319
|
def write_formatted_blank_to_area(row_first, row_last, col_first, col_last, format)
|
|
2357
|
-
(row_first
|
|
2358
|
-
(col_first
|
|
2320
|
+
(row_first..row_last).each do |row|
|
|
2321
|
+
(col_first..col_last).each do |col|
|
|
2359
2322
|
next if row == row_first && col == col_first
|
|
2323
|
+
|
|
2360
2324
|
write_blank(row, col, format)
|
|
2361
2325
|
end
|
|
2362
2326
|
end
|
|
@@ -2367,13 +2331,13 @@ module Writexlsx
|
|
|
2367
2331
|
# whitespace groups. The only tricky part is to extract string tokens that
|
|
2368
2332
|
# contain whitespace and/or quoted double quotes (Excel's escaped quotes).
|
|
2369
2333
|
#
|
|
2370
|
-
def extract_filter_tokens(expression = nil)
|
|
2334
|
+
def extract_filter_tokens(expression = nil) # :nodoc:
|
|
2371
2335
|
return [] unless expression
|
|
2372
2336
|
|
|
2373
2337
|
tokens = []
|
|
2374
2338
|
str = expression
|
|
2375
2339
|
while str =~ /"(?:[^"]|"")*"|\S+/
|
|
2376
|
-
tokens <<
|
|
2340
|
+
tokens << ::Regexp.last_match(0)
|
|
2377
2341
|
str = $~.post_match
|
|
2378
2342
|
end
|
|
2379
2343
|
|
|
@@ -2398,11 +2362,11 @@ module Writexlsx
|
|
|
2398
2362
|
# Converts the tokens of a possibly conditional expression into 1 or 2
|
|
2399
2363
|
# sub expressions for further parsing.
|
|
2400
2364
|
#
|
|
2401
|
-
def parse_filter_expression(expression, tokens)
|
|
2365
|
+
def parse_filter_expression(expression, tokens) # :nodoc:
|
|
2402
2366
|
# The number of tokens will be either 3 (for 1 expression)
|
|
2403
2367
|
# or 7 (for 2 expressions).
|
|
2404
2368
|
#
|
|
2405
|
-
if
|
|
2369
|
+
if tokens.size == 7
|
|
2406
2370
|
conditional = tokens[3]
|
|
2407
2371
|
if conditional =~ /^(and|&&)$/
|
|
2408
2372
|
conditional = 0
|
|
@@ -2410,7 +2374,7 @@ module Writexlsx
|
|
|
2410
2374
|
conditional = 1
|
|
2411
2375
|
else
|
|
2412
2376
|
raise "Token '#{conditional}' is not a valid conditional " +
|
|
2413
|
-
|
|
2377
|
+
"in filter expression '#{expression}'"
|
|
2414
2378
|
end
|
|
2415
2379
|
expression_1 = parse_filter_tokens(expression, tokens[0..2])
|
|
2416
2380
|
expression_2 = parse_filter_tokens(expression, tokens[4..6])
|
|
@@ -2423,7 +2387,7 @@ module Writexlsx
|
|
|
2423
2387
|
#
|
|
2424
2388
|
# Parse the 3 tokens of a filter expression and return the operator and token.
|
|
2425
2389
|
#
|
|
2426
|
-
def parse_filter_tokens(expression, tokens)
|
|
2390
|
+
def parse_filter_tokens(expression, tokens) # :nodoc:
|
|
2427
2391
|
operators = {
|
|
2428
2392
|
'==' => 2,
|
|
2429
2393
|
'=' => 2,
|
|
@@ -2438,7 +2402,7 @@ module Writexlsx
|
|
|
2438
2402
|
'<' => 1,
|
|
2439
2403
|
'<=' => 3,
|
|
2440
2404
|
'>' => 4,
|
|
2441
|
-
'>=' => 6
|
|
2405
|
+
'>=' => 6
|
|
2442
2406
|
}
|
|
2443
2407
|
|
|
2444
2408
|
operator = operators[tokens[1]]
|
|
@@ -2447,40 +2411,38 @@ module Writexlsx
|
|
|
2447
2411
|
# Special handling of "Top" filter expressions.
|
|
2448
2412
|
if tokens[0] =~ /^top|bottom$/i
|
|
2449
2413
|
value = tokens[1]
|
|
2450
|
-
if
|
|
2414
|
+
if value.to_s =~ /\D/ or value.to_i < 1 or value.to_i > 500
|
|
2451
2415
|
raise "The value '#{value}' in expression '#{expression}' " +
|
|
2452
|
-
|
|
2416
|
+
"must be in the range 1 to 500"
|
|
2453
2417
|
end
|
|
2454
2418
|
token.downcase!
|
|
2455
|
-
if
|
|
2419
|
+
if token != 'items' and token != '%'
|
|
2456
2420
|
raise "The type '#{token}' in expression '#{expression}' " +
|
|
2457
|
-
|
|
2421
|
+
"must be either 'items' or '%'"
|
|
2458
2422
|
end
|
|
2459
2423
|
|
|
2460
|
-
if
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2424
|
+
operator = if tokens[0] =~ /^top$/i
|
|
2425
|
+
30
|
|
2426
|
+
else
|
|
2427
|
+
32
|
|
2428
|
+
end
|
|
2465
2429
|
|
|
2466
|
-
if
|
|
2467
|
-
operator += 1
|
|
2468
|
-
end
|
|
2430
|
+
operator += 1 if tokens[2] == '%'
|
|
2469
2431
|
|
|
2470
2432
|
token = value
|
|
2471
2433
|
end
|
|
2472
2434
|
|
|
2473
|
-
if
|
|
2435
|
+
if !operator and tokens[0]
|
|
2474
2436
|
raise "Token '#{tokens[1]}' is not a valid operator " +
|
|
2475
|
-
|
|
2437
|
+
"in filter expression '#{expression}'"
|
|
2476
2438
|
end
|
|
2477
2439
|
|
|
2478
2440
|
# Special handling for Blanks/NonBlanks.
|
|
2479
|
-
if
|
|
2441
|
+
if token.to_s =~ /^blanks|nonblanks$/i
|
|
2480
2442
|
# Only allow Equals or NotEqual in this context.
|
|
2481
|
-
if
|
|
2443
|
+
if operator != 2 and operator != 5
|
|
2482
2444
|
raise "The operator '#{tokens[1]}' in expression '#{expression}' " +
|
|
2483
|
-
|
|
2445
|
+
"is not valid in relation to Blanks/NonBlanks'"
|
|
2484
2446
|
end
|
|
2485
2447
|
|
|
2486
2448
|
token.downcase!
|
|
@@ -2488,25 +2450,19 @@ module Writexlsx
|
|
|
2488
2450
|
# The operator should always be 2 (=) to flag a "simple" equality in
|
|
2489
2451
|
# the binary record. Therefore we convert <> to =.
|
|
2490
2452
|
if token == 'blanks'
|
|
2491
|
-
if operator == 5
|
|
2492
|
-
|
|
2493
|
-
|
|
2453
|
+
token = ' ' if operator == 5
|
|
2454
|
+
elsif operator == 5
|
|
2455
|
+
operator = 2
|
|
2456
|
+
token = 'blanks'
|
|
2494
2457
|
else
|
|
2495
|
-
|
|
2496
|
-
|
|
2497
|
-
token = 'blanks'
|
|
2498
|
-
else
|
|
2499
|
-
operator = 5
|
|
2500
|
-
token = ' '
|
|
2501
|
-
end
|
|
2458
|
+
operator = 5
|
|
2459
|
+
token = ' '
|
|
2502
2460
|
end
|
|
2503
2461
|
end
|
|
2504
2462
|
|
|
2505
2463
|
# if the string token contains an Excel match character then change the
|
|
2506
2464
|
# operator type to indicate a non "simple" equality.
|
|
2507
|
-
if
|
|
2508
|
-
operator = 22
|
|
2509
|
-
end
|
|
2465
|
+
operator = 22 if operator == 2 and token.to_s =~ /[*?]/
|
|
2510
2466
|
|
|
2511
2467
|
[operator, token]
|
|
2512
2468
|
end
|
|
@@ -2518,7 +2474,7 @@ module Writexlsx
|
|
|
2518
2474
|
# 2. Sorts the list.
|
|
2519
2475
|
# 3. Removes 0 from the list if present.
|
|
2520
2476
|
#
|
|
2521
|
-
def sort_pagebreaks(*args)
|
|
2477
|
+
def sort_pagebreaks(*args) # :nodoc:
|
|
2522
2478
|
return [] if args.empty?
|
|
2523
2479
|
|
|
2524
2480
|
breaks = args.uniq.sort
|
|
@@ -2538,17 +2494,17 @@ module Writexlsx
|
|
|
2538
2494
|
# Calculate the vertices that define the position of a graphical object within
|
|
2539
2495
|
# the worksheet in EMUs.
|
|
2540
2496
|
#
|
|
2541
|
-
def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil)
|
|
2497
|
+
def position_object_emus(col_start, row_start, x1, y1, width, height, anchor = nil) # :nodoc:
|
|
2542
2498
|
col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs =
|
|
2543
2499
|
position_object_pixels(col_start, row_start, x1, y1, width, height, anchor)
|
|
2544
2500
|
|
|
2545
2501
|
# Convert the pixel values to EMUs. See above.
|
|
2546
|
-
x1 = (0.5 + 9_525 * x1).to_i
|
|
2547
|
-
y1 = (0.5 + 9_525 * y1).to_i
|
|
2548
|
-
x2 = (0.5 + 9_525 * x2).to_i
|
|
2549
|
-
y2 = (0.5 + 9_525 * y2).to_i
|
|
2550
|
-
x_abs = (0.5 + 9_525 * x_abs).to_i
|
|
2551
|
-
y_abs = (0.5 + 9_525 * y_abs).to_i
|
|
2502
|
+
x1 = (0.5 + (9_525 * x1)).to_i
|
|
2503
|
+
y1 = (0.5 + (9_525 * y1)).to_i
|
|
2504
|
+
x2 = (0.5 + (9_525 * x2)).to_i
|
|
2505
|
+
y2 = (0.5 + (9_525 * y2)).to_i
|
|
2506
|
+
x_abs = (0.5 + (9_525 * x_abs)).to_i
|
|
2507
|
+
y_abs = (0.5 + (9_525 * y_abs)).to_i
|
|
2552
2508
|
|
|
2553
2509
|
[col_start, row_start, x1, y1, col_end, row_end, x2, y2, x_abs, y_abs]
|
|
2554
2510
|
end
|
|
@@ -2559,19 +2515,19 @@ module Writexlsx
|
|
|
2559
2515
|
# we use the default value. A hidden column is treated as having a width of
|
|
2560
2516
|
# zero unless it has the special "object_position" of 4 (size with cells).
|
|
2561
2517
|
#
|
|
2562
|
-
def size_col(col, anchor = 0)
|
|
2518
|
+
def size_col(col, anchor = 0) # :nodoc:
|
|
2563
2519
|
# Look up the cell value to see if it has been changed.
|
|
2564
2520
|
if @col_sizes[col]
|
|
2565
2521
|
width, hidden = @col_sizes[col]
|
|
2566
2522
|
|
|
2567
2523
|
# Convert to pixels.
|
|
2568
|
-
if hidden == 1 && anchor != 4
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2524
|
+
pixels = if hidden == 1 && anchor != 4
|
|
2525
|
+
0
|
|
2526
|
+
elsif width < 1
|
|
2527
|
+
((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i
|
|
2528
|
+
else
|
|
2529
|
+
((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
|
|
2530
|
+
end
|
|
2575
2531
|
else
|
|
2576
2532
|
pixels = @default_col_pixels
|
|
2577
2533
|
end
|
|
@@ -2584,16 +2540,16 @@ module Writexlsx
|
|
|
2584
2540
|
# treated as having a height of zero unless it has the special
|
|
2585
2541
|
# "object_position" of 4 (size with cells).
|
|
2586
2542
|
#
|
|
2587
|
-
def size_row(row, anchor = 0)
|
|
2543
|
+
def size_row(row, anchor = 0) # :nodoc:
|
|
2588
2544
|
# Look up the cell value to see if it has been changed
|
|
2589
2545
|
if @row_sizes[row]
|
|
2590
2546
|
height, hidden = @row_sizes[row]
|
|
2591
2547
|
|
|
2592
|
-
if hidden == 1 && anchor != 4
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2548
|
+
pixels = if hidden == 1 && anchor != 4
|
|
2549
|
+
0
|
|
2550
|
+
else
|
|
2551
|
+
(4 / 3.0 * height).to_i
|
|
2552
|
+
end
|
|
2597
2553
|
else
|
|
2598
2554
|
pixels = (4 / 3.0 * @default_row_height).to_i
|
|
2599
2555
|
end
|
|
@@ -2608,12 +2564,10 @@ module Writexlsx
|
|
|
2608
2564
|
padding = 5.0
|
|
2609
2565
|
|
|
2610
2566
|
if pixels <= 12
|
|
2611
|
-
|
|
2567
|
+
pixels / (max_digit_width + padding)
|
|
2612
2568
|
else
|
|
2613
|
-
|
|
2569
|
+
(pixels - padding) / max_digit_width
|
|
2614
2570
|
end
|
|
2615
|
-
|
|
2616
|
-
width
|
|
2617
2571
|
end
|
|
2618
2572
|
|
|
2619
2573
|
#
|
|
@@ -2621,19 +2575,19 @@ module Writexlsx
|
|
|
2621
2575
|
#
|
|
2622
2576
|
def pixels_to_height(pixels)
|
|
2623
2577
|
height = 0.75 * pixels
|
|
2624
|
-
height = height.to_i if (
|
|
2578
|
+
height = height.to_i if (height - height.to_i).abs < 0.1
|
|
2625
2579
|
height
|
|
2626
2580
|
end
|
|
2627
2581
|
|
|
2628
2582
|
#
|
|
2629
2583
|
# Set up image/drawings.
|
|
2630
2584
|
#
|
|
2631
|
-
def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil)
|
|
2585
|
+
def prepare_image(index, image_id, drawing_id, width, height, name, image_type, x_dpi = 96, y_dpi = 96, md5 = nil) # :nodoc:
|
|
2632
2586
|
x_dpi ||= 96
|
|
2633
2587
|
y_dpi ||= 96
|
|
2634
2588
|
drawing_type = 2
|
|
2635
2589
|
|
|
2636
|
-
row, col,
|
|
2590
|
+
row, col, _image, x_offset, y_offset,
|
|
2637
2591
|
x_scale, y_scale, url, tip, anchor, description, decorative = @images[index]
|
|
2638
2592
|
|
|
2639
2593
|
width *= x_scale
|
|
@@ -2650,28 +2604,24 @@ module Writexlsx
|
|
|
2650
2604
|
|
|
2651
2605
|
# Create a Drawing object to use with worksheet unless one already exists.
|
|
2652
2606
|
drawing = Drawing.new(drawing_type, dimensions, width, height, name, nil, anchor, 0, 0, tip, decorative)
|
|
2653
|
-
if
|
|
2607
|
+
if drawings?
|
|
2608
|
+
drawings = @drawings
|
|
2609
|
+
else
|
|
2654
2610
|
drawings = Drawings.new
|
|
2655
2611
|
drawings.embedded = 1
|
|
2656
2612
|
|
|
2657
2613
|
@drawings = drawings
|
|
2658
2614
|
|
|
2659
2615
|
@external_drawing_links << ['/drawing', "../drawings/drawing#{drawing_id}.xml"]
|
|
2660
|
-
else
|
|
2661
|
-
drawings = @drawings
|
|
2662
2616
|
end
|
|
2663
2617
|
drawings.add_drawing_object(drawing)
|
|
2664
2618
|
|
|
2665
|
-
if description
|
|
2666
|
-
drawing.description = description
|
|
2667
|
-
end
|
|
2619
|
+
drawing.description = description if description
|
|
2668
2620
|
|
|
2669
2621
|
if url
|
|
2670
2622
|
rel_type = '/hyperlink'
|
|
2671
2623
|
target_mode = 'External'
|
|
2672
|
-
if url =~ %r
|
|
2673
|
-
target = escape_url(url)
|
|
2674
|
-
end
|
|
2624
|
+
target = escape_url(url) if url =~ %r{^[fh]tt?ps?://} || url =~ /^mailto:/
|
|
2675
2625
|
if url =~ /^external:/
|
|
2676
2626
|
target = escape_url(url.sub(/^external:/, ''))
|
|
2677
2627
|
|
|
@@ -2679,11 +2629,11 @@ module Writexlsx
|
|
|
2679
2629
|
target = target.gsub(/#/, '%23')
|
|
2680
2630
|
|
|
2681
2631
|
# Prefix absolute paths (not relative) with file:///
|
|
2682
|
-
if target =~ /^\w:/ || target =~ /^\\\\/
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2632
|
+
target = if target =~ /^\w:/ || target =~ /^\\\\/
|
|
2633
|
+
"file:///#{target}"
|
|
2634
|
+
else
|
|
2635
|
+
target.gsub(/\\/, '/')
|
|
2636
|
+
end
|
|
2687
2637
|
end
|
|
2688
2638
|
|
|
2689
2639
|
if url =~ /^internal:/
|
|
@@ -2697,15 +2647,11 @@ Ignoring URL #{target} where link or anchor > 255 characters since it exceeds Ex
|
|
|
2697
2647
|
EOS
|
|
2698
2648
|
end
|
|
2699
2649
|
|
|
2700
|
-
if target && !@drawing_rels[url]
|
|
2701
|
-
@drawing_links << [rel_type, target, target_mode]
|
|
2702
|
-
end
|
|
2650
|
+
@drawing_links << [rel_type, target, target_mode] if target && !@drawing_rels[url]
|
|
2703
2651
|
drawing.url_rel_index = drawing_rel_index(url)
|
|
2704
2652
|
end
|
|
2705
2653
|
|
|
2706
|
-
|
|
2707
|
-
@drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"]
|
|
2708
|
-
end
|
|
2654
|
+
@drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @drawing_rels[md5]
|
|
2709
2655
|
drawing.rel_index = drawing_rel_index(md5)
|
|
2710
2656
|
end
|
|
2711
2657
|
public :prepare_image
|
|
@@ -2713,11 +2659,9 @@ EOS
|
|
|
2713
2659
|
def prepare_header_image(image_id, width, height, name, image_type, position, x_dpi, y_dpi, md5)
|
|
2714
2660
|
# Strip the extension from the filename.
|
|
2715
2661
|
body = name.dup
|
|
2716
|
-
body[/\.[
|
|
2662
|
+
body[/\.[^.]+$/, 0] = ''
|
|
2717
2663
|
|
|
2718
|
-
|
|
2719
|
-
@vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}" ]
|
|
2720
|
-
end
|
|
2664
|
+
@vml_drawing_links << ['/image', "../media/image#{image_id}.#{image_type}"] unless @vml_drawing_rels[md5]
|
|
2721
2665
|
|
|
2722
2666
|
ref_id = get_vml_drawing_rel_index(md5)
|
|
2723
2667
|
@header_images_array << [width, height, body, position, x_dpi, y_dpi, ref_id]
|
|
@@ -2753,9 +2697,7 @@ EOS
|
|
|
2753
2697
|
# Check for a cell reference in A1 notation and substitute row and column.
|
|
2754
2698
|
row_start, column_start, shape, x_offset, y_offset, x_scale, y_scale, anchor =
|
|
2755
2699
|
row_col_notation(args)
|
|
2756
|
-
if [row_start, column_start, shape].include?(nil)
|
|
2757
|
-
raise "Insufficient arguments in insert_shape()"
|
|
2758
|
-
end
|
|
2700
|
+
raise "Insufficient arguments in insert_shape()" if [row_start, column_start, shape].include?(nil)
|
|
2759
2701
|
|
|
2760
2702
|
shape.set_position(
|
|
2761
2703
|
row_start, column_start, x_offset, y_offset,
|
|
@@ -2778,14 +2720,14 @@ EOS
|
|
|
2778
2720
|
# Allow lookup of entry into shape array by shape ID.
|
|
2779
2721
|
@shape_hash[shape.id] = shape.element = @shapes.size
|
|
2780
2722
|
|
|
2781
|
-
if ptrue?(shape.stencil)
|
|
2782
|
-
|
|
2783
|
-
|
|
2784
|
-
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2723
|
+
insert = if ptrue?(shape.stencil)
|
|
2724
|
+
# Insert a copy of the shape, not a reference so that the shape is
|
|
2725
|
+
# used as a stencil. Previously stamped copies don't get modified
|
|
2726
|
+
# if the stencil is modified.
|
|
2727
|
+
shape.dup
|
|
2728
|
+
else
|
|
2729
|
+
shape
|
|
2730
|
+
end
|
|
2789
2731
|
|
|
2790
2732
|
# For connectors change x/y coords based on location of connected shapes.
|
|
2791
2733
|
insert.auto_locate_connectors(@shapes, @shape_hash)
|
|
@@ -2839,29 +2781,25 @@ EOS
|
|
|
2839
2781
|
button.font = { :_caption => caption }
|
|
2840
2782
|
|
|
2841
2783
|
# Set the macro name.
|
|
2842
|
-
if params[:macro]
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2784
|
+
button.macro = if params[:macro]
|
|
2785
|
+
"[0]!#{params[:macro]}"
|
|
2786
|
+
else
|
|
2787
|
+
"[0]!Button#{button_number}_Click"
|
|
2788
|
+
end
|
|
2847
2789
|
|
|
2848
2790
|
# Ensure that a width and height have been set.
|
|
2849
2791
|
default_width = @default_col_pixels
|
|
2850
2792
|
default_height = @default_row_pixels
|
|
2851
|
-
params[:width] = default_width
|
|
2852
|
-
params[:height] = default_height
|
|
2793
|
+
params[:width] = default_width unless params[:width]
|
|
2794
|
+
params[:height] = default_height unless params[:height]
|
|
2853
2795
|
|
|
2854
2796
|
# Set the x/y offsets.
|
|
2855
|
-
params[:x_offset] = 0
|
|
2856
|
-
params[:y_offset] = 0
|
|
2797
|
+
params[:x_offset] = 0 unless params[:x_offset]
|
|
2798
|
+
params[:y_offset] = 0 unless params[:y_offset]
|
|
2857
2799
|
|
|
2858
2800
|
# Scale the size of the button box if required.
|
|
2859
|
-
if params[:x_scale]
|
|
2860
|
-
|
|
2861
|
-
end
|
|
2862
|
-
if params[:y_scale]
|
|
2863
|
-
params[:height] = params[:height] * params[:y_scale]
|
|
2864
|
-
end
|
|
2801
|
+
params[:width] = params[:width] * params[:x_scale] if params[:x_scale]
|
|
2802
|
+
params[:height] = params[:height] * params[:y_scale] if params[:y_scale]
|
|
2865
2803
|
|
|
2866
2804
|
# Round the dimensions to the nearest pixel.
|
|
2867
2805
|
params[:width] = (0.5 + params[:width]).to_i
|
|
@@ -2891,7 +2829,7 @@ EOS
|
|
|
2891
2829
|
#
|
|
2892
2830
|
# Based on the algorithm provided by Daniel Rentz of OpenOffice.
|
|
2893
2831
|
#
|
|
2894
|
-
def encode_password(password)
|
|
2832
|
+
def encode_password(password) # :nodoc:
|
|
2895
2833
|
i = 0
|
|
2896
2834
|
chars = password.split(//)
|
|
2897
2835
|
count = chars.size
|
|
@@ -2900,12 +2838,12 @@ EOS
|
|
|
2900
2838
|
i += 1
|
|
2901
2839
|
char = char.ord << i
|
|
2902
2840
|
low_15 = char & 0x7fff
|
|
2903
|
-
high_15 = char & 0x7fff << 15
|
|
2841
|
+
high_15 = char & (0x7fff << 15)
|
|
2904
2842
|
high_15 = high_15 >> 15
|
|
2905
2843
|
char = low_15 | high_15
|
|
2906
2844
|
end
|
|
2907
2845
|
|
|
2908
|
-
encoded_password
|
|
2846
|
+
encoded_password = 0x0000
|
|
2909
2847
|
chars.each { |c| encoded_password ^= c }
|
|
2910
2848
|
encoded_password ^= count
|
|
2911
2849
|
encoded_password ^= 0xCE4B
|
|
@@ -2916,7 +2854,7 @@ EOS
|
|
|
2916
2854
|
#
|
|
2917
2855
|
# Write the <worksheet> element. This is the root element of Worksheet.
|
|
2918
2856
|
#
|
|
2919
|
-
def write_worksheet_attributes
|
|
2857
|
+
def write_worksheet_attributes # :nodoc:
|
|
2920
2858
|
schema = 'http://schemas.openxmlformats.org/'
|
|
2921
2859
|
attributes = [
|
|
2922
2860
|
['xmlns', "#{schema}spreadsheetml/2006/main"],
|
|
@@ -2934,7 +2872,7 @@ EOS
|
|
|
2934
2872
|
#
|
|
2935
2873
|
# Write the <sheetPr> element for Sheet level properties.
|
|
2936
2874
|
#
|
|
2937
|
-
def write_sheet_pr
|
|
2875
|
+
def write_sheet_pr # :nodoc:
|
|
2938
2876
|
return unless tab_outline_fit? || vba_codename? || filter_on?
|
|
2939
2877
|
|
|
2940
2878
|
attributes = []
|
|
@@ -2959,14 +2897,14 @@ EOS
|
|
|
2959
2897
|
#
|
|
2960
2898
|
# Write the <pageSetUpPr> element.
|
|
2961
2899
|
#
|
|
2962
|
-
def write_page_set_up_pr
|
|
2963
|
-
@writer.empty_tag('pageSetUpPr', [
|
|
2900
|
+
def write_page_set_up_pr # :nodoc:
|
|
2901
|
+
@writer.empty_tag('pageSetUpPr', [['fitToPage', 1]]) if fit_page?
|
|
2964
2902
|
end
|
|
2965
2903
|
|
|
2966
2904
|
# Write the <dimension> element. This specifies the range of cells in the
|
|
2967
2905
|
# worksheet. As a special case, empty spreadsheets use 'A1' as a range.
|
|
2968
2906
|
#
|
|
2969
|
-
def write_dimension
|
|
2907
|
+
def write_dimension # :nodoc:
|
|
2970
2908
|
if !@dim_rowmin && !@dim_colmin
|
|
2971
2909
|
# If the min dims are undefined then no dimensions have been set
|
|
2972
2910
|
# and we use the default 'A1'.
|
|
@@ -2992,16 +2930,17 @@ EOS
|
|
|
2992
2930
|
cell_2 = xl_rowcol_to_cell(@dim_rowmax, @dim_colmax)
|
|
2993
2931
|
ref = cell_1 + ':' + cell_2
|
|
2994
2932
|
end
|
|
2995
|
-
@writer.empty_tag('dimension', [
|
|
2933
|
+
@writer.empty_tag('dimension', [['ref', ref]])
|
|
2996
2934
|
end
|
|
2935
|
+
|
|
2997
2936
|
#
|
|
2998
2937
|
# Write the <sheetViews> element.
|
|
2999
2938
|
#
|
|
3000
|
-
def write_sheet_views
|
|
2939
|
+
def write_sheet_views # :nodoc:
|
|
3001
2940
|
@writer.tag_elements('sheetViews', []) { write_sheet_view }
|
|
3002
2941
|
end
|
|
3003
2942
|
|
|
3004
|
-
def write_sheet_view
|
|
2943
|
+
def write_sheet_view # :nodoc:
|
|
3005
2944
|
attributes = []
|
|
3006
2945
|
# Hide screen gridlines if required.
|
|
3007
2946
|
attributes << ['showGridLines', 0] unless @screen_gridlines
|
|
@@ -3023,7 +2962,7 @@ EOS
|
|
|
3023
2962
|
|
|
3024
2963
|
# Set the page view/layout mode if required.
|
|
3025
2964
|
# TODO. Add pageBreakPreview mode when requested.
|
|
3026
|
-
attributes << [
|
|
2965
|
+
attributes << %w[view pageLayout] if page_view?
|
|
3027
2966
|
|
|
3028
2967
|
# Set the zoom level.
|
|
3029
2968
|
if @zoom != 100
|
|
@@ -3046,14 +2985,14 @@ EOS
|
|
|
3046
2985
|
#
|
|
3047
2986
|
# Write the <selection> elements.
|
|
3048
2987
|
#
|
|
3049
|
-
def write_selections
|
|
2988
|
+
def write_selections # :nodoc:
|
|
3050
2989
|
@selections.each { |selection| write_selection(*selection) }
|
|
3051
2990
|
end
|
|
3052
2991
|
|
|
3053
2992
|
#
|
|
3054
2993
|
# Write the <selection> element.
|
|
3055
2994
|
#
|
|
3056
|
-
def write_selection(pane, active_cell, sqref)
|
|
2995
|
+
def write_selection(pane, active_cell, sqref) # :nodoc:
|
|
3057
2996
|
attributes = []
|
|
3058
2997
|
attributes << ['pane', pane] if pane
|
|
3059
2998
|
attributes << ['activeCell', active_cell] if active_cell
|
|
@@ -3065,44 +3004,36 @@ EOS
|
|
|
3065
3004
|
#
|
|
3066
3005
|
# Write the <sheetFormatPr> element.
|
|
3067
3006
|
#
|
|
3068
|
-
def write_sheet_format_pr
|
|
3069
|
-
base_col_width = 10
|
|
3070
|
-
|
|
3007
|
+
def write_sheet_format_pr # :nodoc:
|
|
3071
3008
|
attributes = [
|
|
3072
3009
|
['defaultRowHeight', @default_row_height]
|
|
3073
3010
|
]
|
|
3074
|
-
if @default_row_height != @original_row_height
|
|
3075
|
-
attributes << ['customHeight', 1]
|
|
3076
|
-
end
|
|
3011
|
+
attributes << ['customHeight', 1] if @default_row_height != @original_row_height
|
|
3077
3012
|
|
|
3078
|
-
if ptrue?(@default_row_zeroed)
|
|
3079
|
-
attributes << ['zeroHeight', 1]
|
|
3080
|
-
end
|
|
3013
|
+
attributes << ['zeroHeight', 1] if ptrue?(@default_row_zeroed)
|
|
3081
3014
|
|
|
3082
3015
|
attributes << ['outlineLevelRow', @outline_row_level] if @outline_row_level > 0
|
|
3083
3016
|
attributes << ['outlineLevelCol', @outline_col_level] if @outline_col_level > 0
|
|
3084
|
-
if @excel_version == 2010
|
|
3085
|
-
attributes << ['x14ac:dyDescent', '0.25']
|
|
3086
|
-
end
|
|
3017
|
+
attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
|
|
3087
3018
|
@writer.empty_tag('sheetFormatPr', attributes)
|
|
3088
3019
|
end
|
|
3089
3020
|
|
|
3090
3021
|
#
|
|
3091
3022
|
# Write the <cols> element and <col> sub elements.
|
|
3092
3023
|
#
|
|
3093
|
-
def write_cols
|
|
3024
|
+
def write_cols # :nodoc:
|
|
3094
3025
|
# Exit unless some column have been formatted.
|
|
3095
3026
|
return if @colinfo.empty?
|
|
3096
3027
|
|
|
3097
3028
|
@writer.tag_elements('cols') do
|
|
3098
|
-
@colinfo.keys.sort.each {|col| write_col_info(@colinfo[col]) }
|
|
3029
|
+
@colinfo.keys.sort.each { |col| write_col_info(@colinfo[col]) }
|
|
3099
3030
|
end
|
|
3100
3031
|
end
|
|
3101
3032
|
|
|
3102
3033
|
#
|
|
3103
3034
|
# Write the <col> element.
|
|
3104
3035
|
#
|
|
3105
|
-
def write_col_info(args)
|
|
3036
|
+
def write_col_info(args) # :nodoc:
|
|
3106
3037
|
@writer.empty_tag('col', col_info_attributes(args))
|
|
3107
3038
|
end
|
|
3108
3039
|
|
|
@@ -3120,16 +3051,14 @@ EOS
|
|
|
3120
3051
|
custom_width = false if width.nil? && hidden == 0
|
|
3121
3052
|
custom_width = false if width == 8.43
|
|
3122
3053
|
|
|
3123
|
-
width
|
|
3054
|
+
width ||= hidden == 0 ? @default_col_width : 0
|
|
3124
3055
|
|
|
3125
3056
|
# Convert column width from user units to character width.
|
|
3126
|
-
if width && width < 1
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
(((width * MAX_DIGIT_WIDTH + 0.5).to_i + PADDING).to_i/ MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
|
|
3132
|
-
end
|
|
3057
|
+
width = if width && width < 1
|
|
3058
|
+
(((width * (MAX_DIGIT_WIDTH + PADDING)) + 0.5).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
|
|
3059
|
+
else
|
|
3060
|
+
((((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING).to_i / MAX_DIGIT_WIDTH.to_f * 256).to_i / 256.0
|
|
3061
|
+
end
|
|
3133
3062
|
width = width.to_i if width - width.to_i == 0
|
|
3134
3063
|
|
|
3135
3064
|
attributes = [
|
|
@@ -3149,22 +3078,22 @@ EOS
|
|
|
3149
3078
|
#
|
|
3150
3079
|
# Write the <sheetData> element.
|
|
3151
3080
|
#
|
|
3152
|
-
def write_sheet_data
|
|
3153
|
-
if
|
|
3081
|
+
def write_sheet_data # :nodoc:
|
|
3082
|
+
if @dim_rowmin
|
|
3083
|
+
@writer.tag_elements('sheetData') { write_rows }
|
|
3084
|
+
else
|
|
3154
3085
|
# If the dimensions aren't defined then there is no data to write.
|
|
3155
3086
|
@writer.empty_tag('sheetData')
|
|
3156
|
-
else
|
|
3157
|
-
@writer.tag_elements('sheetData') { write_rows }
|
|
3158
3087
|
end
|
|
3159
3088
|
end
|
|
3160
3089
|
|
|
3161
3090
|
#
|
|
3162
3091
|
# Write out the worksheet data as a series of rows and cells.
|
|
3163
3092
|
#
|
|
3164
|
-
def write_rows
|
|
3093
|
+
def write_rows # :nodoc:
|
|
3165
3094
|
calculate_spans
|
|
3166
3095
|
|
|
3167
|
-
(@dim_rowmin
|
|
3096
|
+
(@dim_rowmin..@dim_rowmax).each do |row_num|
|
|
3168
3097
|
# Skip row if it doesn't contain row formatting or cell data.
|
|
3169
3098
|
next if not_contain_formatting_or_data?(row_num)
|
|
3170
3099
|
|
|
@@ -3177,8 +3106,6 @@ EOS
|
|
|
3177
3106
|
write_row_element(row_num, span, *args) do
|
|
3178
3107
|
write_cell_column_dimension(row_num)
|
|
3179
3108
|
end
|
|
3180
|
-
elsif @comments[row_num]
|
|
3181
|
-
write_empty_row(row_num, span, *(@set_rows[row_num]))
|
|
3182
3109
|
else
|
|
3183
3110
|
# Row attributes only.
|
|
3184
3111
|
write_empty_row(row_num, span, *(@set_rows[row_num]))
|
|
@@ -3191,7 +3118,7 @@ EOS
|
|
|
3191
3118
|
end
|
|
3192
3119
|
|
|
3193
3120
|
def write_cell_column_dimension(row_num) # :nodoc:
|
|
3194
|
-
(@dim_colmin
|
|
3121
|
+
(@dim_colmin..@dim_colmax).each do |col_num|
|
|
3195
3122
|
@cell_data_table[row_num][col_num].write_cell if @cell_data_table[row_num][col_num]
|
|
3196
3123
|
end
|
|
3197
3124
|
end
|
|
@@ -3199,21 +3126,19 @@ EOS
|
|
|
3199
3126
|
#
|
|
3200
3127
|
# Write the <row> element.
|
|
3201
3128
|
#
|
|
3202
|
-
def write_row_element(*args) # :nodoc:
|
|
3203
|
-
@writer.tag_elements('row', row_attributes(args))
|
|
3204
|
-
yield
|
|
3205
|
-
end
|
|
3129
|
+
def write_row_element(*args, &block) # :nodoc:
|
|
3130
|
+
@writer.tag_elements('row', row_attributes(args), &block)
|
|
3206
3131
|
end
|
|
3207
3132
|
|
|
3208
3133
|
#
|
|
3209
3134
|
# Write and empty <row> element, i.e., attributes only, no cell data.
|
|
3210
3135
|
#
|
|
3211
|
-
def write_empty_row(*args)
|
|
3136
|
+
def write_empty_row(*args) # :nodoc:
|
|
3212
3137
|
@writer.empty_tag('row', row_attributes(args))
|
|
3213
3138
|
end
|
|
3214
3139
|
|
|
3215
3140
|
def row_attributes(args)
|
|
3216
|
-
r, spans, height, format, hidden, level, collapsed,
|
|
3141
|
+
r, spans, height, format, hidden, level, collapsed, _empty_row = args
|
|
3217
3142
|
height ||= @default_row_height
|
|
3218
3143
|
hidden ||= 0
|
|
3219
3144
|
level ||= 0
|
|
@@ -3230,36 +3155,34 @@ EOS
|
|
|
3230
3155
|
attributes << ['outlineLevel', level] if ptrue?(level)
|
|
3231
3156
|
attributes << ['collapsed', 1] if ptrue?(collapsed)
|
|
3232
3157
|
|
|
3233
|
-
if @excel_version == 2010
|
|
3234
|
-
attributes << ['x14ac:dyDescent', '0.25']
|
|
3235
|
-
end
|
|
3158
|
+
attributes << ['x14ac:dyDescent', '0.25'] if @excel_version == 2010
|
|
3236
3159
|
attributes
|
|
3237
3160
|
end
|
|
3238
3161
|
|
|
3239
3162
|
#
|
|
3240
3163
|
# Write the frozen or split <pane> elements.
|
|
3241
3164
|
#
|
|
3242
|
-
def write_panes
|
|
3165
|
+
def write_panes # :nodoc:
|
|
3243
3166
|
return if @panes.empty?
|
|
3244
3167
|
|
|
3245
3168
|
if @panes[4] == 2
|
|
3246
3169
|
write_split_panes
|
|
3247
3170
|
else
|
|
3248
|
-
write_freeze_panes(
|
|
3171
|
+
write_freeze_panes(*@panes)
|
|
3249
3172
|
end
|
|
3250
3173
|
end
|
|
3251
3174
|
|
|
3252
3175
|
#
|
|
3253
3176
|
# Write the <pane> element for freeze panes.
|
|
3254
3177
|
#
|
|
3255
|
-
def write_freeze_panes(row, col, top_row, left_col, type)
|
|
3178
|
+
def write_freeze_panes(row, col, top_row, left_col, type) # :nodoc:
|
|
3256
3179
|
y_split = row
|
|
3257
3180
|
x_split = col
|
|
3258
3181
|
top_left_cell = xl_rowcol_to_cell(top_row, left_col)
|
|
3259
3182
|
|
|
3260
3183
|
# Move user cell selection to the panes.
|
|
3261
3184
|
unless @selections.empty?
|
|
3262
|
-
|
|
3185
|
+
_dummy, active_cell, sqref = @selections[0]
|
|
3263
3186
|
@selections = []
|
|
3264
3187
|
end
|
|
3265
3188
|
|
|
@@ -3268,13 +3191,13 @@ EOS
|
|
|
3268
3191
|
active_pane = set_active_pane_and_cell_selections(row, col, row, col, active_cell, sqref)
|
|
3269
3192
|
|
|
3270
3193
|
# Set the pane type.
|
|
3271
|
-
if type == 0
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3194
|
+
state = if type == 0
|
|
3195
|
+
'frozen'
|
|
3196
|
+
elsif type == 1
|
|
3197
|
+
'frozenSplit'
|
|
3198
|
+
else
|
|
3199
|
+
'split'
|
|
3200
|
+
end
|
|
3278
3201
|
|
|
3279
3202
|
attributes = []
|
|
3280
3203
|
attributes << ['xSplit', x_split] if x_split > 0
|
|
@@ -3291,35 +3214,35 @@ EOS
|
|
|
3291
3214
|
#
|
|
3292
3215
|
# See also, implementers note for split_panes().
|
|
3293
3216
|
#
|
|
3294
|
-
def write_split_panes
|
|
3217
|
+
def write_split_panes # :nodoc:
|
|
3295
3218
|
row, col, top_row, left_col = @panes
|
|
3296
3219
|
has_selection = false
|
|
3297
3220
|
y_split = row
|
|
3298
3221
|
x_split = col
|
|
3299
3222
|
|
|
3300
3223
|
# Move user cell selection to the panes.
|
|
3301
|
-
|
|
3302
|
-
|
|
3224
|
+
unless @selections.empty?
|
|
3225
|
+
_dummy, active_cell, sqref = @selections[0]
|
|
3303
3226
|
@selections = []
|
|
3304
3227
|
has_selection = true
|
|
3305
3228
|
end
|
|
3306
3229
|
|
|
3307
3230
|
# Convert the row and col to 1/20 twip units with padding.
|
|
3308
|
-
y_split = (20 * y_split + 300).to_i if y_split > 0
|
|
3231
|
+
y_split = ((20 * y_split) + 300).to_i if y_split > 0
|
|
3309
3232
|
x_split = calculate_x_split_width(x_split) if x_split > 0
|
|
3310
3233
|
|
|
3311
3234
|
# For non-explicit topLeft definitions, estimate the cell offset based
|
|
3312
3235
|
# on the pixels dimensions. This is only a workaround and doesn't take
|
|
3313
3236
|
# adjusted cell dimensions into account.
|
|
3314
3237
|
if top_row == row && left_col == col
|
|
3315
|
-
top_row = (0.5 + (y_split - 300) / 20 / 15).to_i
|
|
3316
|
-
left_col = (0.5 + (x_split - 390) / 20 / 3 * 4 / 64).to_i
|
|
3238
|
+
top_row = (0.5 + ((y_split - 300) / 20 / 15)).to_i
|
|
3239
|
+
left_col = (0.5 + ((x_split - 390) / 20 / 3 * 4 / 64)).to_i
|
|
3317
3240
|
end
|
|
3318
3241
|
|
|
3319
3242
|
top_left_cell = xl_rowcol_to_cell(top_row, left_col)
|
|
3320
3243
|
|
|
3321
3244
|
# If there is no selection set the active cell to the top left cell.
|
|
3322
|
-
|
|
3245
|
+
unless has_selection
|
|
3323
3246
|
active_cell = top_left_cell
|
|
3324
3247
|
sqref = top_left_cell
|
|
3325
3248
|
end
|
|
@@ -3339,13 +3262,13 @@ EOS
|
|
|
3339
3262
|
#
|
|
3340
3263
|
# Convert column width from user units to pane split width.
|
|
3341
3264
|
#
|
|
3342
|
-
def calculate_x_split_width(width)
|
|
3265
|
+
def calculate_x_split_width(width) # :nodoc:
|
|
3343
3266
|
# Convert to pixels.
|
|
3344
|
-
if width < 1
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3267
|
+
pixels = if width < 1
|
|
3268
|
+
int((width * 12) + 0.5)
|
|
3269
|
+
else
|
|
3270
|
+
((width * MAX_DIGIT_WIDTH) + 0.5).to_i + PADDING
|
|
3271
|
+
end
|
|
3349
3272
|
|
|
3350
3273
|
# Convert to points.
|
|
3351
3274
|
points = pixels * 3 / 4
|
|
@@ -3360,17 +3283,17 @@ EOS
|
|
|
3360
3283
|
#
|
|
3361
3284
|
# Write the <sheetCalcPr> element for the worksheet calculation properties.
|
|
3362
3285
|
#
|
|
3363
|
-
def write_sheet_calc_pr
|
|
3364
|
-
@writer.empty_tag('sheetCalcPr', [
|
|
3286
|
+
def write_sheet_calc_pr # :nodoc:
|
|
3287
|
+
@writer.empty_tag('sheetCalcPr', [['fullCalcOnLoad', 1]])
|
|
3365
3288
|
end
|
|
3366
3289
|
|
|
3367
3290
|
#
|
|
3368
3291
|
# Write the <phoneticPr> element.
|
|
3369
3292
|
#
|
|
3370
|
-
def write_phonetic_pr
|
|
3293
|
+
def write_phonetic_pr # :nodoc:
|
|
3371
3294
|
attributes = [
|
|
3372
3295
|
['fontId', 0],
|
|
3373
|
-
[
|
|
3296
|
+
%w[type noConversion]
|
|
3374
3297
|
]
|
|
3375
3298
|
|
|
3376
3299
|
@writer.empty_tag('phoneticPr', attributes)
|
|
@@ -3379,82 +3302,80 @@ EOS
|
|
|
3379
3302
|
#
|
|
3380
3303
|
# Write the <pageMargins> element.
|
|
3381
3304
|
#
|
|
3382
|
-
def write_page_margins
|
|
3305
|
+
def write_page_margins # :nodoc:
|
|
3383
3306
|
@page_setup.write_page_margins(@writer)
|
|
3384
3307
|
end
|
|
3385
3308
|
|
|
3386
3309
|
#
|
|
3387
3310
|
# Write the <pageSetup> element.
|
|
3388
3311
|
#
|
|
3389
|
-
def write_page_setup
|
|
3312
|
+
def write_page_setup # :nodoc:
|
|
3390
3313
|
@page_setup.write_page_setup(@writer)
|
|
3391
3314
|
end
|
|
3392
3315
|
|
|
3393
3316
|
#
|
|
3394
3317
|
# Write the <mergeCells> element.
|
|
3395
3318
|
#
|
|
3396
|
-
def write_merge_cells
|
|
3319
|
+
def write_merge_cells # :nodoc:
|
|
3397
3320
|
write_some_elements('mergeCells', @merge) do
|
|
3398
3321
|
@merge.each { |merged_range| write_merge_cell(merged_range) }
|
|
3399
3322
|
end
|
|
3400
3323
|
end
|
|
3401
3324
|
|
|
3402
|
-
def write_some_elements(tag, container)
|
|
3325
|
+
def write_some_elements(tag, container, &block)
|
|
3403
3326
|
return if container.empty?
|
|
3404
3327
|
|
|
3405
|
-
@writer.tag_elements(tag, [
|
|
3406
|
-
yield
|
|
3407
|
-
end
|
|
3328
|
+
@writer.tag_elements(tag, [['count', container.size]], &block)
|
|
3408
3329
|
end
|
|
3409
3330
|
|
|
3410
3331
|
#
|
|
3411
3332
|
# Write the <mergeCell> element.
|
|
3412
3333
|
#
|
|
3413
|
-
def write_merge_cell(merged_range)
|
|
3334
|
+
def write_merge_cell(merged_range) # :nodoc:
|
|
3414
3335
|
row_min, col_min, row_max, col_max = merged_range
|
|
3415
3336
|
|
|
3416
3337
|
# Convert the merge dimensions to a cell range.
|
|
3417
3338
|
cell_1 = xl_rowcol_to_cell(row_min, col_min)
|
|
3418
3339
|
cell_2 = xl_rowcol_to_cell(row_max, col_max)
|
|
3419
3340
|
|
|
3420
|
-
@writer.empty_tag('mergeCell', [
|
|
3341
|
+
@writer.empty_tag('mergeCell', [['ref', "#{cell_1}:#{cell_2}"]])
|
|
3421
3342
|
end
|
|
3422
3343
|
|
|
3423
3344
|
#
|
|
3424
3345
|
# Write the <printOptions> element.
|
|
3425
3346
|
#
|
|
3426
|
-
def write_print_options
|
|
3347
|
+
def write_print_options # :nodoc:
|
|
3427
3348
|
@page_setup.write_print_options(@writer)
|
|
3428
3349
|
end
|
|
3429
3350
|
|
|
3430
3351
|
#
|
|
3431
3352
|
# Write the <headerFooter> element.
|
|
3432
3353
|
#
|
|
3433
|
-
def write_header_footer
|
|
3354
|
+
def write_header_footer # :nodoc:
|
|
3434
3355
|
@page_setup.write_header_footer(@writer, excel2003_style?)
|
|
3435
3356
|
end
|
|
3436
3357
|
|
|
3437
3358
|
#
|
|
3438
3359
|
# Write the <rowBreaks> element.
|
|
3439
3360
|
#
|
|
3440
|
-
def write_row_breaks
|
|
3361
|
+
def write_row_breaks # :nodoc:
|
|
3441
3362
|
write_breaks('rowBreaks')
|
|
3442
3363
|
end
|
|
3443
3364
|
|
|
3444
3365
|
#
|
|
3445
3366
|
# Write the <colBreaks> element.
|
|
3446
3367
|
#
|
|
3447
|
-
def write_col_breaks
|
|
3368
|
+
def write_col_breaks # :nodoc:
|
|
3448
3369
|
write_breaks('colBreaks')
|
|
3449
3370
|
end
|
|
3450
3371
|
|
|
3451
3372
|
def write_breaks(tag) # :nodoc:
|
|
3452
3373
|
case tag
|
|
3453
3374
|
when 'rowBreaks'
|
|
3454
|
-
page_breaks = sort_pagebreaks(
|
|
3375
|
+
page_breaks = sort_pagebreaks(*@page_setup.hbreaks)
|
|
3455
3376
|
max = 16383
|
|
3456
3377
|
when 'colBreaks'
|
|
3457
|
-
page_breaks = sort_pagebreaks(
|
|
3378
|
+
page_breaks = sort_pagebreaks(*@page_setup.vbreaks)
|
|
3458
3379
|
max = 1048575
|
|
3459
3380
|
else
|
|
3460
3381
|
raise "Invalid parameter '#{tag}' in write_breaks."
|
|
@@ -3472,10 +3393,11 @@ EOS
|
|
|
3472
3393
|
page_breaks.each { |num| write_brk(num, max) }
|
|
3473
3394
|
end
|
|
3474
3395
|
end
|
|
3396
|
+
|
|
3475
3397
|
#
|
|
3476
3398
|
# Write the <brk> element.
|
|
3477
3399
|
#
|
|
3478
|
-
def write_brk(id, max)
|
|
3400
|
+
def write_brk(id, max) # :nodoc:
|
|
3479
3401
|
attributes = [
|
|
3480
3402
|
['id', id],
|
|
3481
3403
|
['max', max],
|
|
@@ -3488,7 +3410,7 @@ EOS
|
|
|
3488
3410
|
#
|
|
3489
3411
|
# Write the <autoFilter> element.
|
|
3490
3412
|
#
|
|
3491
|
-
def write_auto_filter
|
|
3413
|
+
def write_auto_filter # :nodoc:
|
|
3492
3414
|
return unless autofilter_ref?
|
|
3493
3415
|
|
|
3494
3416
|
attributes = [
|
|
@@ -3510,10 +3432,10 @@ EOS
|
|
|
3510
3432
|
# Function to iterate through the columns that form part of an autofilter
|
|
3511
3433
|
# range and write the appropriate filters.
|
|
3512
3434
|
#
|
|
3513
|
-
def write_autofilters
|
|
3435
|
+
def write_autofilters # :nodoc:
|
|
3514
3436
|
col1, col2 = @filter_range
|
|
3515
3437
|
|
|
3516
|
-
(col1
|
|
3438
|
+
(col1..col2).each do |col|
|
|
3517
3439
|
# Skip if column doesn't have an active filter.
|
|
3518
3440
|
next unless @filter_cols[col]
|
|
3519
3441
|
|
|
@@ -3529,8 +3451,8 @@ EOS
|
|
|
3529
3451
|
#
|
|
3530
3452
|
# Write the <filterColumn> element.
|
|
3531
3453
|
#
|
|
3532
|
-
def write_filter_column(col_id, type, *filters)
|
|
3533
|
-
@writer.tag_elements('filterColumn', [
|
|
3454
|
+
def write_filter_column(col_id, type, *filters) # :nodoc:
|
|
3455
|
+
@writer.tag_elements('filterColumn', [['colId', col_id]]) do
|
|
3534
3456
|
if type == 1
|
|
3535
3457
|
# Type == 1 is the new XLSX style filter.
|
|
3536
3458
|
write_filters(*filters)
|
|
@@ -3544,13 +3466,11 @@ EOS
|
|
|
3544
3466
|
#
|
|
3545
3467
|
# Write the <filters> element.
|
|
3546
3468
|
#
|
|
3547
|
-
def write_filters(*filters)
|
|
3469
|
+
def write_filters(*filters) # :nodoc:
|
|
3548
3470
|
non_blanks = filters.reject { |filter| filter.to_s =~ /^blanks$/i }
|
|
3549
3471
|
attributes = []
|
|
3550
3472
|
|
|
3551
|
-
if filters != non_blanks
|
|
3552
|
-
attributes = [ ['blank', 1] ]
|
|
3553
|
-
end
|
|
3473
|
+
attributes = [['blank', 1]] if filters != non_blanks
|
|
3554
3474
|
|
|
3555
3475
|
if filters.size == 1 && non_blanks.empty?
|
|
3556
3476
|
# Special case for blank cells only.
|
|
@@ -3566,14 +3486,14 @@ EOS
|
|
|
3566
3486
|
#
|
|
3567
3487
|
# Write the <filter> element.
|
|
3568
3488
|
#
|
|
3569
|
-
def write_filter(val)
|
|
3570
|
-
@writer.empty_tag('filter', [
|
|
3489
|
+
def write_filter(val) # :nodoc:
|
|
3490
|
+
@writer.empty_tag('filter', [['val', val]])
|
|
3571
3491
|
end
|
|
3572
3492
|
|
|
3573
3493
|
#
|
|
3574
3494
|
# Write the <customFilters> element.
|
|
3575
3495
|
#
|
|
3576
|
-
def write_custom_filters(*tokens)
|
|
3496
|
+
def write_custom_filters(*tokens) # :nodoc:
|
|
3577
3497
|
if tokens.size == 2
|
|
3578
3498
|
# One filter expression only.
|
|
3579
3499
|
@writer.tag_elements('customFilters') { write_custom_filter(*tokens) }
|
|
@@ -3581,11 +3501,11 @@ EOS
|
|
|
3581
3501
|
# Two filter expressions.
|
|
3582
3502
|
|
|
3583
3503
|
# Check if the "join" operand is "and" or "or".
|
|
3584
|
-
if tokens[2] == 0
|
|
3585
|
-
|
|
3586
|
-
|
|
3587
|
-
|
|
3588
|
-
|
|
3504
|
+
attributes = if tokens[2] == 0
|
|
3505
|
+
[['and', 1]]
|
|
3506
|
+
else
|
|
3507
|
+
[['and', 0]]
|
|
3508
|
+
end
|
|
3589
3509
|
|
|
3590
3510
|
# Write the two custom filters.
|
|
3591
3511
|
@writer.tag_elements('customFilters', attributes) do
|
|
@@ -3598,7 +3518,7 @@ EOS
|
|
|
3598
3518
|
#
|
|
3599
3519
|
# Write the <customFilter> element.
|
|
3600
3520
|
#
|
|
3601
|
-
def write_custom_filter(operator, val)
|
|
3521
|
+
def write_custom_filter(operator, val) # :nodoc:
|
|
3602
3522
|
operators = {
|
|
3603
3523
|
1 => 'lessThan',
|
|
3604
3524
|
2 => 'equal',
|
|
@@ -3628,8 +3548,9 @@ EOS
|
|
|
3628
3548
|
# Process any sored hyperlinks in row/col order and write the <hyperlinks>
|
|
3629
3549
|
# element. The attributes are different for internal and external links.
|
|
3630
3550
|
#
|
|
3631
|
-
def write_hyperlinks
|
|
3551
|
+
def write_hyperlinks # :nodoc:
|
|
3632
3552
|
return unless @hyperlinks
|
|
3553
|
+
|
|
3633
3554
|
hlink_attributes = []
|
|
3634
3555
|
@hyperlinks.keys.sort.each do |row_num|
|
|
3635
3556
|
# Sort the hyperlinks into column order.
|
|
@@ -3642,11 +3563,9 @@ EOS
|
|
|
3642
3563
|
# If the cell isn't a string then we have to add the url as
|
|
3643
3564
|
# the string to display
|
|
3644
3565
|
if ptrue?(@cell_data_table) &&
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
link.display_on
|
|
3649
|
-
end
|
|
3566
|
+
ptrue?(@cell_data_table[row_num]) &&
|
|
3567
|
+
ptrue?(@cell_data_table[row_num][col_num]) && @cell_data_table[row_num][col_num].display_url_string?
|
|
3568
|
+
link.display_on
|
|
3650
3569
|
end
|
|
3651
3570
|
|
|
3652
3571
|
if link.respond_to?(:external_hyper_link)
|
|
@@ -3672,7 +3591,7 @@ EOS
|
|
|
3672
3591
|
#
|
|
3673
3592
|
# Write the <tabColor> element.
|
|
3674
3593
|
#
|
|
3675
|
-
def write_tab_color
|
|
3594
|
+
def write_tab_color # :nodoc:
|
|
3676
3595
|
return unless tab_color?
|
|
3677
3596
|
|
|
3678
3597
|
@writer.empty_tag(
|
|
@@ -3701,7 +3620,7 @@ EOS
|
|
|
3701
3620
|
#
|
|
3702
3621
|
# Write the <sheetProtection> element.
|
|
3703
3622
|
#
|
|
3704
|
-
def write_sheet_protection
|
|
3623
|
+
def write_sheet_protection # :nodoc:
|
|
3705
3624
|
return unless protect?
|
|
3706
3625
|
|
|
3707
3626
|
attributes = []
|
|
@@ -3759,14 +3678,14 @@ EOS
|
|
|
3759
3678
|
#
|
|
3760
3679
|
# Write the <drawing> elements.
|
|
3761
3680
|
#
|
|
3762
|
-
def write_drawings
|
|
3681
|
+
def write_drawings # :nodoc:
|
|
3763
3682
|
increment_rel_id_and_write_r_id('drawing') if drawings?
|
|
3764
3683
|
end
|
|
3765
3684
|
|
|
3766
3685
|
#
|
|
3767
3686
|
# Write the <legacyDrawing> element.
|
|
3768
3687
|
#
|
|
3769
|
-
def write_legacy_drawing
|
|
3688
|
+
def write_legacy_drawing # :nodoc:
|
|
3770
3689
|
increment_rel_id_and_write_r_id('legacyDrawing') if has_vml?
|
|
3771
3690
|
end
|
|
3772
3691
|
|
|
@@ -3779,7 +3698,7 @@ EOS
|
|
|
3779
3698
|
# Increment the relationship id for any drawings or comments.
|
|
3780
3699
|
@rel_count += 1
|
|
3781
3700
|
|
|
3782
|
-
attributes = [
|
|
3701
|
+
attributes = [['r:id', "rId#{@rel_count}"]]
|
|
3783
3702
|
@writer.empty_tag('legacyDrawingHF', attributes)
|
|
3784
3703
|
end
|
|
3785
3704
|
|
|
@@ -3801,7 +3720,7 @@ EOS
|
|
|
3801
3720
|
#
|
|
3802
3721
|
# Write the underline font element.
|
|
3803
3722
|
#
|
|
3804
|
-
def write_underline(writer, underline)
|
|
3723
|
+
def write_underline(writer, underline) # :nodoc:
|
|
3805
3724
|
writer.empty_tag('u', underline_attributes(underline))
|
|
3806
3725
|
end
|
|
3807
3726
|
|
|
@@ -3811,7 +3730,7 @@ EOS
|
|
|
3811
3730
|
def write_table_parts
|
|
3812
3731
|
return if @tables.empty?
|
|
3813
3732
|
|
|
3814
|
-
@writer.tag_elements('tableParts', [
|
|
3733
|
+
@writer.tag_elements('tableParts', [['count', tables_count]]) do
|
|
3815
3734
|
tables_count.times { increment_rel_id_and_write_r_id('tablePart') }
|
|
3816
3735
|
end
|
|
3817
3736
|
end
|
|
@@ -3850,7 +3769,6 @@ EOS
|
|
|
3850
3769
|
def write_ext_list_data_bars
|
|
3851
3770
|
# Write the ext element.
|
|
3852
3771
|
write_ext('{78C0D931-6437-407d-A8EE-F0AAD7539E65}') do
|
|
3853
|
-
|
|
3854
3772
|
@writer.tag_elements('x14:conditionalFormattings') do
|
|
3855
3773
|
# Write each of the Excel 2010 conditional formatting data bar elements.
|
|
3856
3774
|
@data_bars_2010.each do |data_bar|
|
|
@@ -3860,16 +3778,16 @@ EOS
|
|
|
3860
3778
|
end
|
|
3861
3779
|
end
|
|
3862
3780
|
end
|
|
3781
|
+
|
|
3863
3782
|
#
|
|
3864
3783
|
# Write the <x14:conditionalFormatting> element.
|
|
3865
3784
|
#
|
|
3866
3785
|
def write_conditional_formatting_2010(data_bar)
|
|
3867
3786
|
xmlns_xm = 'http://schemas.microsoft.com/office/excel/2006/main'
|
|
3868
3787
|
|
|
3869
|
-
attributes = [
|
|
3788
|
+
attributes = [['xmlns:xm', xmlns_xm]]
|
|
3870
3789
|
|
|
3871
3790
|
@writer.tag_elements('x14:conditionalFormatting', attributes) do
|
|
3872
|
-
|
|
3873
3791
|
# Write the '<x14:cfRule element.
|
|
3874
3792
|
write_x14_cf_rule(data_bar)
|
|
3875
3793
|
|
|
@@ -3881,26 +3799,21 @@ EOS
|
|
|
3881
3799
|
write_x14_cfvo(data_bar[:x14_max_type], data_bar[:max_value])
|
|
3882
3800
|
|
|
3883
3801
|
# Write the x14:borderColor element.
|
|
3884
|
-
|
|
3885
|
-
write_x14_border_color(data_bar[:bar_border_color])
|
|
3886
|
-
end
|
|
3802
|
+
write_x14_border_color(data_bar[:bar_border_color]) unless ptrue?(data_bar[:bar_no_border])
|
|
3887
3803
|
|
|
3888
3804
|
# Write the x14:negativeFillColor element.
|
|
3889
|
-
|
|
3890
|
-
write_x14_negative_fill_color(data_bar[:bar_negative_color])
|
|
3891
|
-
end
|
|
3805
|
+
write_x14_negative_fill_color(data_bar[:bar_negative_color]) unless ptrue?(data_bar[:bar_negative_color_same])
|
|
3892
3806
|
|
|
3893
3807
|
# Write the x14:negativeBorderColor element.
|
|
3894
3808
|
if !ptrue?(data_bar[:bar_no_border]) &&
|
|
3895
3809
|
!ptrue?(data_bar[:bar_negative_border_color_same])
|
|
3896
3810
|
write_x14_negative_border_color(
|
|
3897
|
-
data_bar[:bar_negative_border_color]
|
|
3811
|
+
data_bar[:bar_negative_border_color]
|
|
3812
|
+
)
|
|
3898
3813
|
end
|
|
3899
3814
|
|
|
3900
3815
|
# Write the x14:axisColor element.
|
|
3901
|
-
if data_bar[:bar_axis_position] != 'none'
|
|
3902
|
-
write_x14_axis_color(data_bar[:bar_axis_color])
|
|
3903
|
-
end
|
|
3816
|
+
write_x14_axis_color(data_bar[:bar_axis_color]) if data_bar[:bar_axis_position] != 'none'
|
|
3904
3817
|
|
|
3905
3818
|
# Write closing elements.
|
|
3906
3819
|
@writer.end_tag('x14:dataBar')
|
|
@@ -3915,9 +3828,9 @@ EOS
|
|
|
3915
3828
|
# Write the <cfvo> element.
|
|
3916
3829
|
#
|
|
3917
3830
|
def write_x14_cfvo(type, value)
|
|
3918
|
-
attributes = [
|
|
3831
|
+
attributes = [['type', type]]
|
|
3919
3832
|
|
|
3920
|
-
if %w
|
|
3833
|
+
if %w[min max autoMin autoMax].include?(type)
|
|
3921
3834
|
@writer.empty_tag('x14:cfvo', attributes)
|
|
3922
3835
|
else
|
|
3923
3836
|
@writer.tag_elements('x14:cfvo', attributes) do
|
|
@@ -3939,7 +3852,6 @@ EOS
|
|
|
3939
3852
|
]
|
|
3940
3853
|
|
|
3941
3854
|
@writer.start_tag('x14:cfRule', attributes)
|
|
3942
|
-
|
|
3943
3855
|
end
|
|
3944
3856
|
|
|
3945
3857
|
#
|
|
@@ -3954,32 +3866,22 @@ EOS
|
|
|
3954
3866
|
['maxLength', max_length]
|
|
3955
3867
|
]
|
|
3956
3868
|
|
|
3957
|
-
attributes << ['border', 1]
|
|
3869
|
+
attributes << ['border', 1] unless ptrue?(data_bar[:bar_no_border])
|
|
3958
3870
|
attributes << ['gradient', 0] if ptrue?(data_bar[:bar_solid])
|
|
3959
3871
|
|
|
3960
|
-
if data_bar[:bar_direction] == 'left'
|
|
3961
|
-
|
|
3962
|
-
end
|
|
3963
|
-
if data_bar[:bar_direction] == 'right'
|
|
3964
|
-
attributes << ['direction', 'rightToLeft']
|
|
3965
|
-
end
|
|
3872
|
+
attributes << %w[direction leftToRight] if data_bar[:bar_direction] == 'left'
|
|
3873
|
+
attributes << %w[direction rightToLeft] if data_bar[:bar_direction] == 'right'
|
|
3966
3874
|
|
|
3967
|
-
if ptrue?(data_bar[:bar_negative_color_same])
|
|
3968
|
-
attributes << ['negativeBarColorSameAsPositive', 1]
|
|
3969
|
-
end
|
|
3875
|
+
attributes << ['negativeBarColorSameAsPositive', 1] if ptrue?(data_bar[:bar_negative_color_same])
|
|
3970
3876
|
|
|
3971
3877
|
if !ptrue?(data_bar[:bar_no_border]) &&
|
|
3972
3878
|
!ptrue?(data_bar[:bar_negative_border_color_same])
|
|
3973
3879
|
attributes << ['negativeBarBorderColorSameAsPositive', 0]
|
|
3974
3880
|
end
|
|
3975
3881
|
|
|
3976
|
-
if data_bar[:bar_axis_position] == 'middle'
|
|
3977
|
-
attributes << ['axisPosition', 'middle']
|
|
3978
|
-
end
|
|
3882
|
+
attributes << %w[axisPosition middle] if data_bar[:bar_axis_position] == 'middle'
|
|
3979
3883
|
|
|
3980
|
-
if data_bar[:bar_axis_position] == 'none'
|
|
3981
|
-
attributes << ['axisPosition', 'none']
|
|
3982
|
-
end
|
|
3884
|
+
attributes << %w[axisPosition none] if data_bar[:bar_axis_position] == 'none'
|
|
3983
3885
|
|
|
3984
3886
|
@writer.start_tag('x14:dataBar', attributes)
|
|
3985
3887
|
end
|
|
@@ -3988,7 +3890,7 @@ EOS
|
|
|
3988
3890
|
# Write the <x14:borderColor> element.
|
|
3989
3891
|
#
|
|
3990
3892
|
def write_x14_border_color(rgb)
|
|
3991
|
-
attributes = [
|
|
3893
|
+
attributes = [['rgb', rgb]]
|
|
3992
3894
|
|
|
3993
3895
|
@writer.empty_tag('x14:borderColor', attributes)
|
|
3994
3896
|
end
|
|
@@ -3997,7 +3899,7 @@ EOS
|
|
|
3997
3899
|
# Write the <x14:negativeFillColor> element.
|
|
3998
3900
|
#
|
|
3999
3901
|
def write_x14_negative_fill_color(rgb)
|
|
4000
|
-
attributes = [
|
|
3902
|
+
attributes = [['rgb', rgb]]
|
|
4001
3903
|
|
|
4002
3904
|
@writer.empty_tag('x14:negativeFillColor', attributes)
|
|
4003
3905
|
end
|
|
@@ -4006,7 +3908,7 @@ EOS
|
|
|
4006
3908
|
# Write the <x14:negativeBorderColor> element.
|
|
4007
3909
|
#
|
|
4008
3910
|
def write_x14_negative_border_color(rgb)
|
|
4009
|
-
attributes = [
|
|
3911
|
+
attributes = [['rgb', rgb]]
|
|
4010
3912
|
|
|
4011
3913
|
@writer.empty_tag('x14:negativeBorderColor', attributes)
|
|
4012
3914
|
end
|
|
@@ -4015,7 +3917,7 @@ EOS
|
|
|
4015
3917
|
# Write the <x14:axisColor> element.
|
|
4016
3918
|
#
|
|
4017
3919
|
def write_x14_axis_color(rgb)
|
|
4018
|
-
attributes = [
|
|
3920
|
+
attributes = [['rgb', rgb]]
|
|
4019
3921
|
|
|
4020
3922
|
@writer.empty_tag('x14:axisColor', attributes)
|
|
4021
3923
|
end
|
|
@@ -4026,7 +3928,6 @@ EOS
|
|
|
4026
3928
|
def write_ext_list_sparklines
|
|
4027
3929
|
# Write the ext element.
|
|
4028
3930
|
write_ext('{05C60535-1F16-4fd2-B633-F4F36F0B64E0}') do
|
|
4029
|
-
|
|
4030
3931
|
# Write the x14:sparklineGroups element.
|
|
4031
3932
|
write_sparkline_groups
|
|
4032
3933
|
end
|
|
@@ -4038,7 +3939,7 @@ EOS
|
|
|
4038
3939
|
def write_sparklines(sparkline)
|
|
4039
3940
|
# Write the sparkline elements.
|
|
4040
3941
|
@writer.tag_elements('x14:sparklines') do
|
|
4041
|
-
(0..sparkline[:count]-1).each do |i|
|
|
3942
|
+
(0..sparkline[:count] - 1).each do |i|
|
|
4042
3943
|
range = sparkline[:ranges][i]
|
|
4043
3944
|
location = sparkline[:locations][i]
|
|
4044
3945
|
|
|
@@ -4052,14 +3953,14 @@ EOS
|
|
|
4052
3953
|
|
|
4053
3954
|
def sparkline_groups_attributes # :nodoc:
|
|
4054
3955
|
[
|
|
4055
|
-
|
|
3956
|
+
['xmlns:xm', "#{OFFICE_URL}excel/2006/main"]
|
|
4056
3957
|
]
|
|
4057
3958
|
end
|
|
4058
3959
|
|
|
4059
3960
|
#
|
|
4060
3961
|
# Write the <dataValidations> element.
|
|
4061
3962
|
#
|
|
4062
|
-
def write_data_validations
|
|
3963
|
+
def write_data_validations # :nodoc:
|
|
4063
3964
|
write_some_elements('dataValidations', @validations) do
|
|
4064
3965
|
@validations.each { |validation| validation.write_data_validation(@writer) }
|
|
4065
3966
|
end
|
|
@@ -4068,7 +3969,7 @@ EOS
|
|
|
4068
3969
|
#
|
|
4069
3970
|
# Write the Worksheet conditional formats.
|
|
4070
3971
|
#
|
|
4071
|
-
def write_conditional_formats
|
|
3972
|
+
def write_conditional_formats # :nodoc:
|
|
4072
3973
|
@cond_formats.keys.sort.each do |range|
|
|
4073
3974
|
write_conditional_formatting(range, @cond_formats[range])
|
|
4074
3975
|
end
|
|
@@ -4077,14 +3978,15 @@ EOS
|
|
|
4077
3978
|
#
|
|
4078
3979
|
# Write the <conditionalFormatting> element.
|
|
4079
3980
|
#
|
|
4080
|
-
def write_conditional_formatting(range, cond_formats)
|
|
4081
|
-
@writer.tag_elements('conditionalFormatting', [
|
|
3981
|
+
def write_conditional_formatting(range, cond_formats) # :nodoc:
|
|
3982
|
+
@writer.tag_elements('conditionalFormatting', [['sqref', range]]) do
|
|
4082
3983
|
cond_formats.each { |cond_format| cond_format.write_cf_rule }
|
|
4083
3984
|
end
|
|
4084
3985
|
end
|
|
4085
3986
|
|
|
4086
|
-
def store_data_to_table(cell_data)
|
|
4087
|
-
row
|
|
3987
|
+
def store_data_to_table(cell_data) # :nodoc:
|
|
3988
|
+
row = cell_data.row
|
|
3989
|
+
col = cell_data.col
|
|
4088
3990
|
if @cell_data_table[row]
|
|
4089
3991
|
@cell_data_table[row][col] = cell_data
|
|
4090
3992
|
else
|
|
@@ -4103,44 +4005,40 @@ EOS
|
|
|
4103
4005
|
# optimisation and isn't strictly required. However, it makes comparing
|
|
4104
4006
|
# files easier.
|
|
4105
4007
|
#
|
|
4106
|
-
def calculate_spans
|
|
4008
|
+
def calculate_spans # :nodoc:
|
|
4107
4009
|
span_min = nil
|
|
4108
4010
|
span_max = 0
|
|
4109
4011
|
spans = []
|
|
4110
4012
|
|
|
4111
|
-
(@dim_rowmin
|
|
4112
|
-
if @cell_data_table[row_num]
|
|
4113
|
-
span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max)
|
|
4114
|
-
end
|
|
4013
|
+
(@dim_rowmin..@dim_rowmax).each do |row_num|
|
|
4014
|
+
span_min, span_max = calc_spans(@cell_data_table, row_num, span_min, span_max) if @cell_data_table[row_num]
|
|
4115
4015
|
|
|
4116
4016
|
# Calculate spans for comments.
|
|
4117
|
-
if @comments[row_num]
|
|
4118
|
-
span_min, span_max = calc_spans(@comments, row_num, span_min, span_max)
|
|
4119
|
-
end
|
|
4017
|
+
span_min, span_max = calc_spans(@comments, row_num, span_min, span_max) if @comments[row_num]
|
|
4120
4018
|
|
|
4121
|
-
|
|
4122
|
-
|
|
4123
|
-
|
|
4124
|
-
|
|
4125
|
-
|
|
4126
|
-
|
|
4127
|
-
|
|
4128
|
-
|
|
4129
|
-
|
|
4019
|
+
next unless ((row_num + 1) % 16 == 0) || (row_num == @dim_rowmax)
|
|
4020
|
+
|
|
4021
|
+
span_index = row_num / 16
|
|
4022
|
+
next unless span_min
|
|
4023
|
+
|
|
4024
|
+
span_min += 1
|
|
4025
|
+
span_max += 1
|
|
4026
|
+
spans[span_index] = "#{span_min}:#{span_max}"
|
|
4027
|
+
span_min = nil
|
|
4130
4028
|
end
|
|
4131
4029
|
|
|
4132
4030
|
@row_spans = spans
|
|
4133
4031
|
end
|
|
4134
4032
|
|
|
4135
4033
|
def calc_spans(data, row_num, span_min, span_max)
|
|
4136
|
-
(@dim_colmin
|
|
4034
|
+
(@dim_colmin..@dim_colmax).each do |col_num|
|
|
4137
4035
|
if data[row_num][col_num]
|
|
4138
|
-
if
|
|
4139
|
-
span_min = col_num
|
|
4140
|
-
span_max = col_num
|
|
4141
|
-
else
|
|
4036
|
+
if span_min
|
|
4142
4037
|
span_min = col_num if col_num < span_min
|
|
4143
4038
|
span_max = col_num if col_num > span_max
|
|
4039
|
+
else
|
|
4040
|
+
span_min = col_num
|
|
4041
|
+
span_max = col_num
|
|
4144
4042
|
end
|
|
4145
4043
|
end
|
|
4146
4044
|
end
|
|
@@ -4151,7 +4049,7 @@ EOS
|
|
|
4151
4049
|
# Add a string to the shared string table, if it isn't already there, and
|
|
4152
4050
|
# return the string index.
|
|
4153
4051
|
#
|
|
4154
|
-
def shared_string_index(str)
|
|
4052
|
+
def shared_string_index(str) # :nodoc:
|
|
4155
4053
|
@workbook.shared_string_index(str)
|
|
4156
4054
|
end
|
|
4157
4055
|
|
|
@@ -4161,7 +4059,7 @@ EOS
|
|
|
4161
4059
|
# Convert zero indexed rows and columns to the format required by worksheet
|
|
4162
4060
|
# named ranges, eg, "Sheet1!$A$1:$C$13".
|
|
4163
4061
|
#
|
|
4164
|
-
def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2)
|
|
4062
|
+
def convert_name_area(row_num_1, col_num_1, row_num_2, col_num_2) # :nodoc:
|
|
4165
4063
|
range1 = ''
|
|
4166
4064
|
range2 = ''
|
|
4167
4065
|
row_col_only = false
|
|
@@ -4187,25 +4085,25 @@ EOS
|
|
|
4187
4085
|
end
|
|
4188
4086
|
|
|
4189
4087
|
# A repeated range is only written once (if it isn't a special case).
|
|
4190
|
-
if range1 == range2 && !row_col_only
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4088
|
+
area = if range1 == range2 && !row_col_only
|
|
4089
|
+
range1
|
|
4090
|
+
else
|
|
4091
|
+
"#{range1}:#{range2}"
|
|
4092
|
+
end
|
|
4195
4093
|
|
|
4196
4094
|
# Build up the print area range "Sheet1!$A$1:$C$13".
|
|
4197
4095
|
"#{quote_sheetname(@name)}!#{area}"
|
|
4198
4096
|
end
|
|
4199
4097
|
|
|
4200
|
-
def fit_page?
|
|
4098
|
+
def fit_page? # :nodoc:
|
|
4201
4099
|
@page_setup.fit_page
|
|
4202
4100
|
end
|
|
4203
4101
|
|
|
4204
|
-
def filter_on?
|
|
4102
|
+
def filter_on? # :nodoc:
|
|
4205
4103
|
ptrue?(@filter_on)
|
|
4206
4104
|
end
|
|
4207
4105
|
|
|
4208
|
-
def tab_color?
|
|
4106
|
+
def tab_color? # :nodoc:
|
|
4209
4107
|
ptrue?(@tab_color)
|
|
4210
4108
|
end
|
|
4211
4109
|
|
|
@@ -4217,37 +4115,37 @@ EOS
|
|
|
4217
4115
|
ptrue?(@vba_codename)
|
|
4218
4116
|
end
|
|
4219
4117
|
|
|
4220
|
-
def zoom_scale_normal?
|
|
4118
|
+
def zoom_scale_normal? # :nodoc:
|
|
4221
4119
|
ptrue?(@zoom_scale_normal)
|
|
4222
4120
|
end
|
|
4223
4121
|
|
|
4224
|
-
def page_view?
|
|
4122
|
+
def page_view? # :nodoc:
|
|
4225
4123
|
!!@page_view
|
|
4226
4124
|
end
|
|
4227
4125
|
|
|
4228
|
-
def right_to_left?
|
|
4126
|
+
def right_to_left? # :nodoc:
|
|
4229
4127
|
!!@right_to_left
|
|
4230
4128
|
end
|
|
4231
4129
|
|
|
4232
|
-
def show_zeros?
|
|
4130
|
+
def show_zeros? # :nodoc:
|
|
4233
4131
|
!!@show_zeros
|
|
4234
4132
|
end
|
|
4235
4133
|
|
|
4236
|
-
def protect?
|
|
4134
|
+
def protect? # :nodoc:
|
|
4237
4135
|
!!@protect
|
|
4238
4136
|
end
|
|
4239
4137
|
|
|
4240
|
-
def autofilter_ref?
|
|
4138
|
+
def autofilter_ref? # :nodoc:
|
|
4241
4139
|
!!@autofilter_ref
|
|
4242
4140
|
end
|
|
4243
4141
|
|
|
4244
|
-
def drawings?
|
|
4142
|
+
def drawings? # :nodoc:
|
|
4245
4143
|
!!@drawings
|
|
4246
4144
|
end
|
|
4247
4145
|
|
|
4248
|
-
def remove_white_space(margin)
|
|
4146
|
+
def remove_white_space(margin) # :nodoc:
|
|
4249
4147
|
if margin.respond_to?(:gsub)
|
|
4250
|
-
margin.gsub(/[^\d
|
|
4148
|
+
margin.gsub(/[^\d.]/, '')
|
|
4251
4149
|
else
|
|
4252
4150
|
margin
|
|
4253
4151
|
end
|
|
@@ -4260,15 +4158,15 @@ EOS
|
|
|
4260
4158
|
col_cell = xl_rowcol_to_cell(0, left_col)
|
|
4261
4159
|
|
|
4262
4160
|
@selections <<
|
|
4263
|
-
[
|
|
4264
|
-
[
|
|
4265
|
-
[
|
|
4161
|
+
['topRight', col_cell, col_cell] <<
|
|
4162
|
+
['bottomLeft', row_cell, row_cell] <<
|
|
4163
|
+
['bottomRight', active_cell, sqref]
|
|
4266
4164
|
elsif col > 0
|
|
4267
4165
|
active_pane = 'topRight'
|
|
4268
|
-
@selections << [
|
|
4166
|
+
@selections << ['topRight', active_cell, sqref]
|
|
4269
4167
|
else
|
|
4270
4168
|
active_pane = 'bottomLeft'
|
|
4271
|
-
@selections << [
|
|
4169
|
+
@selections << ['bottomLeft', active_cell, sqref]
|
|
4272
4170
|
end
|
|
4273
4171
|
active_pane
|
|
4274
4172
|
end
|
|
@@ -4279,16 +4177,15 @@ EOS
|
|
|
4279
4177
|
col_letter = col
|
|
4280
4178
|
|
|
4281
4179
|
# Convert col ref to a cell ref and then to a col number.
|
|
4282
|
-
|
|
4180
|
+
_dummy, col = substitute_cellref("#{col}1")
|
|
4283
4181
|
raise "Invalid column '#{col_letter}'" if col >= COL_MAX
|
|
4284
4182
|
end
|
|
4285
4183
|
|
|
4286
4184
|
col_first, col_last = @filter_range
|
|
4287
4185
|
|
|
4288
4186
|
# Reject column if it is outside filter range.
|
|
4289
|
-
if col < col_first or col > col_last
|
|
4290
|
-
|
|
4291
|
-
end
|
|
4187
|
+
raise "Column '#{col}' outside autofilter column range (#{col_first} .. #{col_last})" if col < col_first or col > col_last
|
|
4188
|
+
|
|
4292
4189
|
col
|
|
4293
4190
|
end
|
|
4294
4191
|
|
|
@@ -4300,7 +4197,7 @@ EOS
|
|
|
4300
4197
|
|
|
4301
4198
|
ignore = @ignore_errors
|
|
4302
4199
|
|
|
4303
|
-
@writer.tag_elements('ignoredErrors'
|
|
4200
|
+
@writer.tag_elements('ignoredErrors') do
|
|
4304
4201
|
{
|
|
4305
4202
|
:number_stored_as_text => 'numberStoredAsText',
|
|
4306
4203
|
:eval_error => 'evalError',
|
|
@@ -4312,9 +4209,7 @@ EOS
|
|
|
4312
4209
|
:calculated_column => 'calculatedColumn',
|
|
4313
4210
|
:two_digit_text_year => 'twoDigitTextYear'
|
|
4314
4211
|
}.each do |key, value|
|
|
4315
|
-
if ignore[key]
|
|
4316
|
-
write_ignored_error(value, ignore[key])
|
|
4317
|
-
end
|
|
4212
|
+
write_ignored_error(value, ignore[key]) if ignore[key]
|
|
4318
4213
|
end
|
|
4319
4214
|
end
|
|
4320
4215
|
end
|