write_xlsx 0.86.0 → 0.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +43 -0
- data/Changes +74 -0
- data/LICENSE.txt +1 -1
- data/README.md +4 -4
- data/examples/a_simple.rb +1 -6
- data/examples/chart_combined.rb +3 -1
- data/examples/conditional_format.rb +73 -46
- data/examples/demo.rb +1 -7
- data/examples/hyperlink1.rb +4 -11
- data/lib/write_xlsx/chart.rb +150 -192
- data/lib/write_xlsx/chart/axis.rb +33 -8
- data/lib/write_xlsx/chart/caption.rb +3 -1
- data/lib/write_xlsx/chart/pie.rb +2 -0
- data/lib/write_xlsx/chart/series.rb +37 -17
- data/lib/write_xlsx/format.rb +19 -11
- data/lib/write_xlsx/package/conditional_format.rb +351 -38
- data/lib/write_xlsx/package/content_types.rb +10 -0
- data/lib/write_xlsx/package/core.rb +8 -6
- data/lib/write_xlsx/package/custom.rb +125 -0
- data/lib/write_xlsx/package/packager.rb +26 -0
- data/lib/write_xlsx/package/styles.rb +53 -21
- data/lib/write_xlsx/package/table.rb +25 -4
- data/lib/write_xlsx/utility.rb +317 -32
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +103 -7
- data/lib/write_xlsx/worksheet.rb +280 -30
- data/lib/write_xlsx/worksheet/cell_data.rb +21 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -8
- data/test/chart/test_add_series.rb +11 -1
- data/test/chart/test_process_names.rb +1 -1
- data/test/chart/test_write_a_latin.rb +1 -1
- data/test/chart/test_write_auto.rb +1 -1
- data/test/chart/test_write_ax_id.rb +1 -1
- data/test/chart/test_write_ax_pos.rb +1 -1
- data/test/chart/test_write_cross_ax.rb +1 -1
- data/test/chart/test_write_crosses.rb +1 -1
- data/test/chart/test_write_d_lbls.rb +1 -1
- data/test/chart/test_write_format_code.rb +1 -1
- data/test/chart/test_write_idx.rb +1 -1
- data/test/chart/test_write_label_align.rb +1 -1
- data/test/chart/test_write_label_offset.rb +1 -1
- data/test/chart/test_write_lang.rb +1 -1
- data/test/chart/test_write_layout.rb +1 -1
- data/test/chart/test_write_legend.rb +1 -1
- data/test/chart/test_write_legend_pos.rb +1 -1
- data/test/chart/test_write_major_gridlines.rb +1 -1
- data/test/chart/test_write_marker.rb +1 -1
- data/test/chart/test_write_marker_size.rb +1 -1
- data/test/chart/test_write_marker_value.rb +1 -1
- data/test/chart/test_write_num_cache.rb +1 -1
- data/test/chart/test_write_number_format.rb +2 -3
- data/test/chart/test_write_order.rb +1 -1
- data/test/chart/test_write_orientation.rb +1 -1
- data/test/chart/test_write_page_margins.rb +1 -1
- data/test/chart/test_write_page_setup.rb +1 -1
- data/test/chart/test_write_plot_vis_only.rb +1 -1
- data/test/chart/test_write_pt.rb +1 -1
- data/test/chart/test_write_pt_count.rb +1 -1
- data/test/chart/test_write_series_formula.rb +1 -1
- data/test/chart/test_write_style.rb +1 -1
- data/test/chart/test_write_symbol.rb +1 -1
- data/test/chart/test_write_tick_lbl_pos.rb +1 -1
- data/test/chart/test_write_v.rb +1 -1
- data/test/chartsheet/test_chartsheet01.rb +1 -1
- data/test/drawing/test_drawing_chart_01.rb +1 -1
- data/test/drawing/test_drawing_image_01.rb +1 -1
- data/test/drawing/test_drawing_shape_01.rb +1 -1
- data/test/drawing/test_drawing_shape_02.rb +1 -1
- data/test/drawing/test_drawing_shape_03.rb +1 -1
- data/test/drawing/test_drawing_shape_04.rb +1 -1
- data/test/drawing/test_drawing_shape_05.rb +1 -1
- data/test/drawing/test_drawing_shape_06.rb +1 -1
- data/test/drawing/test_drawing_shape_07.rb +1 -1
- data/test/drawing/test_write_a_graphic_frame_locks.rb +1 -1
- data/test/drawing/test_write_c_chart.rb +1 -1
- data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +1 -1
- data/test/drawing/test_write_c_nv_pr.rb +1 -1
- data/test/drawing/test_write_col.rb +1 -1
- data/test/drawing/test_write_col_off.rb +1 -1
- data/test/drawing/test_write_ext.rb +1 -1
- data/test/drawing/test_write_pos.rb +1 -1
- data/test/drawing/test_write_row.rb +1 -1
- data/test/drawing/test_write_row_off.rb +1 -1
- data/test/drawing/test_write_xfrm_extension.rb +1 -1
- data/test/drawing/test_write_xfrm_offset.rb +1 -1
- data/test/helper.rb +8 -3
- data/test/package/app/test_app01.rb +1 -1
- data/test/package/app/test_app02.rb +1 -1
- data/test/package/app/test_app03.rb +1 -1
- data/test/package/comments/test_write_text_t.rb +1 -1
- data/test/package/content_types/test_content_types.rb +1 -1
- data/test/package/content_types/test_write_default.rb +1 -1
- data/test/package/content_types/test_write_override.rb +1 -1
- data/test/package/core/test_core01.rb +1 -1
- data/test/package/core/test_core02.rb +1 -1
- data/test/package/relationships/test_relationships.rb +1 -1
- data/test/package/relationships/test_sheet_rels.rb +1 -1
- data/test/package/shared_strings/test_shared_strings01.rb +1 -1
- data/test/package/shared_strings/test_shared_strings02.rb +1 -1
- data/test/package/shared_strings/test_write_si.rb +1 -7
- data/test/package/styles/test_styles_01.rb +1 -1
- data/test/package/styles/test_styles_02.rb +1 -1
- data/test/package/styles/test_styles_03.rb +1 -1
- data/test/package/styles/test_styles_04.rb +1 -1
- data/test/package/styles/test_styles_05.rb +1 -1
- data/test/package/styles/test_styles_06.rb +1 -1
- data/test/package/styles/test_styles_07.rb +1 -1
- data/test/package/styles/test_styles_08.rb +1 -1
- data/test/package/styles/test_styles_09.rb +1 -1
- data/test/package/table/test_table01.rb +3 -3
- data/test/package/table/test_table02.rb +2 -2
- data/test/package/table/test_table03.rb +2 -2
- data/test/package/table/test_table04.rb +2 -2
- data/test/package/table/test_table05.rb +2 -2
- data/test/package/table/test_table06.rb +2 -2
- data/test/package/table/test_table07.rb +2 -2
- data/test/package/table/test_table08.rb +2 -2
- data/test/package/table/test_table09.rb +2 -2
- data/test/package/table/test_table10.rb +2 -2
- data/test/package/table/test_table11.rb +2 -2
- data/test/package/table/test_table12.rb +2 -2
- data/test/package/table/test_table13.rb +1 -1
- data/test/package/table/test_write_auto_filter.rb +1 -1
- data/test/package/table/test_write_table_column.rb +1 -1
- data/test/package/table/test_write_table_style_info.rb +1 -1
- data/test/package/vml/test_write_auto_fill.rb +1 -1
- data/test/package/vml/test_write_div.rb +1 -1
- data/test/package/vml/test_write_idmap.rb +1 -1
- data/test/package/vml/test_write_path.rb +1 -1
- data/test/package/vml/test_write_shapelayout.rb +1 -1
- data/test/package/vml/test_write_shapetype.rb +1 -1
- data/test/package/vml/test_write_stroke.rb +1 -1
- data/test/regression/_test_hyperlink31.rb +26 -0
- data/test/regression/disabled_test_vml04.rb +1 -1
- data/test/regression/images/zero_dpi.jpg +0 -0
- data/test/regression/test_array_formula01.rb +1 -1
- data/test/regression/test_array_formula02.rb +1 -1
- data/test/regression/test_autofilter00.rb +1 -1
- data/test/regression/test_autofilter01.rb +1 -1
- data/test/regression/test_autofilter02.rb +1 -1
- data/test/regression/test_autofilter03.rb +1 -1
- data/test/regression/test_autofilter04.rb +1 -1
- data/test/regression/test_autofilter05.rb +1 -1
- data/test/regression/test_autofilter06.rb +1 -1
- data/test/regression/test_autofilter07.rb +1 -1
- data/test/regression/test_button01.rb +1 -1
- data/test/regression/test_button02.rb +1 -1
- data/test/regression/test_button03.rb +1 -1
- data/test/regression/test_button04.rb +1 -1
- data/test/regression/test_button05.rb +1 -1
- data/test/regression/test_button06.rb +1 -1
- data/test/regression/test_button07.rb +1 -1
- data/test/regression/test_button08.rb +1 -1
- data/test/regression/test_button13.rb +1 -1
- data/test/regression/test_button14.rb +1 -1
- data/test/regression/test_chart_area01.rb +1 -1
- data/test/regression/test_chart_area02.rb +1 -1
- data/test/regression/test_chart_area03.rb +1 -1
- data/test/regression/test_chart_area04.rb +1 -1
- data/test/regression/test_chart_axis01.rb +1 -1
- data/test/regression/test_chart_axis02.rb +1 -1
- data/test/regression/test_chart_axis03.rb +1 -1
- data/test/regression/test_chart_axis04.rb +1 -1
- data/test/regression/test_chart_axis05.rb +1 -1
- data/test/regression/test_chart_axis06.rb +1 -1
- data/test/regression/test_chart_axis07.rb +1 -1
- data/test/regression/test_chart_axis08.rb +1 -1
- data/test/regression/test_chart_axis09.rb +1 -1
- data/test/regression/test_chart_axis10.rb +1 -1
- data/test/regression/test_chart_axis11.rb +1 -1
- data/test/regression/test_chart_axis12.rb +1 -1
- data/test/regression/test_chart_axis13.rb +1 -1
- data/test/regression/test_chart_axis14.rb +1 -1
- data/test/regression/test_chart_axis15.rb +1 -1
- data/test/regression/test_chart_axis16.rb +1 -1
- data/test/regression/test_chart_axis17.rb +1 -1
- data/test/regression/test_chart_axis18.rb +1 -1
- data/test/regression/test_chart_axis19.rb +1 -1
- data/test/regression/test_chart_axis20.rb +1 -1
- data/test/regression/test_chart_axis21.rb +1 -1
- data/test/regression/test_chart_axis22.rb +1 -1
- data/test/regression/test_chart_axis23.rb +1 -1
- data/test/regression/test_chart_axis24.rb +1 -1
- data/test/regression/test_chart_axis25.rb +1 -1
- data/test/regression/test_chart_axis26.rb +1 -1
- data/test/regression/test_chart_axis27.rb +1 -1
- data/test/regression/test_chart_axis28.rb +1 -1
- data/test/regression/test_chart_axis29.rb +1 -1
- data/test/regression/test_chart_axis30.rb +1 -1
- data/test/regression/test_chart_axis31.rb +1 -1
- data/test/regression/test_chart_axis32.rb +1 -1
- data/test/regression/test_chart_axis33.rb +1 -1
- data/test/regression/test_chart_axis34.rb +1 -1
- data/test/regression/test_chart_axis35.rb +1 -1
- data/test/regression/test_chart_axis36.rb +1 -1
- data/test/regression/test_chart_axis37.rb +1 -1
- data/test/regression/test_chart_axis38.rb +1 -1
- data/test/regression/test_chart_axis39.rb +1 -1
- data/test/regression/test_chart_axis40.rb +44 -0
- data/test/regression/test_chart_axis41.rb +48 -0
- data/test/regression/test_chart_bar01.rb +1 -1
- data/test/regression/test_chart_bar02.rb +1 -1
- data/test/regression/test_chart_bar03.rb +1 -1
- data/test/regression/test_chart_bar04.rb +1 -1
- data/test/regression/test_chart_bar05.rb +1 -1
- data/test/regression/test_chart_bar06.rb +1 -1
- data/test/regression/test_chart_bar07.rb +1 -1
- data/test/regression/test_chart_bar08.rb +4 -1
- data/test/regression/test_chart_bar09.rb +1 -1
- data/test/regression/test_chart_bar10.rb +1 -1
- data/test/regression/test_chart_bar11.rb +4 -1
- data/test/regression/test_chart_bar12.rb +1 -1
- data/test/regression/test_chart_bar13.rb +1 -1
- data/test/regression/test_chart_bar14.rb +4 -1
- data/test/regression/test_chart_bar15.rb +1 -1
- data/test/regression/test_chart_bar16.rb +1 -1
- data/test/regression/test_chart_bar17.rb +1 -1
- data/test/regression/test_chart_bar18.rb +1 -1
- data/test/regression/test_chart_bar19.rb +1 -1
- data/test/regression/test_chart_bar20.rb +1 -1
- data/test/regression/test_chart_bar21.rb +1 -1
- data/test/regression/test_chart_bar22.rb +1 -1
- data/test/regression/test_chart_bar23.rb +1 -1
- data/test/regression/test_chart_bar24.rb +1 -1
- data/test/regression/test_chart_blank01.rb +1 -1
- data/test/regression/test_chart_blank02.rb +1 -1
- data/test/regression/test_chart_blank03.rb +1 -1
- data/test/regression/test_chart_blank04.rb +1 -1
- data/test/regression/test_chart_blank05.rb +1 -1
- data/test/regression/test_chart_blank06.rb +1 -1
- data/test/regression/test_chart_chartarea01.rb +1 -1
- data/test/regression/test_chart_chartarea02.rb +1 -1
- data/test/regression/test_chart_chartarea03.rb +1 -1
- data/test/regression/test_chart_chartarea04.rb +1 -1
- data/test/regression/test_chart_chartarea05.rb +17 -18
- data/test/regression/test_chart_chartarea06.rb +49 -0
- data/test/regression/test_chart_clustered01.rb +1 -1
- data/test/regression/test_chart_column01.rb +1 -1
- data/test/regression/test_chart_column02.rb +1 -1
- data/test/regression/test_chart_column03.rb +1 -1
- data/test/regression/test_chart_column04.rb +1 -1
- data/test/regression/test_chart_column05.rb +1 -1
- data/test/regression/test_chart_column06.rb +1 -1
- data/test/regression/test_chart_column07.rb +1 -1
- data/test/regression/test_chart_column08.rb +1 -1
- data/test/regression/test_chart_column09.rb +1 -1
- data/test/regression/test_chart_column10.rb +1 -1
- data/test/regression/test_chart_column11.rb +1 -1
- data/test/regression/test_chart_column12.rb +1 -1
- data/test/regression/test_chart_combined01.rb +1 -1
- data/test/regression/test_chart_combined02.rb +1 -1
- data/test/regression/test_chart_combined03.rb +1 -1
- data/test/regression/test_chart_combined04.rb +1 -1
- data/test/regression/test_chart_combined05.rb +1 -1
- data/test/regression/test_chart_combined06.rb +1 -1
- data/test/regression/test_chart_combined07.rb +1 -1
- data/test/regression/test_chart_combined08.rb +1 -1
- data/test/regression/test_chart_combined09.rb +50 -0
- data/test/regression/test_chart_crossing01.rb +1 -1
- data/test/regression/test_chart_crossing02.rb +1 -1
- data/test/regression/test_chart_crossing03.rb +1 -1
- data/test/regression/test_chart_crossing04.rb +1 -1
- data/test/regression/test_chart_data_labels01.rb +1 -1
- data/test/regression/test_chart_data_labels02.rb +1 -1
- data/test/regression/test_chart_data_labels03.rb +1 -1
- data/test/regression/test_chart_data_labels04.rb +1 -1
- data/test/regression/test_chart_data_labels05.rb +1 -1
- data/test/regression/test_chart_data_labels06.rb +1 -1
- data/test/regression/test_chart_data_labels07.rb +1 -1
- data/test/regression/test_chart_data_labels08.rb +1 -1
- data/test/regression/test_chart_data_labels09.rb +1 -1
- data/test/regression/test_chart_data_labels10.rb +1 -1
- data/test/regression/test_chart_data_labels11.rb +1 -1
- data/test/regression/test_chart_data_labels12.rb +1 -1
- data/test/regression/test_chart_data_labels13.rb +1 -1
- data/test/regression/test_chart_data_labels14.rb +1 -1
- data/test/regression/test_chart_data_labels15.rb +1 -1
- data/test/regression/test_chart_data_labels16.rb +1 -1
- data/test/regression/test_chart_data_labels17.rb +1 -1
- data/test/regression/test_chart_data_labels18.rb +1 -1
- data/test/regression/test_chart_data_labels19.rb +1 -1
- data/test/regression/test_chart_data_labels20.rb +1 -1
- data/test/regression/test_chart_data_labels21.rb +1 -1
- data/test/regression/test_chart_data_labels22.rb +1 -1
- data/test/regression/test_chart_data_labels23.rb +1 -1
- data/test/regression/test_chart_data_labels24.rb +1 -1
- data/test/regression/test_chart_data_labels25.rb +61 -0
- data/test/regression/test_chart_date01.rb +1 -1
- data/test/regression/test_chart_date02.rb +1 -1
- data/test/regression/test_chart_date03.rb +1 -1
- data/test/regression/test_chart_date04.rb +1 -1
- data/test/regression/test_chart_date05.rb +1 -1
- data/test/regression/test_chart_display_units01.rb +1 -1
- data/test/regression/test_chart_display_units02.rb +1 -1
- data/test/regression/test_chart_display_units03.rb +1 -1
- data/test/regression/test_chart_display_units04.rb +1 -1
- data/test/regression/test_chart_display_units05.rb +1 -1
- data/test/regression/test_chart_display_units06.rb +1 -1
- data/test/regression/test_chart_display_units07.rb +1 -1
- data/test/regression/test_chart_display_units08.rb +1 -1
- data/test/regression/test_chart_display_units09.rb +1 -1
- data/test/regression/test_chart_display_units10.rb +1 -1
- data/test/regression/test_chart_display_units11.rb +1 -1
- data/test/regression/test_chart_display_units12.rb +1 -1
- data/test/regression/test_chart_doughnut01.rb +1 -1
- data/test/regression/test_chart_doughnut02.rb +1 -1
- data/test/regression/test_chart_doughnut03.rb +1 -1
- data/test/regression/test_chart_doughnut04.rb +1 -1
- data/test/regression/test_chart_doughnut05.rb +1 -1
- data/test/regression/test_chart_doughnut06.rb +1 -1
- data/test/regression/test_chart_drop_lines01.rb +1 -1
- data/test/regression/test_chart_drop_lines02.rb +1 -1
- data/test/regression/test_chart_drop_lines03.rb +1 -1
- data/test/regression/test_chart_drop_lines04.rb +1 -1
- data/test/regression/test_chart_errorbars01.rb +1 -1
- data/test/regression/test_chart_errorbars02.rb +1 -1
- data/test/regression/test_chart_errorbars03.rb +1 -1
- data/test/regression/test_chart_errorbars04.rb +1 -1
- data/test/regression/test_chart_errorbars05.rb +1 -1
- data/test/regression/test_chart_errorbars06.rb +1 -1
- data/test/regression/test_chart_errorbars07.rb +1 -1
- data/test/regression/test_chart_errorbars08.rb +1 -1
- data/test/regression/test_chart_errorbars09.rb +1 -1
- data/test/regression/test_chart_errorbars10.rb +1 -1
- data/test/regression/test_chart_font01.rb +1 -1
- data/test/regression/test_chart_font02.rb +1 -1
- data/test/regression/test_chart_font03.rb +1 -1
- data/test/regression/test_chart_font04.rb +1 -1
- data/test/regression/test_chart_font05.rb +1 -1
- data/test/regression/test_chart_font06.rb +1 -1
- data/test/regression/test_chart_font07.rb +1 -1
- data/test/regression/test_chart_font08.rb +1 -1
- data/test/regression/test_chart_font09.rb +1 -1
- data/test/regression/test_chart_format01.rb +1 -1
- data/test/regression/test_chart_format02.rb +1 -1
- data/test/regression/test_chart_format03.rb +1 -1
- data/test/regression/test_chart_format04.rb +1 -1
- data/test/regression/test_chart_format05.rb +1 -1
- data/test/regression/test_chart_format06.rb +1 -1
- data/test/regression/test_chart_format07.rb +1 -1
- data/test/regression/test_chart_format08.rb +1 -1
- data/test/regression/test_chart_format09.rb +1 -1
- data/test/regression/test_chart_format10.rb +1 -1
- data/test/regression/test_chart_format11.rb +1 -1
- data/test/regression/test_chart_format12.rb +1 -1
- data/test/regression/test_chart_format13.rb +1 -1
- data/test/regression/test_chart_format14.rb +1 -1
- data/test/regression/test_chart_format15.rb +1 -1
- data/test/regression/test_chart_format16.rb +1 -1
- data/test/regression/test_chart_format17.rb +1 -1
- data/test/regression/test_chart_format18.rb +1 -1
- data/test/regression/test_chart_format19.rb +1 -1
- data/test/regression/test_chart_format20.rb +1 -1
- data/test/regression/test_chart_format21.rb +47 -0
- data/test/regression/test_chart_format22.rb +47 -0
- data/test/regression/test_chart_format23.rb +47 -0
- data/test/regression/test_chart_format24.rb +52 -0
- data/test/regression/test_chart_format25.rb +46 -0
- data/test/regression/test_chart_format26.rb +48 -0
- data/test/regression/test_chart_format27.rb +58 -0
- data/test/regression/test_chart_format28.rb +52 -0
- data/test/regression/test_chart_format29.rb +59 -0
- data/test/regression/test_chart_format30.rb +53 -0
- data/test/regression/test_chart_format31.rb +60 -0
- data/test/regression/test_chart_gap01.rb +1 -1
- data/test/regression/test_chart_gap02.rb +1 -1
- data/test/regression/test_chart_gap03.rb +1 -1
- data/test/regression/test_chart_gap04.rb +1 -1
- data/test/regression/test_chart_gap05.rb +1 -1
- data/test/regression/test_chart_gradient01.rb +1 -1
- data/test/regression/test_chart_gradient02.rb +1 -1
- data/test/regression/test_chart_gradient03.rb +1 -1
- data/test/regression/test_chart_gradient04.rb +1 -1
- data/test/regression/test_chart_gradient05.rb +1 -1
- data/test/regression/test_chart_gradient06.rb +1 -1
- data/test/regression/test_chart_gradient07.rb +1 -1
- data/test/regression/test_chart_gradient08.rb +1 -1
- data/test/regression/test_chart_gradient09.rb +1 -1
- data/test/regression/test_chart_gradient10.rb +1 -1
- data/test/regression/test_chart_gradient11.rb +1 -1
- data/test/regression/test_chart_gradient12.rb +1 -1
- data/test/regression/test_chart_gradient13.rb +1 -1
- data/test/regression/test_chart_gridlines01.rb +1 -1
- data/test/regression/test_chart_gridlines02.rb +1 -1
- data/test/regression/test_chart_gridlines03.rb +1 -1
- data/test/regression/test_chart_gridlines04.rb +5 -4
- data/test/regression/test_chart_gridlines05.rb +1 -1
- data/test/regression/test_chart_gridlines06.rb +1 -1
- data/test/regression/test_chart_gridlines07.rb +1 -1
- data/test/regression/test_chart_gridlines08.rb +9 -12
- data/test/regression/test_chart_gridlines09.rb +1 -1
- data/test/regression/test_chart_layout01.rb +1 -1
- data/test/regression/test_chart_layout02.rb +1 -1
- data/test/regression/test_chart_layout03.rb +1 -1
- data/test/regression/test_chart_layout04.rb +1 -1
- data/test/regression/test_chart_layout05.rb +1 -1
- data/test/regression/test_chart_layout06.rb +1 -1
- data/test/regression/test_chart_layout07.rb +1 -1
- data/test/regression/test_chart_layout08.rb +1 -1
- data/test/regression/test_chart_legend01.rb +1 -1
- data/test/regression/test_chart_legend02.rb +1 -1
- data/test/regression/test_chart_line01.rb +1 -1
- data/test/regression/test_chart_line02.rb +1 -1
- data/test/regression/test_chart_line03.rb +1 -1
- data/test/regression/test_chart_line04.rb +1 -1
- data/test/regression/test_chart_name01.rb +1 -1
- data/test/regression/test_chart_name02.rb +1 -1
- data/test/regression/test_chart_name03.rb +1 -1
- data/test/regression/test_chart_order01.rb +1 -1
- data/test/regression/test_chart_order02.rb +1 -1
- data/test/regression/test_chart_order03.rb +1 -1
- data/test/regression/test_chart_pattern01.rb +49 -0
- data/test/regression/test_chart_pattern02.rb +106 -0
- data/test/regression/test_chart_pattern03.rb +105 -0
- data/test/regression/test_chart_pattern04.rb +105 -0
- data/test/regression/test_chart_pattern05.rb +105 -0
- data/test/regression/test_chart_pattern06.rb +105 -0
- data/test/regression/test_chart_pattern07.rb +105 -0
- data/test/regression/test_chart_pattern08.rb +105 -0
- data/test/regression/test_chart_pattern09.rb +57 -0
- data/test/regression/test_chart_pattern10.rb +57 -0
- data/test/regression/test_chart_pie01.rb +1 -1
- data/test/regression/test_chart_pie02.rb +1 -1
- data/test/regression/test_chart_pie03.rb +1 -1
- data/test/regression/test_chart_pie04.rb +1 -1
- data/test/regression/test_chart_pie05.rb +1 -1
- data/test/regression/test_chart_points01.rb +1 -1
- data/test/regression/test_chart_points02.rb +1 -1
- data/test/regression/test_chart_points03.rb +1 -1
- data/test/regression/test_chart_points04.rb +1 -1
- data/test/regression/test_chart_points05.rb +1 -1
- data/test/regression/test_chart_points06.rb +1 -1
- data/test/regression/test_chart_radar01.rb +1 -1
- data/test/regression/test_chart_radar02.rb +1 -1
- data/test/regression/test_chart_radar03.rb +1 -1
- data/test/regression/test_chart_scatter01.rb +1 -1
- data/test/regression/test_chart_scatter02.rb +1 -1
- data/test/regression/test_chart_scatter03.rb +1 -1
- data/test/regression/test_chart_scatter04.rb +1 -1
- data/test/regression/test_chart_scatter05.rb +1 -1
- data/test/regression/test_chart_scatter06.rb +1 -1
- data/test/regression/test_chart_scatter07.rb +1 -1
- data/test/regression/test_chart_scatter08.rb +1 -1
- data/test/regression/test_chart_scatter09.rb +1 -1
- data/test/regression/test_chart_scatter10.rb +1 -1
- data/test/regression/test_chart_scatter11.rb +1 -1
- data/test/regression/test_chart_scatter12.rb +1 -1
- data/test/regression/test_chart_scatter13.rb +1 -1
- data/test/regression/test_chart_scatter14.rb +1 -1
- data/test/regression/test_chart_scatter15.rb +1 -1
- data/test/regression/test_chart_size01.rb +1 -1
- data/test/regression/test_chart_size02.rb +1 -1
- data/test/regression/test_chart_size03.rb +1 -1
- data/test/regression/test_chart_size04.rb +1 -1
- data/test/regression/test_chart_size05.rb +1 -1
- data/test/regression/test_chart_sparse01.rb +1 -1
- data/test/regression/test_chart_stock01.rb +1 -1
- data/test/regression/test_chart_stock02.rb +1 -1
- data/test/regression/test_chart_str01.rb +1 -1
- data/test/regression/test_chart_str02.rb +1 -1
- data/test/regression/test_chart_table01.rb +1 -1
- data/test/regression/test_chart_table02.rb +1 -1
- data/test/regression/test_chart_table03.rb +56 -0
- data/test/regression/test_chart_title01.rb +1 -1
- data/test/regression/test_chart_title02.rb +1 -1
- data/test/regression/test_chartsheet01.rb +1 -1
- data/test/regression/test_chartsheet02.rb +1 -1
- data/test/regression/test_chartsheet03.rb +1 -1
- data/test/regression/test_chartsheet04.rb +1 -1
- data/test/regression/test_chartsheet05.rb +1 -1
- data/test/regression/test_chartsheet06.rb +1 -1
- data/test/regression/test_chartsheet07.rb +1 -1
- data/test/regression/test_chartsheet08.rb +1 -1
- data/test/regression/test_chartsheet09.rb +1 -1
- data/test/regression/test_comment01.rb +1 -1
- data/test/regression/test_comment02.rb +1 -1
- data/test/regression/test_comment03.rb +1 -1
- data/test/regression/test_comment04.rb +1 -1
- data/test/regression/test_comment06.rb +1 -1
- data/test/regression/test_comment07.rb +1 -1
- data/test/regression/test_comment08.rb +1 -1
- data/test/regression/test_comment09.rb +1 -1
- data/test/regression/test_comment10.rb +1 -1
- data/test/regression/test_comment11.rb +1 -1
- data/test/regression/test_comment12.rb +1 -1
- data/test/regression/test_cond_format01.rb +1 -1
- data/test/regression/test_cond_format02.rb +1 -1
- data/test/regression/test_cond_format03.rb +1 -1
- data/test/regression/test_cond_format04.rb +1 -1
- data/test/regression/test_cond_format05.rb +1 -1
- data/test/regression/test_cond_format06.rb +1 -1
- data/test/regression/test_cond_format07.rb +1 -1
- data/test/regression/test_cond_format08.rb +1 -1
- data/test/regression/test_cond_format10.rb +1 -1
- data/test/regression/test_cond_format11.rb +1 -1
- data/test/regression/test_cond_format12.rb +1 -1
- data/test/regression/test_cond_format13.rb +1 -1
- data/test/regression/test_cond_format14.rb +42 -0
- data/test/regression/test_cond_format15.rb +53 -0
- data/test/regression/test_cond_format16.rb +53 -0
- data/test/regression/test_cond_format17.rb +37 -0
- data/test/regression/test_cond_format18.rb +136 -0
- data/test/regression/test_custom_colors01.rb +1 -1
- data/test/regression/test_data_validation01.rb +1 -1
- data/test/regression/test_data_validation02.rb +1 -1
- data/test/regression/test_data_validation03.rb +1 -1
- data/test/regression/test_data_validation04.rb +2 -2
- data/test/regression/test_data_validation05.rb +2 -2
- data/test/regression/test_data_validation08.rb +2 -2
- data/test/regression/test_date_1904_01.rb +2 -2
- data/test/regression/test_date_1904_02.rb +1 -1
- data/test/regression/test_date_examples01.rb +1 -1
- data/test/regression/test_default_format01.rb +1 -1
- data/test/regression/test_default_row01.rb +1 -1
- data/test/regression/test_default_row02.rb +1 -1
- data/test/regression/test_default_row03.rb +1 -1
- data/test/regression/test_default_row04.rb +1 -1
- data/test/regression/test_default_row05.rb +32 -0
- data/test/regression/test_defined_name01.rb +1 -1
- data/test/regression/test_defined_name02.rb +1 -1
- data/test/regression/test_defined_name03.rb +1 -1
- data/test/regression/test_defined_name04.rb +15 -15
- data/test/regression/test_escapes01.rb +1 -1
- data/test/regression/test_escapes02.rb +1 -1
- data/test/regression/test_escapes03.rb +1 -1
- data/test/regression/test_escapes04.rb +4 -1
- data/test/regression/test_escapes05.rb +4 -1
- data/test/regression/test_escapes06.rb +1 -1
- data/test/regression/test_escapes07.rb +4 -1
- data/test/regression/test_escapes08.rb +4 -1
- data/test/regression/test_excel2003_style01.rb +1 -1
- data/test/regression/test_excel2003_style02.rb +1 -1
- data/test/regression/test_excel2003_style03.rb +1 -1
- data/test/regression/test_excel2003_style04.rb +1 -1
- data/test/regression/test_excel2003_style05.rb +1 -1
- data/test/regression/test_excel2003_style06.rb +1 -1
- data/test/regression/test_excel2003_style07.rb +1 -1
- data/test/regression/test_excel2003_style08.rb +1 -1
- data/test/regression/test_firstsheet01.rb +1 -1
- data/test/regression/test_fit_to_pages01.rb +1 -1
- data/test/regression/test_fit_to_pages02.rb +1 -1
- data/test/regression/test_fit_to_pages03.rb +1 -1
- data/test/regression/test_fit_to_pages04.rb +1 -1
- data/test/regression/test_fit_to_pages05.rb +1 -1
- data/test/regression/test_format01.rb +1 -1
- data/test/regression/test_format02.rb +1 -1
- data/test/regression/test_format03.rb +1 -1
- data/test/regression/test_format04.rb +1 -1
- data/test/regression/test_format05.rb +1 -1
- data/test/regression/test_format11.rb +1 -1
- data/test/regression/test_format12.rb +1 -1
- data/test/regression/test_format13.rb +31 -0
- data/test/regression/test_format14.rb +26 -0
- data/test/regression/test_formula_results01.rb +1 -1
- data/test/regression/test_gridlines01.rb +1 -1
- data/test/regression/test_header01.rb +1 -1
- data/test/regression/test_header02.rb +1 -1
- data/test/regression/test_header03.rb +1 -1
- data/test/regression/test_header_image01.rb +1 -1
- data/test/regression/test_header_image02.rb +1 -1
- data/test/regression/test_header_image03.rb +1 -1
- data/test/regression/test_header_image04.rb +1 -1
- data/test/regression/test_header_image05.rb +1 -1
- data/test/regression/test_header_image06.rb +1 -1
- data/test/regression/test_header_image07.rb +1 -1
- data/test/regression/test_header_image08.rb +1 -1
- data/test/regression/test_header_image09.rb +1 -1
- data/test/regression/test_header_image10.rb +1 -1
- data/test/regression/test_header_image11.rb +1 -1
- data/test/regression/test_header_image12.rb +1 -1
- data/test/regression/test_header_image13.rb +1 -1
- data/test/regression/test_header_image14.rb +1 -1
- data/test/regression/test_hide01.rb +1 -1
- data/test/regression/test_hyperlink01.rb +4 -1
- data/test/regression/test_hyperlink02.rb +4 -1
- data/test/regression/test_hyperlink03.rb +5 -1
- data/test/regression/test_hyperlink04.rb +4 -1
- data/test/regression/test_hyperlink05.rb +4 -1
- data/test/regression/test_hyperlink06.rb +4 -1
- data/test/regression/test_hyperlink07.rb +4 -1
- data/test/regression/test_hyperlink08.rb +4 -1
- data/test/regression/test_hyperlink09.rb +4 -1
- data/test/regression/test_hyperlink10.rb +4 -1
- data/test/regression/test_hyperlink11.rb +4 -1
- data/test/regression/test_hyperlink12.rb +4 -1
- data/test/regression/test_hyperlink13.rb +4 -1
- data/test/regression/test_hyperlink14.rb +4 -1
- data/test/regression/test_hyperlink15.rb +4 -1
- data/test/regression/test_hyperlink16.rb +4 -1
- data/test/regression/test_hyperlink17.rb +4 -1
- data/test/regression/test_hyperlink18.rb +4 -1
- data/test/regression/test_hyperlink20.rb +4 -1
- data/test/regression/test_hyperlink21.rb +4 -1
- data/test/regression/test_hyperlink22.rb +4 -1
- data/test/regression/test_hyperlink23.rb +4 -1
- data/test/regression/test_hyperlink24.rb +4 -1
- data/test/regression/test_hyperlink25.rb +30 -0
- data/test/regression/test_hyperlink26.rb +30 -0
- data/test/regression/test_hyperlink27.rb +27 -0
- data/test/regression/test_hyperlink28.rb +50 -0
- data/test/regression/test_hyperlink29.rb +27 -0
- data/test/regression/test_hyperlink30.rb +36 -0
- data/test/regression/test_image01.rb +1 -1
- data/test/regression/test_image02.rb +1 -1
- data/test/regression/test_image03.rb +1 -1
- data/test/regression/test_image04.rb +1 -1
- data/test/regression/test_image05.rb +1 -1
- data/test/regression/test_image06.rb +1 -1
- data/test/regression/test_image07.rb +1 -1
- data/test/regression/test_image08.rb +1 -1
- data/test/regression/test_image09.rb +1 -1
- data/test/regression/test_image10.rb +1 -1
- data/test/regression/test_image11.rb +1 -1
- data/test/regression/test_image12.rb +1 -1
- data/test/regression/test_image13.rb +1 -1
- data/test/regression/test_image14.rb +1 -1
- data/test/regression/test_image15.rb +1 -1
- data/test/regression/test_image16.rb +1 -1
- data/test/regression/test_image17.rb +1 -1
- data/test/regression/test_image18.rb +1 -1
- data/test/regression/test_image19.rb +1 -1
- data/test/regression/test_image22.rb +1 -1
- data/test/regression/test_image23.rb +1 -1
- data/test/regression/test_image24.rb +1 -1
- data/test/regression/test_image25.rb +1 -1
- data/test/regression/test_image26.rb +1 -1
- data/test/regression/test_image27.rb +1 -1
- data/test/regression/test_image28.rb +2 -2
- data/test/regression/test_image29.rb +2 -2
- data/test/regression/test_image30.rb +1 -1
- data/test/regression/test_image31.rb +1 -1
- data/test/regression/test_image32.rb +1 -1
- data/test/regression/test_image33.rb +2 -2
- data/test/regression/test_image35.rb +26 -0
- data/test/regression/test_landscape01.rb +1 -1
- data/test/regression/test_macro01.rb +1 -1
- data/test/regression/test_merge_cells01.rb +1 -1
- data/test/regression/test_merge_range01.rb +1 -1
- data/test/regression/test_merge_range02.rb +1 -1
- data/test/regression/test_merge_range03.rb +1 -1
- data/test/regression/test_merge_range04.rb +1 -1
- data/test/regression/test_merge_range05.rb +1 -1
- data/test/regression/test_outline01.rb +1 -1
- data/test/regression/test_outline02.rb +1 -1
- data/test/regression/test_outline03.rb +1 -1
- data/test/regression/test_outline04.rb +1 -1
- data/test/regression/test_outline05.rb +1 -1
- data/test/regression/test_outline06.rb +1 -1
- data/test/regression/test_page_breaks01.rb +1 -1
- data/test/regression/test_page_breaks02.rb +1 -1
- data/test/regression/test_page_breaks03.rb +1 -1
- data/test/regression/test_page_breaks04.rb +1 -1
- data/test/regression/test_page_breaks05.rb +1 -1
- data/test/regression/test_page_breaks06.rb +1 -1
- data/test/regression/test_page_view01.rb +1 -1
- data/test/regression/test_panes01.rb +1 -1
- data/test/regression/test_print_across01.rb +1 -1
- data/test/regression/test_print_area01.rb +1 -1
- data/test/regression/test_print_area02.rb +1 -1
- data/test/regression/test_print_area03.rb +1 -1
- data/test/regression/test_print_area04.rb +1 -1
- data/test/regression/test_print_area05.rb +1 -1
- data/test/regression/test_print_area06.rb +1 -1
- data/test/regression/test_print_area07.rb +1 -1
- data/test/regression/test_print_options01.rb +1 -1
- data/test/regression/test_print_options02.rb +1 -1
- data/test/regression/test_print_options03.rb +1 -1
- data/test/regression/test_print_options04.rb +1 -1
- data/test/regression/test_print_options05.rb +1 -1
- data/test/regression/test_print_options06.rb +1 -1
- data/test/regression/test_print_options07.rb +1 -1
- data/test/regression/test_print_scale01.rb +1 -1
- data/test/regression/test_print_scale02.rb +1 -1
- data/test/regression/test_properties01.rb +2 -5
- data/test/regression/test_properties02.rb +2 -5
- data/test/regression/test_properties03.rb +26 -0
- data/test/regression/test_properties04.rb +61 -0
- data/test/regression/test_properties05.rb +30 -0
- data/test/regression/test_protect01.rb +1 -1
- data/test/regression/test_protect02.rb +1 -1
- data/test/regression/test_protect03.rb +1 -1
- data/test/regression/test_quote_name01.rb +1 -1
- data/test/regression/test_quote_name03.rb +1 -1
- data/test/regression/test_quote_name04.rb +1 -1
- data/test/regression/test_repeat01.rb +1 -1
- data/test/regression/test_repeat02.rb +1 -1
- data/test/regression/test_repeat03.rb +1 -1
- data/test/regression/test_repeat04.rb +1 -1
- data/test/regression/test_repeat05.rb +1 -1
- data/test/regression/test_rich_string01.rb +1 -1
- data/test/regression/test_rich_string02.rb +1 -1
- data/test/regression/test_rich_string03.rb +1 -1
- data/test/regression/test_rich_string04.rb +1 -1
- data/test/regression/test_rich_string05.rb +1 -1
- data/test/regression/test_rich_string06.rb +1 -1
- data/test/regression/test_rich_string07.rb +1 -1
- data/test/regression/test_rich_string08.rb +1 -1
- data/test/regression/test_rich_string09.rb +1 -1
- data/test/regression/test_rich_string10.rb +1 -1
- data/test/regression/test_rich_string11.rb +1 -1
- data/test/regression/test_rich_string12.rb +1 -1
- data/test/regression/test_row_col_format01.rb +1 -1
- data/test/regression/test_row_col_format02.rb +1 -1
- data/test/regression/test_row_col_format03.rb +1 -1
- data/test/regression/test_row_col_format04.rb +1 -1
- data/test/regression/test_row_col_format05.rb +1 -1
- data/test/regression/test_row_col_format06.rb +1 -1
- data/test/regression/test_row_col_format07.rb +1 -1
- data/test/regression/test_row_col_format08.rb +1 -1
- data/test/regression/test_row_col_format09.rb +1 -1
- data/test/regression/test_row_col_format10.rb +1 -1
- data/test/regression/test_row_col_format11.rb +1 -1
- data/test/regression/test_row_col_format12.rb +1 -1
- data/test/regression/test_row_col_format13.rb +1 -1
- data/test/regression/test_row_col_format14.rb +1 -1
- data/test/regression/test_selection01.rb +1 -1
- data/test/regression/test_selection02.rb +1 -1
- data/test/regression/test_set_column01.rb +1 -1
- data/test/regression/test_set_column02.rb +1 -1
- data/test/regression/test_set_column03.rb +1 -1
- data/test/regression/test_set_column04.rb +1 -1
- data/test/regression/test_set_column05.rb +1 -1
- data/test/regression/test_set_column06.rb +1 -1
- data/test/regression/test_set_column07.rb +1 -1
- data/test/regression/test_set_column08.rb +1 -1
- data/test/regression/test_set_column09.rb +1 -1
- data/test/regression/test_set_print_scale01.rb +1 -1
- data/test/regression/test_set_start_page01.rb +1 -1
- data/test/regression/test_set_start_page02.rb +1 -1
- data/test/regression/test_set_start_page03.rb +1 -1
- data/test/regression/test_shape01.rb +1 -1
- data/test/regression/test_shape02.rb +1 -1
- data/test/regression/test_shape03.rb +1 -1
- data/test/regression/test_shape04.rb +1 -1
- data/test/regression/test_shape_connect01.rb +1 -1
- data/test/regression/test_shape_connect02.rb +1 -1
- data/test/regression/test_shape_connect03.rb +1 -1
- data/test/regression/test_shape_connect04.rb +1 -1
- data/test/regression/test_shape_scale01.rb +1 -1
- data/test/regression/test_shape_stencil01.rb +1 -1
- data/test/regression/test_shared_strings01.rb +1 -1
- data/test/regression/test_shared_strings02.rb +1 -1
- data/test/regression/test_simple01.rb +1 -1
- data/test/regression/test_simple02.rb +1 -1
- data/test/regression/test_simple03.rb +1 -1
- data/test/regression/test_simple04.rb +1 -1
- data/test/regression/test_simple05.rb +1 -1
- data/test/regression/test_tab_color01.rb +1 -1
- data/test/regression/test_table01.rb +1 -1
- data/test/regression/test_table02.rb +1 -1
- data/test/regression/test_table03.rb +4 -1
- data/test/regression/test_table04.rb +4 -1
- data/test/regression/test_table05.rb +4 -1
- data/test/regression/test_table06.rb +4 -1
- data/test/regression/test_table07.rb +1 -1
- data/test/regression/test_table08.rb +1 -1
- data/test/regression/test_table09.rb +1 -1
- data/test/regression/test_table10.rb +1 -1
- data/test/regression/test_table11.rb +1 -1
- data/test/regression/test_table12.rb +1 -1
- data/test/regression/test_table13.rb +1 -1
- data/test/regression/test_table14.rb +1 -1
- data/test/regression/test_table15.rb +1 -1
- data/test/regression/test_table16.rb +1 -1
- data/test/regression/test_table17.rb +1 -1
- data/test/regression/test_table20.rb +34 -0
- data/test/regression/test_table21.rb +36 -0
- data/test/regression/test_table22.rb +32 -0
- data/test/regression/test_tutorial01.rb +1 -1
- data/test/regression/test_tutorial02.rb +1 -1
- data/test/regression/test_tutorial03.rb +1 -1
- data/test/regression/test_types02.rb +25 -0
- data/test/regression/test_types08.rb +31 -0
- data/test/regression/test_update_range_format_with_params.rb +1 -1
- data/test/regression/test_urls_as_strings.rb +1 -1
- data/test/regression/test_utf8_01.rb +1 -1
- data/test/regression/test_utf8_03.rb +1 -1
- data/test/regression/test_utf8_04.rb +1 -1
- data/test/regression/test_utf8_05.rb +1 -1
- data/test/regression/test_utf8_06.rb +1 -1
- data/test/regression/test_utf8_07.rb +1 -1
- data/test/regression/test_utf8_08.rb +1 -1
- data/test/regression/test_utf8_09.rb +1 -1
- data/test/regression/test_utf8_10.rb +1 -1
- data/test/regression/test_utf8_11.rb +23 -0
- data/test/regression/test_vml01.rb +1 -1
- data/test/regression/test_vml02.rb +1 -1
- data/test/regression/test_vml03.rb +1 -1
- 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_chartarea05.xlsx +0 -0
- data/test/regression/xlsx_files/chart_chartarea06.xlsx +0 -0
- data/test/regression/xlsx_files/chart_combined09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_data_labels25.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_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_table03.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/date_1904_01.xlsx +0 -0
- data/test/regression/xlsx_files/default_row05.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/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/image35.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/table21.xlsx +0 -0
- data/test/regression/xlsx_files/table22.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/utf8_11.xlsx +0 -0
- data/test/test_delete_files.rb +3 -3
- data/test/test_example_match.rb +1 -1
- data/test/test_option_hash_for_workbook.rb +1 -1
- data/test/test_xml_writer_simple.rb +1 -1
- data/test/workbook/test_define_name.rb +1 -1
- data/test/workbook/test_get_chart_range.rb +3 -5
- data/test/workbook/test_sort_defined_names.rb +1 -1
- data/test/workbook/test_workbook_01.rb +1 -1
- data/test/workbook/test_workbook_02.rb +1 -1
- data/test/workbook/test_workbook_03.rb +1 -1
- data/test/workbook/test_worksheet_by_name.rb +35 -0
- data/test/workbook/test_write_calc_pr.rb +1 -1
- data/test/workbook/test_write_defined_name.rb +1 -1
- data/test/workbook/test_write_defined_names.rb +1 -1
- data/test/workbook/test_write_workbook_view.rb +81 -0
- data/test/worksheet/test_calculate_spans.rb +1 -1
- data/test/worksheet/test_cond_format_01.rb +1 -1
- data/test/worksheet/test_cond_format_02.rb +1 -1
- data/test/worksheet/test_cond_format_03.rb +1 -1
- data/test/worksheet/test_cond_format_04.rb +1 -1
- data/test/worksheet/test_cond_format_05.rb +1 -1
- data/test/worksheet/test_cond_format_06.rb +1 -1
- data/test/worksheet/test_cond_format_07.rb +1 -1
- data/test/worksheet/test_cond_format_08.rb +1 -1
- data/test/worksheet/test_cond_format_09.rb +1 -1
- data/test/worksheet/test_cond_format_10.rb +1 -1
- data/test/worksheet/test_cond_format_11.rb +1 -1
- data/test/worksheet/test_cond_format_12.rb +1 -1
- data/test/worksheet/test_cond_format_13.rb +1 -1
- data/test/worksheet/test_cond_format_14.rb +1 -1
- data/test/worksheet/test_cond_format_15.rb +1 -1
- data/test/worksheet/test_cond_format_16.rb +1 -1
- data/test/worksheet/test_cond_format_17.rb +1 -1
- data/test/worksheet/test_cond_format_18.rb +1 -1
- data/test/worksheet/test_cond_format_19.rb +1 -1
- data/test/worksheet/test_cond_format_20.rb +1 -1
- data/test/worksheet/test_cond_format_21.rb +2 -2
- data/test/worksheet/test_cond_format_22.rb +266 -0
- data/test/worksheet/test_cond_format_23.rb +242 -0
- data/test/worksheet/test_cond_format_24.rb +303 -0
- data/test/worksheet/test_convert_date_time_01.rb +1 -1
- data/test/worksheet/test_convert_date_time_02.rb +1 -1
- data/test/worksheet/test_convert_date_time_03.rb +1 -1
- data/test/worksheet/test_convert_date_time_04.rb +1 -1
- data/test/worksheet/test_data_bar_01.rb +53 -0
- data/test/worksheet/test_data_bar_02.rb +79 -0
- data/test/worksheet/test_data_bar_03.rb +147 -0
- data/test/worksheet/test_data_bar_04.rb +145 -0
- data/test/worksheet/test_data_bar_05.rb +147 -0
- data/test/worksheet/test_data_bar_06.rb +145 -0
- data/test/worksheet/test_data_bar_07.rb +146 -0
- data/test/worksheet/test_data_bar_08.rb +54 -0
- data/test/worksheet/test_data_bar_09.rb +80 -0
- data/test/worksheet/test_data_bar_10.rb +165 -0
- data/test/worksheet/test_data_bar_11.rb +167 -0
- data/test/worksheet/test_data_bar_12.rb +104 -0
- data/test/worksheet/test_extract_filter_tokens.rb +1 -1
- data/test/worksheet/test_parse_filter_expression.rb +1 -1
- data/test/worksheet/test_position_object.rb +1 -1
- data/test/worksheet/test_repeat_formula.rb +1 -1
- data/test/worksheet/test_sparkline_01.rb +1 -1
- data/test/worksheet/test_sparkline_02.rb +1 -1
- data/test/worksheet/test_sparkline_03.rb +1 -1
- data/test/worksheet/test_sparkline_04.rb +1 -1
- data/test/worksheet/test_sparkline_05.rb +1 -1
- data/test/worksheet/test_sparkline_06.rb +1 -1
- data/test/worksheet/test_sparkline_07.rb +1 -1
- data/test/worksheet/test_sparkline_08.rb +1 -1
- data/test/worksheet/test_sparkline_09.rb +1 -1
- data/test/worksheet/test_sparkline_10.rb +1 -1
- data/test/worksheet/test_sparkline_11.rb +1 -1
- data/test/worksheet/test_sparkline_12.rb +1 -1
- data/test/worksheet/test_update_format_methods.rb +9 -29
- data/test/worksheet/test_worksheet_01.rb +1 -1
- data/test/worksheet/test_worksheet_02.rb +1 -1
- data/test/worksheet/test_worksheet_03.rb +1 -1
- data/test/worksheet/test_worksheet_04.rb +1 -1
- data/test/worksheet/test_write_array_formula_01.rb +1 -8
- data/test/worksheet/test_write_autofilter.rb +1 -1
- data/test/worksheet/test_write_brk.rb +1 -1
- data/test/worksheet/test_write_cell.rb +1 -1
- data/test/worksheet/test_write_cell_value.rb +1 -1
- data/test/worksheet/test_write_col_breaks.rb +1 -1
- data/test/worksheet/test_write_col_info.rb +1 -1
- data/test/worksheet/test_write_conditional_formatting.rb +1 -1
- data/test/worksheet/test_write_custom_filter.rb +1 -1
- data/test/worksheet/test_write_custom_filters.rb +1 -1
- data/test/worksheet/test_write_data_validation_01.rb +1 -1
- data/test/worksheet/test_write_data_validation_02.rb +28 -1
- data/test/worksheet/test_write_dimension.rb +1 -1
- data/test/worksheet/test_write_filter.rb +1 -1
- data/test/worksheet/test_write_filter_column.rb +1 -1
- data/test/worksheet/test_write_filters.rb +1 -1
- data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +1 -1
- data/test/worksheet/test_write_header_footer.rb +1 -1
- data/test/worksheet/test_write_hyperlink.rb +1 -8
- data/test/worksheet/test_write_legacy_drawing.rb +1 -1
- data/test/worksheet/test_write_merge_cell.rb +1 -1
- data/test/worksheet/test_write_merge_cells.rb +1 -1
- data/test/worksheet/test_write_methods.rb +68 -177
- data/test/worksheet/test_write_page_margins.rb +1 -1
- data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
- data/test/worksheet/test_write_page_setup.rb +1 -1
- data/test/worksheet/test_write_pane.rb +1 -1
- data/test/worksheet/test_write_phonetic_pr.rb +1 -1
- data/test/worksheet/test_write_print_options.rb +1 -1
- data/test/worksheet/test_write_row_breaks.rb +1 -1
- data/test/worksheet/test_write_row_element.rb +1 -1
- data/test/worksheet/test_write_selection.rb +1 -1
- data/test/worksheet/test_write_sheet_calc_pr.rb +1 -1
- data/test/worksheet/test_write_sheet_data.rb +1 -1
- data/test/worksheet/test_write_sheet_format_pr.rb +1 -1
- data/test/worksheet/test_write_sheet_pr.rb +1 -1
- data/test/worksheet/test_write_sheet_protection.rb +1 -1
- data/test/worksheet/test_write_sheet_view.rb +1 -1
- data/test/worksheet/test_write_sheet_view1.rb +1 -1
- data/test/worksheet/test_write_sheet_view2.rb +1 -1
- data/test/worksheet/test_write_sheet_view3.rb +1 -1
- data/test/worksheet/test_write_sheet_view4.rb +1 -1
- data/test/worksheet/test_write_sheet_view5.rb +1 -1
- data/test/worksheet/test_write_sheet_view6.rb +1 -1
- data/test/worksheet/test_write_sheet_view7.rb +1 -1
- data/test/worksheet/test_write_sheet_view8.rb +1 -1
- data/test/worksheet/test_write_sheet_view9.rb +1 -1
- data/test/worksheet/test_write_tab_color.rb +1 -1
- data/test/worksheet/test_write_worksheet_attributes.rb +1 -1
- data/write_xlsx.gemspec +2 -2
- metadata +248 -15
- data/test/test_col_name.rb +0 -13
- data/test/workbook/test_workbook_new.rb +0 -18
- data/test/worksheet/test_format.rb +0 -17
- data/test/worksheet/test_write_multiline_string_with_url.rb +0 -30
- data/test/worksheet/test_write_url.rb +0 -19
@@ -9,12 +9,13 @@ class Axis < Caption
|
|
9
9
|
include Writexlsx::Utility
|
10
10
|
|
11
11
|
attr_accessor :defaults
|
12
|
-
attr_accessor :min, :max, :num_format, :position
|
12
|
+
attr_accessor :min, :max, :num_format, :position
|
13
|
+
attr_accessor :major_tick_mark, :minor_tick_mark
|
13
14
|
attr_reader :minor_unit, :major_unit, :minor_unit_type, :major_unit_type
|
14
15
|
attr_reader :display_units_visible, :display_units
|
15
16
|
attr_reader :log_base, :crossing, :position_axis, :label_position, :visible
|
16
17
|
attr_reader :num_format_linked, :num_font, :layout, :interval_unit
|
17
|
-
attr_reader :major_gridlines, :minor_gridlines, :reverse
|
18
|
+
attr_reader :interval_tick, :major_gridlines, :minor_gridlines, :reverse
|
18
19
|
attr_reader :line, :fill, :text_axis
|
19
20
|
#
|
20
21
|
# Convert user defined axis values into axis instance.
|
@@ -27,11 +28,11 @@ def merge_with_hash(params) # :nodoc:
|
|
27
28
|
:reverse, :min, :max, :minor_unit, :major_unit, :minor_unit_type,
|
28
29
|
:major_unit_type, :log_base, :crossing, :position_axis,
|
29
30
|
:label_position, :num_format, :num_format_linked, :interval_unit,
|
30
|
-
:
|
31
|
+
:interval_tick, :line, :fill
|
31
32
|
].each { |val| instance_variable_set("@#{val}", args[val]) }
|
32
|
-
@visible = args[:visible] || 1
|
33
|
-
|
34
33
|
set_major_minor_gridlines(args)
|
34
|
+
|
35
|
+
@visible = args[:visible] || 1
|
35
36
|
set_display_units(args)
|
36
37
|
set_display_units_visible(args)
|
37
38
|
set_position(args)
|
@@ -44,6 +45,10 @@ def merge_with_hash(params) # :nodoc:
|
|
44
45
|
@chart.date_category = false
|
45
46
|
@text_axis = true
|
46
47
|
end
|
48
|
+
|
49
|
+
# Set the tick marker types.
|
50
|
+
@major_tick_mark = get_tick_type(params[:major_tick_mark])
|
51
|
+
@minor_tick_mark = get_tick_type(params[:minor_tick_mark])
|
47
52
|
end
|
48
53
|
|
49
54
|
#
|
@@ -126,6 +131,26 @@ def get_display_units(display_units)
|
|
126
131
|
end
|
127
132
|
end
|
128
133
|
|
134
|
+
#
|
135
|
+
# Convert user tick types to internal units.
|
136
|
+
#
|
137
|
+
def get_tick_type(tick_type)
|
138
|
+
return if !ptrue?(tick_type)
|
139
|
+
|
140
|
+
types = {
|
141
|
+
'outside' => 'out',
|
142
|
+
'inside' => 'in',
|
143
|
+
'none' => 'none',
|
144
|
+
'cross' => 'cross'
|
145
|
+
}
|
146
|
+
|
147
|
+
if(types[tick_type])
|
148
|
+
return types[tick_type]
|
149
|
+
else
|
150
|
+
raise "Unknown tick_type type '#{tick_type}'\n"
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
129
154
|
def set_display_units(args)
|
130
155
|
@display_units = get_display_units(args[:display_units])
|
131
156
|
end
|
@@ -134,7 +159,7 @@ def set_display_units_visible(args)
|
|
134
159
|
if args[:display_units_visible]
|
135
160
|
@display_units_visible = args[:display_units_visible]
|
136
161
|
else
|
137
|
-
@display_units_visible = 1
|
162
|
+
@display_units_visible = 1
|
138
163
|
end
|
139
164
|
end
|
140
165
|
|
@@ -159,8 +184,8 @@ def set_position_axis
|
|
159
184
|
end
|
160
185
|
|
161
186
|
def set_font_properties(args)
|
162
|
-
@num_font =
|
163
|
-
@name_font =
|
187
|
+
@num_font = convert_font_args(args[:num_font])
|
188
|
+
@name_font = convert_font_args(args[:name_font])
|
164
189
|
end
|
165
190
|
|
166
191
|
def set_axis_name_layout(args)
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module Writexlsx
|
4
4
|
class Chart
|
5
5
|
class Caption
|
6
|
+
include Writexlsx::Utility
|
7
|
+
|
6
8
|
attr_accessor :name, :formula, :data_id, :name_font
|
7
9
|
attr_reader :layout, :overlay, :none
|
8
10
|
|
@@ -13,7 +15,7 @@ def initialize(chart)
|
|
13
15
|
def merge_with_hash(params) # :nodoc:
|
14
16
|
@name, @formula = @chart.process_names(params[:name], params[:name_formula])
|
15
17
|
@data_id = @chart.data_id(@formula, params[:data])
|
16
|
-
@name_font =
|
18
|
+
@name_font = convert_font_args(params[:name_font])
|
17
19
|
@layout = @chart.layout_properties(params[:layout], 1)
|
18
20
|
|
19
21
|
# Set the title overlay option.
|
data/lib/write_xlsx/chart/pie.rb
CHANGED
@@ -8,22 +8,30 @@ class Chartline
|
|
8
8
|
include Writexlsx::Utility
|
9
9
|
include Writexlsx::Gradient
|
10
10
|
|
11
|
-
attr_reader :line, :fill, :type
|
11
|
+
attr_reader :line, :fill, :type, :gradient, :pattern
|
12
12
|
|
13
13
|
def initialize(params)
|
14
14
|
@line = params[:line]
|
15
15
|
@fill = params[:fill]
|
16
|
+
@pattern = params[:pattern]
|
17
|
+
@gradient = params[:gradient]
|
16
18
|
# Set the line properties for the marker..
|
17
19
|
@line = line_properties(@line)
|
18
20
|
# Allow 'border' as a synonym for 'line'.
|
19
21
|
@line = line_properties(params[:border]) if params[:border]
|
20
|
-
|
21
|
-
# Set the gradient fill properties for the series.
|
22
|
-
@gradient = gradient_properties(params[:gradient])
|
23
|
-
|
24
22
|
# Set the fill properties for the marker.
|
25
23
|
@fill = fill_properties(@fill)
|
24
|
+
# Set the pattern properties for the series.
|
25
|
+
@pattern = pattern_properties(@pattern)
|
26
|
+
# Set the gradient fill properties for the series.
|
27
|
+
@gradient = gradient_properties(@gradient)
|
28
|
+
# Pattern fill overrides solid fill.
|
26
29
|
@fill = nil if ptrue?(@gradient)
|
30
|
+
# Gradient fill overrides solid and pattern fills.
|
31
|
+
if ptrue?(@gradient)
|
32
|
+
@pattern = nil
|
33
|
+
@fill = nil
|
34
|
+
end
|
27
35
|
end
|
28
36
|
|
29
37
|
def line_defined?
|
@@ -49,16 +57,20 @@ def initialize(params)
|
|
49
57
|
|
50
58
|
class Trendline < Chartline
|
51
59
|
attr_reader :name, :forward, :backward, :order, :period
|
60
|
+
attr_reader :intercept, :display_equation, :display_r_squared
|
52
61
|
|
53
62
|
def initialize(params)
|
54
63
|
super(params)
|
55
64
|
|
56
|
-
@name
|
57
|
-
@forward
|
58
|
-
@backward
|
59
|
-
@order
|
60
|
-
@period
|
61
|
-
@
|
65
|
+
@name = params[:name]
|
66
|
+
@forward = params[:forward]
|
67
|
+
@backward = params[:backward]
|
68
|
+
@order = params[:order]
|
69
|
+
@period = params[:period]
|
70
|
+
@intercept = params[:intercept]
|
71
|
+
@display_equation = params[:display_equation]
|
72
|
+
@display_r_squared = params[:display_r_squared]
|
73
|
+
@type = value_or_raise(types, params[:type], 'trendline type')
|
62
74
|
end
|
63
75
|
|
64
76
|
private
|
@@ -170,7 +182,7 @@ class Series
|
|
170
182
|
include Writexlsx::Gradient
|
171
183
|
|
172
184
|
attr_reader :values, :categories, :name, :name_formula, :name_id
|
173
|
-
attr_reader :cat_data_id, :val_data_id, :fill, :gradient
|
185
|
+
attr_reader :cat_data_id, :val_data_id, :fill, :pattern, :gradient
|
174
186
|
attr_reader :trendline, :smooth, :labels, :invert_if_negative
|
175
187
|
attr_reader :x2_axis, :y2_axis, :error_bars, :points
|
176
188
|
attr_accessor :line, :marker
|
@@ -184,13 +196,21 @@ def initialize(chart, params = {})
|
|
184
196
|
|
185
197
|
set_data_ids(params)
|
186
198
|
|
187
|
-
@line
|
188
|
-
@fill
|
189
|
-
|
199
|
+
@line = line_properties(params[:border] || params[:line])
|
200
|
+
@fill = fill_properties(params[:fill])
|
201
|
+
@pattern = pattern_properties(params[:pattern])
|
190
202
|
@gradient = gradient_properties(params[:gradient])
|
191
|
-
|
203
|
+
# Pattern fill overrides solid fill.
|
204
|
+
@fill = nil if ptrue?(@pattern)
|
205
|
+
# Gradient fill overrides solid and patter fills.
|
206
|
+
if ptrue?(@gradient)
|
207
|
+
@pattern = nil
|
208
|
+
@fill = nil
|
209
|
+
end
|
192
210
|
|
211
|
+
# Set the marker properties for the series.
|
193
212
|
@marker = Marker.new(params[:marker]) if params[:marker]
|
213
|
+
# Set the trendline properties for the series.
|
194
214
|
@trendline = Trendline.new(params[:trendline]) if params[:trendline]
|
195
215
|
@error_bars = errorbars(params[:x_error_bars], params[:y_error_bars])
|
196
216
|
@points = params[:points].collect { |p| p ? Point.new(p) : p } if params[:points]
|
@@ -277,7 +297,7 @@ def labels_properties(labels) # :nodoc:
|
|
277
297
|
end
|
278
298
|
|
279
299
|
if labels[:font]
|
280
|
-
labels[:font] =
|
300
|
+
labels[:font] = convert_font_args(labels[:font])
|
281
301
|
end
|
282
302
|
|
283
303
|
labels
|
data/lib/write_xlsx/format.rb
CHANGED
@@ -163,7 +163,7 @@ class Format
|
|
163
163
|
include Writexlsx::Utility
|
164
164
|
|
165
165
|
attr_reader :xf_index, :dxf_index, :num_format # :nodoc:
|
166
|
-
attr_reader :underline, :font_script, :size, :theme, :font, :font_family, :hyperlink # :nodoc:
|
166
|
+
attr_reader :underline, :font_script, :size, :theme, :font, :font_family, :hyperlink, :xf_id # :nodoc:
|
167
167
|
attr_reader :diag_type, :diag_color, :font_only, :color, :color_indexed # :nodoc:
|
168
168
|
attr_reader :left, :left_color, :right, :right_color, :top, :top_color, :bottom, :bottom_color # :nodoc:
|
169
169
|
attr_reader :font_scheme # :nodoc:
|
@@ -200,6 +200,7 @@ def initialize(formats, params = {}) # :nodoc:
|
|
200
200
|
@font_extend = 0
|
201
201
|
@theme = 0
|
202
202
|
@hyperlink = 0
|
203
|
+
@xf_id = 0
|
203
204
|
|
204
205
|
@hidden = 0
|
205
206
|
@locked = 1
|
@@ -396,7 +397,8 @@ def get_font_key
|
|
396
397
|
@font,
|
397
398
|
@italic,
|
398
399
|
@size,
|
399
|
-
@underline
|
400
|
+
@underline,
|
401
|
+
@theme
|
400
402
|
].join(':')
|
401
403
|
end
|
402
404
|
|
@@ -593,15 +595,15 @@ def set_rotation(rotation)
|
|
593
595
|
end
|
594
596
|
|
595
597
|
#
|
596
|
-
# Set the properties for the hyperlink style.
|
597
|
-
#
|
598
|
+
# Set the properties for the hyperlink style. This isn't a public method. To
|
599
|
+
# be fixed when styles are supported.
|
598
600
|
#
|
599
|
-
def set_hyperlink
|
600
|
-
@
|
601
|
+
def set_hyperlink(hyperlink)
|
602
|
+
@xf_id = 1
|
601
603
|
|
602
604
|
set_underline(1)
|
603
605
|
set_theme(10)
|
604
|
-
|
606
|
+
@hyperlink = hyperlink
|
605
607
|
end
|
606
608
|
|
607
609
|
def set_font_info(fonts)
|
@@ -804,11 +806,11 @@ def xf_attributes
|
|
804
806
|
['fontId' , font_index],
|
805
807
|
['fillId' , fill_index],
|
806
808
|
['borderId', border_index],
|
807
|
-
['xfId' ,
|
809
|
+
['xfId' , xf_id]
|
808
810
|
]
|
809
811
|
attributes << ['applyNumberFormat', 1] if num_format_index > 0
|
810
812
|
# Add applyFont attribute if XF format uses a font element.
|
811
|
-
attributes << ['applyFont', 1] if font_index > 0
|
813
|
+
attributes << ['applyFont', 1] if font_index > 0 && !ptrue?(@hyperlink)
|
812
814
|
# Add applyFill attribute if XF format uses a fill element.
|
813
815
|
attributes << ['applyFill', 1] if fill_index > 0
|
814
816
|
# Add applyBorder attribute if XF format uses a border element.
|
@@ -817,8 +819,10 @@ def xf_attributes
|
|
817
819
|
# Check if XF format has alignment properties set.
|
818
820
|
apply_align, align = get_align_properties
|
819
821
|
# We can also have applyAlignment without a sub-element.
|
820
|
-
attributes << ['applyAlignment', 1] if apply_align
|
821
|
-
|
822
|
+
attributes << ['applyAlignment', 1] if apply_align || ptrue?(@hyperlink)
|
823
|
+
if get_protection_properties || ptrue?(hyperlink)
|
824
|
+
attributes << ['applyProtection', 1]
|
825
|
+
end
|
822
826
|
|
823
827
|
attributes
|
824
828
|
end
|
@@ -844,6 +848,10 @@ def write_font_family_scheme(writer)
|
|
844
848
|
writer.empty_tag('family', [ ['val', @font_family] ])
|
845
849
|
end
|
846
850
|
|
851
|
+
if ptrue?(@font_charset)
|
852
|
+
writer.empty_tag('charset', [ ['val', @font_charset] ])
|
853
|
+
end
|
854
|
+
|
847
855
|
if @font == 'Calibri' && !ptrue?(@hyperlink)
|
848
856
|
writer.empty_tag('scheme', [ ['val', @font_scheme] ])
|
849
857
|
end
|
@@ -7,8 +7,8 @@ class ConditionalFormat
|
|
7
7
|
|
8
8
|
def self.factory(worksheet, *args)
|
9
9
|
range, param =
|
10
|
-
|
11
|
-
|
10
|
+
Package::ConditionalFormat.new(worksheet, nil, nil).
|
11
|
+
range_param_for_conditional_formatting(*args)
|
12
12
|
|
13
13
|
case param[:type]
|
14
14
|
when 'cellIs'
|
@@ -29,6 +29,8 @@ def self.factory(worksheet, *args)
|
|
29
29
|
DataBarFormat.new(worksheet, range, param)
|
30
30
|
when 'expression'
|
31
31
|
ExpressionFormat.new(worksheet, range, param)
|
32
|
+
when 'iconSet'
|
33
|
+
IconSetFormat.new(worksheet, range, param)
|
32
34
|
else # when 'duplicateValues', 'uniqueValues'
|
33
35
|
ConditionalFormat.new(worksheet, range, param)
|
34
36
|
end
|
@@ -59,11 +61,13 @@ def write_formula_tag(data) #:nodoc:
|
|
59
61
|
#
|
60
62
|
# Write the <cfvo> element.
|
61
63
|
#
|
62
|
-
def write_cfvo(type,
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
64
|
+
def write_cfvo(type, value, criteria = nil)
|
65
|
+
attributes = [ ['type', type] ]
|
66
|
+
attributes << [ 'val', value] if value
|
67
|
+
|
68
|
+
attributes << ['gte', 0] if ptrue?(criteria)
|
69
|
+
|
70
|
+
@writer.empty_tag('cfvo', attributes)
|
67
71
|
end
|
68
72
|
|
69
73
|
def attributes
|
@@ -154,6 +158,54 @@ def bar_color
|
|
154
158
|
@param[:bar_color]
|
155
159
|
end
|
156
160
|
|
161
|
+
def bar_border_color
|
162
|
+
@param[:bar_border_color]
|
163
|
+
end
|
164
|
+
|
165
|
+
def bar_negative_color
|
166
|
+
@param[:bar_negative_color]
|
167
|
+
end
|
168
|
+
|
169
|
+
def bar_negative_color_same
|
170
|
+
@param[:bar_negative_color_same]
|
171
|
+
end
|
172
|
+
|
173
|
+
def bar_no_border
|
174
|
+
@param[:bar_no_border]
|
175
|
+
end
|
176
|
+
|
177
|
+
def bar_axis_position
|
178
|
+
@param[:bar_axis_position]
|
179
|
+
end
|
180
|
+
|
181
|
+
def bar_axis_color
|
182
|
+
@param[:bar_axis_color]
|
183
|
+
end
|
184
|
+
|
185
|
+
def icon_style
|
186
|
+
@param[:icon_style]
|
187
|
+
end
|
188
|
+
|
189
|
+
def total_icons
|
190
|
+
@param[:total_icons]
|
191
|
+
end
|
192
|
+
|
193
|
+
def icons
|
194
|
+
@param[:icons]
|
195
|
+
end
|
196
|
+
|
197
|
+
def icons_only
|
198
|
+
@param[:icons_only]
|
199
|
+
end
|
200
|
+
|
201
|
+
def reverse_icons
|
202
|
+
@param[:reverse_icons]
|
203
|
+
end
|
204
|
+
|
205
|
+
def bar_only
|
206
|
+
@param[:bar_only]
|
207
|
+
end
|
208
|
+
|
157
209
|
def range_param_for_conditional_formatting(*args) # :nodoc:
|
158
210
|
range_start_cell_for_conditional_formatting(*args)
|
159
211
|
param_for_conditional_formatting(*args)
|
@@ -274,17 +326,68 @@ def handling_of_blanks_error_types
|
|
274
326
|
@param[:mid_color] = palette_color(@param[:mid_color])
|
275
327
|
@param[:min_color] = palette_color(@param[:min_color])
|
276
328
|
when 'dataBar'
|
277
|
-
#
|
329
|
+
# Excel 2007 data bars don't use any additional formatting.
|
278
330
|
@param[:format] = nil
|
279
331
|
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
332
|
+
if !@param[:min_type]
|
333
|
+
@param[:min_type] = 'min'
|
334
|
+
@param[:x14_min_type] = 'autoMin'
|
335
|
+
else
|
336
|
+
@param[:x14_min_type] = @param[:min_type]
|
337
|
+
end
|
338
|
+
if !@param[:max_type]
|
339
|
+
@param[:max_type] = 'max'
|
340
|
+
@param[:x14_max_type] = 'autoMax'
|
341
|
+
else
|
342
|
+
@param[:x14_max_type] = @param[:max_type]
|
343
|
+
end
|
344
|
+
|
345
|
+
@param[:min_value] ||= 0
|
346
|
+
@param[:max_value] ||= 0
|
347
|
+
@param[:bar_color] ||= '#638EC6'
|
348
|
+
@param[:bar_border_color] ||= @param[:bar_color]
|
349
|
+
@param[:bar_only] ||= 0
|
350
|
+
@param[:bar_no_border] ||= 0
|
351
|
+
@param[:bar_solid] ||= 0
|
352
|
+
@param[:bar_direction] ||= ''
|
353
|
+
@param[:bar_negative_color] ||= '#FF0000'
|
354
|
+
@param[:bar_negative_border_color] ||= '#FF0000'
|
355
|
+
@param[:bar_negative_color_same] ||= 0
|
356
|
+
@param[:bar_negative_border_color_same] ||= 0
|
357
|
+
@param[:bar_axis_position] ||= ''
|
358
|
+
@param[:bar_axis_color] ||= '#000000'
|
359
|
+
|
360
|
+
@param[:bar_color] =
|
361
|
+
palette_color(@param[:bar_color])
|
362
|
+
@param[:bar_border_color] =
|
363
|
+
palette_color(@param[:bar_border_color])
|
364
|
+
@param[:bar_negative_color] =
|
365
|
+
palette_color(@param[:bar_negative_color])
|
366
|
+
@param[:bar_negative_border_color] =
|
367
|
+
palette_color(@param[:bar_negative_border_color])
|
368
|
+
@param[:bar_axis_color] =
|
369
|
+
palette_color(@param[:bar_axis_color])
|
370
|
+
end
|
371
|
+
|
372
|
+
# Adjust for 2010 style data_bar parameters.
|
373
|
+
if ptrue?(@param[:is_data_bar_2010])
|
374
|
+
@worksheet.excel_version = 2010
|
285
375
|
|
286
|
-
@param[:
|
376
|
+
if @param[:min_type] == 'min' && @param[:min_value] == 0
|
377
|
+
@param[:min_value] = nil
|
378
|
+
end
|
379
|
+
if @param[:max_type] == 'max' && @param[:max_value] == 0
|
380
|
+
@param[:max_value] = nil
|
381
|
+
end
|
382
|
+
|
383
|
+
# Store range for Excel 2010 data bars.
|
384
|
+
@param[:range] = range
|
287
385
|
end
|
386
|
+
|
387
|
+
# Strip the leading = from formulas.
|
388
|
+
@param[:min_value] = @param[:min_value].to_s.sub(/^=/, '') if @param[:min_value]
|
389
|
+
@param[:mid_value] = @param[:mid_value].to_s.sub(/^=/, '') if @param[:mid_value]
|
390
|
+
@param[:max_value] = @param[:max_value].to_s.sub(/^=/, '') if @param[:max_value]
|
288
391
|
end
|
289
392
|
|
290
393
|
def palette_color(index)
|
@@ -293,7 +396,7 @@ def palette_color(index)
|
|
293
396
|
|
294
397
|
def range_start_cell_for_conditional_formatting(*args) # :nodoc:
|
295
398
|
row1, row2, col1, col2, user_range, param =
|
296
|
-
|
399
|
+
row_col_param_for_conditional_formatting(*args)
|
297
400
|
# If the first and last cell are the same write a single cell.
|
298
401
|
if row1 == row2 && col1 == col2
|
299
402
|
range = xl_rowcol_to_cell(row1, col1)
|
@@ -336,19 +439,32 @@ def row_col_param_for_conditional_formatting(*args)
|
|
336
439
|
|
337
440
|
def param_for_conditional_formatting(*args) # :nodoc:
|
338
441
|
dummy, dummy, dummy, dummy, dummy, @param =
|
339
|
-
|
442
|
+
row_col_param_for_conditional_formatting(*args)
|
340
443
|
check_conditional_formatting_parameters(@param)
|
341
444
|
|
342
445
|
@param[:format] = @param[:format].get_dxf_index if @param[:format]
|
343
446
|
@param[:priority] = @worksheet.dxf_priority
|
447
|
+
|
448
|
+
# Check for 2010 style data_bar parameters.
|
449
|
+
%i(data_bar_2010 bar_solid bar_border_color bar_negative_color
|
450
|
+
bar_negative_color_same bar_negative_border_color
|
451
|
+
bar_negative_border_color_same bar_no_border
|
452
|
+
bar_axis_position bar_axis_color bar_direction
|
453
|
+
).each do |key|
|
454
|
+
if @param[key]
|
455
|
+
@param[:is_data_bar_2010] = 1
|
456
|
+
break
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
344
460
|
@worksheet.dxf_priority += 1
|
345
461
|
end
|
346
462
|
|
347
463
|
def check_conditional_formatting_parameters(param) # :nodoc:
|
348
464
|
# Check for valid input parameters.
|
349
|
-
|
350
|
-
|
351
|
-
|
465
|
+
if !(param.keys.uniq - valid_parameter_for_conditional_formatting).empty? ||
|
466
|
+
!param.has_key?(:type) ||
|
467
|
+
!valid_type_for_conditional_formatting.has_key?(param[:type].downcase)
|
352
468
|
raise WriteXLSXOptionParameterError, "Invalid type : #{param[:type]}"
|
353
469
|
end
|
354
470
|
|
@@ -369,6 +485,32 @@ def check_conditional_formatting_parameters(param) # :nodoc:
|
|
369
485
|
param[:maximum] = convert_date_time_if_required(param[:maximum])
|
370
486
|
end
|
371
487
|
|
488
|
+
# Set properties for icon sets.
|
489
|
+
if param[:type] == 'iconSet'
|
490
|
+
if !param[:icon_style]
|
491
|
+
raise "The 'icon_style' parameter must be specified when " +
|
492
|
+
"'type' == 'icon_set' in conditional_formatting()"
|
493
|
+
end
|
494
|
+
|
495
|
+
# Check for valid icon styles.
|
496
|
+
if !icon_set_styles[param[:icon_style]]
|
497
|
+
raise "Unknown icon style '$param->{icon_style}' for parameter " +
|
498
|
+
"'icon_style' in conditional_formatting()"
|
499
|
+
else
|
500
|
+
param[:icon_style] = icon_set_styles[param[:icon_style]]
|
501
|
+
end
|
502
|
+
|
503
|
+
# Set the number of icons for the icon style.
|
504
|
+
param[:total_icons] = 3
|
505
|
+
if param[:icon_style] =~ /^4/
|
506
|
+
param[:total_icons] = 4
|
507
|
+
elsif param[:icon_style] =~ /^5/
|
508
|
+
param[:total_icons] = 5
|
509
|
+
end
|
510
|
+
|
511
|
+
param[:icons] = set_icon_properties(param[:total_icons], param[:icons])
|
512
|
+
end
|
513
|
+
|
372
514
|
# 'Between' and 'Not between' criteria require 2 values.
|
373
515
|
if param[:criteria] == 'between' || param[:criteria] == 'notBetween'
|
374
516
|
unless param.has_key?(:minimum) || param.has_key?(:maximum)
|
@@ -400,23 +542,39 @@ def convert_date_time_if_required(val)
|
|
400
542
|
# List of valid input parameters for conditional_formatting.
|
401
543
|
def valid_parameter_for_conditional_formatting
|
402
544
|
[
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
545
|
+
:type,
|
546
|
+
:format,
|
547
|
+
:criteria,
|
548
|
+
:value,
|
549
|
+
:minimum,
|
550
|
+
:maximum,
|
551
|
+
:stop_if_true,
|
552
|
+
:min_type,
|
553
|
+
:mid_type,
|
554
|
+
:max_type,
|
555
|
+
:min_value,
|
556
|
+
:mid_value,
|
557
|
+
:max_value,
|
558
|
+
:min_color,
|
559
|
+
:mid_color,
|
560
|
+
:max_color,
|
561
|
+
:bar_color,
|
562
|
+
:bar_negative_color,
|
563
|
+
:bar_negative_color_same,
|
564
|
+
:bar_solid,
|
565
|
+
:bar_border_color,
|
566
|
+
:bar_negative_border_color,
|
567
|
+
:bar_negative_border_color_same,
|
568
|
+
:bar_no_border,
|
569
|
+
:bar_direction,
|
570
|
+
:bar_axis_position,
|
571
|
+
:bar_axis_color,
|
572
|
+
:bar_only,
|
573
|
+
:icon_style,
|
574
|
+
:reverse_icons,
|
575
|
+
:icons_only,
|
576
|
+
:icons,
|
577
|
+
:data_bar_2010
|
420
578
|
]
|
421
579
|
end
|
422
580
|
|
@@ -440,7 +598,8 @@ def valid_type_for_conditional_formatting
|
|
440
598
|
'2_color_scale' => '2_color_scale',
|
441
599
|
'3_color_scale' => '3_color_scale',
|
442
600
|
'data_bar' => 'dataBar',
|
443
|
-
'formula' => 'expression'
|
601
|
+
'formula' => 'expression',
|
602
|
+
'icon_set' => 'iconSet'
|
444
603
|
}
|
445
604
|
end
|
446
605
|
|
@@ -479,6 +638,100 @@ def valid_criteria_type_for_conditional_formatting
|
|
479
638
|
}
|
480
639
|
end
|
481
640
|
|
641
|
+
# List of valid icon styles.
|
642
|
+
def icon_set_styles
|
643
|
+
{
|
644
|
+
"3_arrows" => "3Arrows", # 1
|
645
|
+
"3_flags" => "3Flags", # 2
|
646
|
+
"3_traffic_lights_rimmed" => "3TrafficLights2", # 3
|
647
|
+
"3_symbols_circled" => "3Symbols", # 4
|
648
|
+
"4_arrows" => "4Arrows", # 5
|
649
|
+
"4_red_to_black" => "4RedToBlack", # 6
|
650
|
+
"4_traffic_lights" => "4TrafficLights", # 7
|
651
|
+
"5_arrows_gray" => "5ArrowsGray", # 8
|
652
|
+
"5_quarters" => "5Quarters", # 9
|
653
|
+
"3_arrows_gray" => "3ArrowsGray", # 10
|
654
|
+
"3_traffic_lights" => "3TrafficLights", # 11
|
655
|
+
"3_signs" => "3Signs", # 12
|
656
|
+
"3_symbols" => "3Symbols2", # 13
|
657
|
+
"4_arrows_gray" => "4ArrowsGray", # 14
|
658
|
+
"4_ratings" => "4Rating", # 15
|
659
|
+
"5_arrows" => "5Arrows", # 16
|
660
|
+
"5_ratings" => "5Rating", # 17
|
661
|
+
}
|
662
|
+
end
|
663
|
+
|
664
|
+
#
|
665
|
+
# Set the sub-properites for icons.
|
666
|
+
#
|
667
|
+
def set_icon_properties(total_icons, user_props)
|
668
|
+
props = []
|
669
|
+
|
670
|
+
# Set the default icon properties.
|
671
|
+
total_icons.times do
|
672
|
+
props << {
|
673
|
+
:criteria => 0,
|
674
|
+
:value => 0,
|
675
|
+
:type => 'percent'
|
676
|
+
}
|
677
|
+
end
|
678
|
+
|
679
|
+
# Set the default icon values based on the number of icons.
|
680
|
+
if total_icons == 3
|
681
|
+
props[0][:value] = 67
|
682
|
+
props[1][:value] = 33
|
683
|
+
elsif total_icons == 4
|
684
|
+
props[0][:value] = 75
|
685
|
+
props[1][:value] = 50
|
686
|
+
props[2][:value] = 25
|
687
|
+
elsif total_icons == 5
|
688
|
+
props[0][:value] = 80
|
689
|
+
props[1][:value] = 60
|
690
|
+
props[2][:value] = 40
|
691
|
+
props[3][:value] = 20
|
692
|
+
end
|
693
|
+
|
694
|
+
# Overwrite default properties with user defined properties.
|
695
|
+
if user_props
|
696
|
+
|
697
|
+
# Ensure we don't set user properties for lowest icon.
|
698
|
+
max_data = user_props.size
|
699
|
+
max_data = total_icons -1 if max_data >= total_icons
|
700
|
+
|
701
|
+
(0..max_data - 1).each do |i|
|
702
|
+
# Set the user defined 'value' property.
|
703
|
+
if user_props[i][:value]
|
704
|
+
props[i][:value] = user_props[i][:value].to_s.sub(/^=/, '')
|
705
|
+
end
|
706
|
+
|
707
|
+
# Set the user defined 'type' property.
|
708
|
+
if user_props[i][:type]
|
709
|
+
|
710
|
+
type = user_props[i][:type]
|
711
|
+
|
712
|
+
if type != 'percent' && type != 'percentile' &&
|
713
|
+
type != 'number' && type != 'formula'
|
714
|
+
raise "Unknown icon property type '$props->{type}' for sub-" +
|
715
|
+
"property 'type' in conditional_formatting()"
|
716
|
+
else
|
717
|
+
props[i][:type] = type
|
718
|
+
|
719
|
+
if props[i][:type] == 'number'
|
720
|
+
props[i][:type] = 'num'
|
721
|
+
end
|
722
|
+
end
|
723
|
+
end
|
724
|
+
|
725
|
+
# Set the user defined 'criteria' property.
|
726
|
+
if user_props[i][:criteria] && user_props[i][:criteria] == '>'
|
727
|
+
props[i][:criteria] = 1
|
728
|
+
end
|
729
|
+
|
730
|
+
end
|
731
|
+
end
|
732
|
+
props
|
733
|
+
end
|
734
|
+
|
482
735
|
def date_1904?
|
483
736
|
@worksheet.date_1904?
|
484
737
|
end
|
@@ -578,6 +831,9 @@ class DataBarFormat < ConditionalFormat
|
|
578
831
|
def write_cf_rule
|
579
832
|
@writer.tag_elements('cfRule', attributes) do
|
580
833
|
write_data_bar
|
834
|
+
if ptrue?(@param[:is_data_bar_2010])
|
835
|
+
write_data_bar_ext(@param)
|
836
|
+
end
|
581
837
|
end
|
582
838
|
end
|
583
839
|
|
@@ -585,13 +841,42 @@ def write_cf_rule
|
|
585
841
|
# Write the <dataBar> element.
|
586
842
|
#
|
587
843
|
def write_data_bar
|
588
|
-
|
844
|
+
attributes = []
|
845
|
+
|
846
|
+
if ptrue?(bar_only)
|
847
|
+
attributes << ['showValue', 0]
|
848
|
+
end
|
849
|
+
@writer.tag_elements('dataBar',attributes) do
|
589
850
|
write_cfvo(min_type, min_value)
|
590
851
|
write_cfvo(max_type, max_value)
|
591
852
|
|
592
853
|
write_color(@writer, 'rgb', bar_color)
|
593
854
|
end
|
594
855
|
end
|
856
|
+
|
857
|
+
#
|
858
|
+
# Write the <extLst> dataBar extension element.
|
859
|
+
#
|
860
|
+
def write_data_bar_ext(param)
|
861
|
+
# Create a pseudo GUID for each unique Excel 2010 data bar.
|
862
|
+
worksheet_count = @worksheet.index + 1
|
863
|
+
data_bar_count = @worksheet.data_bars_2010.size + 1
|
864
|
+
|
865
|
+
guid = sprintf(
|
866
|
+
"{DA7ABA51-AAAA-BBBB-%04X-%012X}",
|
867
|
+
worksheet_count, data_bar_count
|
868
|
+
)
|
869
|
+
|
870
|
+
# Store the 2010 data bar parameters to write the extLst elements.
|
871
|
+
param[:guid] = guid
|
872
|
+
@worksheet.data_bars_2010 << param
|
873
|
+
|
874
|
+
@writer.tag_elements('extLst') do
|
875
|
+
@worksheet.write_ext('{B025F937-C7B1-47D3-B67F-A62EFF666E3E}') do
|
876
|
+
@writer.data_element('x14:id', guid)
|
877
|
+
end
|
878
|
+
end
|
879
|
+
end
|
595
880
|
end
|
596
881
|
|
597
882
|
class ExpressionFormat < ConditionalFormat
|
@@ -599,5 +884,33 @@ def write_cf_rule
|
|
599
884
|
write_cf_rule_formula_tag(criteria)
|
600
885
|
end
|
601
886
|
end
|
887
|
+
|
888
|
+
class IconSetFormat < ConditionalFormat
|
889
|
+
def write_cf_rule
|
890
|
+
@writer.tag_elements('cfRule', attributes) do
|
891
|
+
write_icon_set
|
892
|
+
end
|
893
|
+
end
|
894
|
+
|
895
|
+
#
|
896
|
+
# Write the <iconSet> element.
|
897
|
+
#
|
898
|
+
def write_icon_set
|
899
|
+
attributes = []
|
900
|
+
# Don't set attribute for default style.
|
901
|
+
attributes = [ ['iconSet', icon_style] ] if icon_style != '3TrafficLights'
|
902
|
+
attributes << ['showValue', 0] if icons_only
|
903
|
+
attributes << ['reverse', 1] if reverse_icons
|
904
|
+
|
905
|
+
@writer.tag_elements('iconSet', attributes) do
|
906
|
+
# Write the properties for different icon styles.
|
907
|
+
if icons
|
908
|
+
icons.reverse.each do |icon|
|
909
|
+
write_cfvo(icon[:type], icon[:value], icon[:criteria])
|
910
|
+
end
|
911
|
+
end
|
912
|
+
end
|
913
|
+
end
|
914
|
+
end
|
602
915
|
end
|
603
916
|
end
|