write_xlsx 0.0.4 → 0.51.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -2
- data/README.rdoc +14 -12
- data/Rakefile +8 -8
- data/VERSION +1 -1
- data/examples/chart_secondary_axis.rb +55 -0
- data/examples/date_time.rb +84 -0
- data/examples/panes.rb +108 -0
- data/examples/regions.rb +49 -0
- data/examples/shape1.rb +36 -0
- data/examples/shape2.rb +53 -0
- data/examples/shape3.rb +32 -0
- data/examples/shape4.rb +55 -0
- data/examples/shape5.rb +48 -0
- data/examples/shape6.rb +48 -0
- data/examples/shape7.rb +74 -0
- data/examples/shape8.rb +73 -0
- data/examples/shape_all.rb +241 -0
- data/examples/stats.rb +69 -0
- data/examples/stats_ext.rb +77 -0
- data/examples/stocks.rb +73 -0
- data/examples/tables.rb +360 -0
- data/lib/write_xlsx.rb +25 -1
- data/lib/write_xlsx/chart.rb +656 -260
- data/lib/write_xlsx/chart/area.rb +41 -7
- data/lib/write_xlsx/chart/bar.rb +16 -17
- data/lib/write_xlsx/chart/column.rb +5 -15
- data/lib/write_xlsx/chart/line.rb +15 -6
- data/lib/write_xlsx/chart/pie.rb +7 -21
- data/lib/write_xlsx/chart/scatter.rb +90 -20
- data/lib/write_xlsx/chart/stock.rb +24 -43
- data/lib/write_xlsx/chartsheet.rb +29 -11
- data/lib/write_xlsx/drawing.rb +354 -35
- data/lib/write_xlsx/format.rb +72 -21
- data/lib/write_xlsx/package/app.rb +2 -5
- data/lib/write_xlsx/package/comments.rb +5 -1
- data/lib/write_xlsx/package/content_types.rb +10 -0
- data/lib/write_xlsx/package/packager.rb +41 -7
- data/lib/write_xlsx/package/relationships.rb +1 -1
- data/lib/write_xlsx/package/shared_strings.rb +36 -8
- data/lib/write_xlsx/package/styles.rb +12 -9
- data/lib/write_xlsx/package/table.rb +194 -0
- data/lib/write_xlsx/package/vml.rb +26 -27
- data/lib/write_xlsx/package/xml_writer_simple.rb +25 -4
- data/lib/write_xlsx/shape.rb +172 -0
- data/lib/write_xlsx/utility.rb +20 -0
- data/lib/write_xlsx/workbook.rb +499 -141
- data/lib/write_xlsx/worksheet.rb +1162 -153
- data/test/chart/test_add_series.rb +43 -4
- data/test/chart/test_write_d_lbls.rb +274 -0
- data/test/chart/test_write_major_gridlines.rb +1 -1
- data/test/chartsheet/test_chartsheet01.rb +31 -0
- data/test/drawing/test_drawing_shape_01.rb +68 -0
- data/test/drawing/test_drawing_shape_02.rb +73 -0
- data/test/drawing/test_drawing_shape_03.rb +38 -0
- data/test/drawing/test_drawing_shape_04.rb +121 -0
- data/test/drawing/test_drawing_shape_05.rb +45 -0
- data/test/drawing/test_drawing_shape_06.rb +42 -0
- data/test/drawing/test_drawing_shape_07.rb +47 -0
- data/test/drawing/test_write_a_graphic_frame_locks.rb +18 -0
- data/test/drawing/test_write_c_chart.rb +18 -0
- data/test/drawing/test_write_c_nv_graphic_frame_pr.rb +28 -0
- data/test/drawing/test_write_c_nv_pr.rb +18 -0
- data/test/drawing/test_write_col.rb +18 -0
- data/test/drawing/test_write_col_off.rb +18 -0
- data/test/drawing/test_write_ext.rb +18 -0
- data/test/drawing/test_write_pos.rb +18 -0
- data/test/drawing/test_write_row.rb +18 -0
- data/test/drawing/test_write_row_off.rb +18 -0
- data/test/drawing/test_write_xfrm_extension.rb +18 -0
- data/test/drawing/test_write_xfrm_offset.rb +18 -0
- data/test/helper.rb +93 -50
- data/test/package/shared_strings/test_write_si.rb +10 -1
- data/test/package/table/test_table01.rb +42 -0
- data/test/package/table/test_table02.rb +44 -0
- data/test/package/table/test_table03.rb +48 -0
- data/test/package/table/test_table04.rb +46 -0
- data/test/package/table/test_table05.rb +46 -0
- data/test/package/table/test_table06.rb +52 -0
- data/test/package/table/test_table07.rb +47 -0
- data/test/package/table/test_table08.rb +53 -0
- data/test/package/table/test_table09.rb +65 -0
- data/test/package/table/test_table10.rb +45 -0
- data/test/package/table/test_table11.rb +60 -0
- data/test/package/table/test_table12.rb +60 -0
- data/test/package/table/test_write_auto_filter.rb +16 -0
- data/test/package/table/test_write_table_column.rb +15 -0
- data/test/package/table/test_write_table_style_info.rb +25 -0
- data/test/package/table/test_write_xml_declaration.rb +15 -0
- data/test/perl_output/a_simple.xlsx +0 -0
- data/test/perl_output/array_formula.xlsx +0 -0
- data/test/perl_output/chart_secondary_axis.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/demo.xlsx +0 -0
- data/test/perl_output/formats.xlsx +0 -0
- data/test/perl_output/headers.xlsx +0 -0
- data/test/perl_output/outline_collapsed.xlsx +0 -0
- data/test/perl_output/panes.xlsx +0 -0
- data/test/perl_output/regions.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/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/tables.xlsx +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/red.bmp +0 -0
- data/test/regression/images/red.jpg +0 -0
- data/test/regression/images/red.png +0 -0
- data/test/regression/images/yellow.jpg +0 -0
- data/test/regression/images/yellow.png +0 -0
- data/test/regression/test_array_formula01.rb +31 -0
- data/test/regression/test_array_formula02.rb +32 -0
- data/test/regression/test_autofilter00.rb +84 -0
- data/test/regression/test_autofilter01.rb +86 -0
- data/test/regression/test_autofilter02.rb +104 -0
- data/test/regression/test_autofilter03.rb +104 -0
- data/test/regression/test_autofilter04.rb +107 -0
- data/test/regression/test_autofilter05.rb +108 -0
- data/test/regression/test_autofilter06.rb +108 -0
- data/test/regression/test_autofilter07.rb +107 -0
- data/test/regression/test_chart_area01.rb +45 -0
- data/test/regression/test_chart_area02.rb +45 -0
- data/test/regression/test_chart_area03.rb +45 -0
- data/test/regression/test_chart_axis01.rb +46 -0
- data/test/regression/test_chart_axis02.rb +46 -0
- data/test/regression/test_chart_axis03.rb +68 -0
- data/test/regression/test_chart_axis04.rb +53 -0
- data/test/regression/test_chart_axis05.rb +48 -0
- data/test/regression/test_chart_axis06.rb +50 -0
- data/test/regression/test_chart_axis07.rb +54 -0
- data/test/regression/test_chart_axis08.rb +53 -0
- data/test/regression/test_chart_axis09.rb +47 -0
- data/test/regression/test_chart_axis10.rb +53 -0
- data/test/regression/test_chart_axis11.rb +47 -0
- data/test/regression/test_chart_axis12.rb +47 -0
- data/test/regression/test_chart_axis13.rb +53 -0
- data/test/regression/test_chart_axis14.rb +67 -0
- data/test/regression/test_chart_axis15.rb +48 -0
- data/test/regression/test_chart_axis16.rb +70 -0
- data/test/regression/test_chart_axis17.rb +46 -0
- data/test/regression/test_chart_axis18.rb +44 -0
- data/test/regression/test_chart_axis19.rb +46 -0
- data/test/regression/test_chart_axis20.rb +46 -0
- data/test/regression/test_chart_axis21.rb +50 -0
- data/test/regression/test_chart_bar01.rb +44 -0
- data/test/regression/test_chart_bar02.rb +55 -0
- data/test/regression/test_chart_bar03.rb +67 -0
- data/test/regression/test_chart_bar04.rb +70 -0
- data/test/regression/test_chart_bar05.rb +43 -0
- data/test/regression/test_chart_bar06.rb +50 -0
- data/test/regression/test_chart_bar07.rb +54 -0
- data/test/regression/test_chart_bar08.rb +44 -0
- data/test/regression/test_chart_bar09.rb +43 -0
- data/test/regression/test_chart_bar10.rb +47 -0
- data/test/regression/test_chart_bar11.rb +71 -0
- data/test/regression/test_chart_bar12.rb +43 -0
- data/test/regression/test_chart_bar13.rb +53 -0
- data/test/regression/test_chart_bar14.rb +63 -0
- data/test/regression/test_chart_bar15.rb +53 -0
- data/test/regression/test_chart_bar16.rb +51 -0
- data/test/regression/test_chart_bar17.rb +47 -0
- data/test/regression/test_chart_bar18.rb +58 -0
- data/test/regression/test_chart_bar19.rb +50 -0
- data/test/regression/test_chart_bar20.rb +47 -0
- data/test/regression/test_chart_bar21.rb +53 -0
- data/test/regression/test_chart_bar22.rb +68 -0
- data/test/regression/test_chart_bar23.rb +62 -0
- data/test/regression/test_chart_bar24.rb +46 -0
- data/test/regression/test_chart_blank01.rb +41 -0
- data/test/regression/test_chart_blank02.rb +41 -0
- data/test/regression/test_chart_blank03.rb +41 -0
- data/test/regression/test_chart_blank04.rb +41 -0
- data/test/regression/test_chart_blank05.rb +46 -0
- data/test/regression/test_chart_blank06.rb +41 -0
- data/test/regression/test_chart_column01.rb +43 -0
- data/test/regression/test_chart_column02.rb +45 -0
- data/test/regression/test_chart_column03.rb +45 -0
- data/test/regression/test_chart_column04.rb +45 -0
- data/test/regression/test_chart_column05.rb +39 -0
- data/test/regression/test_chart_column06.rb +46 -0
- data/test/regression/test_chart_crossing01.rb +50 -0
- data/test/regression/test_chart_crossing02.rb +48 -0
- data/test/regression/test_chart_crossing03.rb +53 -0
- data/test/regression/test_chart_crossing04.rb +53 -0
- data/test/regression/test_chart_format01.rb +44 -0
- data/test/regression/test_chart_format02.rb +45 -0
- data/test/regression/test_chart_format03.rb +46 -0
- data/test/regression/test_chart_format04.rb +45 -0
- data/test/regression/test_chart_format05.rb +45 -0
- data/test/regression/test_chart_format06.rb +52 -0
- data/test/regression/test_chart_format07.rb +57 -0
- data/test/regression/test_chart_format08.rb +52 -0
- data/test/regression/test_chart_format09.rb +56 -0
- data/test/regression/test_chart_format10.rb +59 -0
- data/test/regression/test_chart_format11.rb +63 -0
- data/test/regression/test_chart_format12.rb +60 -0
- data/test/regression/test_chart_format13.rb +52 -0
- data/test/regression/test_chart_format14.rb +56 -0
- data/test/regression/test_chart_format15.rb +54 -0
- data/test/regression/test_chart_format16.rb +57 -0
- data/test/regression/test_chart_format17.rb +40 -0
- data/test/regression/test_chart_format18.rb +44 -0
- data/test/regression/test_chart_line01.rb +39 -0
- data/test/regression/test_chart_line02.rb +45 -0
- data/test/regression/test_chart_name01.rb +46 -0
- data/test/regression/test_chart_name02.rb +58 -0
- data/test/regression/test_chart_name03.rb +58 -0
- data/test/regression/test_chart_pie01.rb +36 -0
- data/test/regression/test_chart_scatter01.rb +45 -0
- data/test/regression/test_chart_scatter02.rb +49 -0
- data/test/regression/test_chart_scatter03.rb +49 -0
- data/test/regression/test_chart_scatter04.rb +49 -0
- data/test/regression/test_chart_scatter05.rb +49 -0
- data/test/regression/test_chart_scatter06.rb +51 -0
- data/test/regression/test_chart_scatter07.rb +60 -0
- data/test/regression/test_chart_sparse01.rb +54 -0
- data/test/regression/test_chart_stock01.rb +72 -0
- data/test/regression/test_chart_stock02.rb +73 -0
- data/test/regression/test_chart_str01.rb +48 -0
- data/test/regression/test_chart_str02.rb +52 -0
- data/test/regression/test_chartsheet01.rb +46 -0
- data/test/regression/test_chartsheet02.rb +50 -0
- data/test/regression/test_chartsheet03.rb +48 -0
- data/test/regression/test_chartsheet04.rb +48 -0
- data/test/regression/test_chartsheet05.rb +48 -0
- data/test/regression/test_chartsheet06.rb +48 -0
- data/test/regression/test_chartsheet07.rb +57 -0
- data/test/regression/test_chartsheet08.rb +61 -0
- data/test/regression/test_chartsheet09.rb +52 -0
- data/test/regression/test_comment01.rb +27 -0
- data/test/regression/test_comment02.rb +28 -0
- data/test/regression/test_comment03.rb +32 -0
- data/test/regression/test_comment04.rb +37 -0
- data/test/regression/test_comment06.rb +34 -0
- data/test/regression/test_comment07.rb +36 -0
- data/test/regression/test_comment08.rb +36 -0
- data/test/regression/test_comment09.rb +32 -0
- data/test/regression/test_comment10.rb +31 -0
- data/test/regression/test_cond_format01.rb +46 -0
- data/test/regression/test_cond_format02.rb +41 -0
- data/test/regression/test_cond_format03.rb +52 -0
- data/test/regression/test_cond_format04.rb +51 -0
- data/test/regression/test_cond_format05.rb +41 -0
- data/test/regression/test_cond_format06.rb +45 -0
- data/test/regression/test_cond_format07.rb +62 -0
- data/test/regression/test_cond_format08.rb +46 -0
- data/test/regression/test_cond_format10.rb +43 -0
- data/test/regression/test_cond_format11.rb +47 -0
- data/test/regression/test_cond_format12.rb +47 -0
- data/test/regression/test_custom_colors01.rb +33 -0
- data/test/regression/test_date_1904_01.rb +36 -0
- data/test/regression/test_date_1904_02.rb +39 -0
- data/test/regression/test_defined_name01.rb +47 -0
- data/test/regression/test_escapes01.rb +37 -0
- data/test/regression/test_escapes02.rb +33 -0
- data/test/regression/test_escapes03.rb +34 -0
- data/test/regression/test_fit_to_pages01.rb +37 -0
- data/test/regression/test_fit_to_pages02.rb +37 -0
- data/test/regression/test_fit_to_pages03.rb +37 -0
- data/test/regression/test_fit_to_pages04.rb +37 -0
- data/test/regression/test_fit_to_pages05.rb +37 -0
- data/test/regression/test_format01.rb +35 -0
- data/test/regression/test_format02.rb +47 -0
- data/test/regression/test_format03.rb +31 -0
- data/test/regression/test_format04.rb +41 -0
- data/test/regression/test_gridlines01.rb +36 -0
- data/test/regression/test_hyperlink01.rb +23 -0
- data/test/regression/test_hyperlink02.rb +27 -0
- data/test/regression/test_hyperlink03.rb +32 -0
- data/test/regression/test_hyperlink04.rb +31 -0
- data/test/regression/test_hyperlink05.rb +26 -0
- data/test/regression/test_hyperlink06.rb +25 -0
- data/test/regression/test_hyperlink07.rb +24 -0
- data/test/regression/test_hyperlink08.rb +24 -0
- data/test/regression/test_hyperlink09.rb +25 -0
- data/test/regression/test_hyperlink10.rb +24 -0
- data/test/regression/test_hyperlink11.rb +24 -0
- data/test/regression/test_hyperlink12.rb +25 -0
- data/test/regression/test_hyperlink13.rb +24 -0
- data/test/regression/test_hyperlink14.rb +24 -0
- data/test/regression/test_hyperlink15.rb +26 -0
- data/test/regression/test_hyperlink16.rb +26 -0
- data/test/regression/test_hyperlink17.rb +27 -0
- data/test/regression/test_hyperlink18.rb +27 -0
- data/test/regression/test_image01.rb +23 -0
- data/test/regression/test_image02.rb +23 -0
- data/test/regression/test_image03.rb +23 -0
- data/test/regression/test_image04.rb +23 -0
- data/test/regression/test_image05.rb +26 -0
- data/test/regression/test_image06.rb +36 -0
- data/test/regression/test_image07.rb +25 -0
- data/test/regression/test_outline01.rb +86 -0
- data/test/regression/test_outline02.rb +89 -0
- data/test/regression/test_outline03.rb +59 -0
- data/test/regression/test_outline04.rb +55 -0
- data/test/regression/test_outline05.rb +90 -0
- data/test/regression/test_outline06.rb +89 -0
- data/test/regression/test_page_breaks01.rb +36 -0
- data/test/regression/test_page_breaks02.rb +36 -0
- data/test/regression/test_page_breaks03.rb +36 -0
- data/test/regression/test_page_breaks04.rb +36 -0
- data/test/regression/test_page_breaks05.rb +36 -0
- data/test/regression/test_page_breaks06.rb +37 -0
- data/test/regression/test_page_view01.rb +36 -0
- data/test/regression/test_panes01.rb +66 -0
- data/test/regression/test_print_across01.rb +37 -0
- data/test/regression/test_print_area01.rb +36 -0
- data/test/regression/test_print_area02.rb +36 -0
- data/test/regression/test_print_area03.rb +36 -0
- data/test/regression/test_print_area04.rb +36 -0
- data/test/regression/test_print_area05.rb +36 -0
- data/test/regression/test_print_area06.rb +36 -0
- data/test/regression/test_print_area07.rb +37 -0
- data/test/regression/test_print_options01.rb +36 -0
- data/test/regression/test_print_options02.rb +36 -0
- data/test/regression/test_print_options03.rb +36 -0
- data/test/regression/test_print_options04.rb +36 -0
- data/test/regression/test_print_options05.rb +39 -0
- data/test/regression/test_print_options06.rb +37 -0
- data/test/regression/test_print_scale01.rb +37 -0
- data/test/regression/test_print_scale02.rb +37 -0
- data/test/regression/test_properties01.rb +40 -0
- data/test/regression/test_repeat01.rb +36 -0
- data/test/regression/test_repeat02.rb +36 -0
- data/test/regression/test_repeat03.rb +37 -0
- data/test/regression/test_repeat04.rb +36 -0
- data/test/regression/test_repeat05.rb +43 -0
- data/test/regression/test_rich_string01.rb +28 -0
- data/test/regression/test_rich_string02.rb +28 -0
- data/test/regression/test_rich_string03.rb +28 -0
- data/test/regression/test_rich_string04.rb +28 -0
- data/test/regression/test_rich_string05.rb +30 -0
- data/test/regression/test_rich_string06.rb +27 -0
- data/test/regression/test_rich_string07.rb +33 -0
- data/test/regression/test_rich_string08.rb +29 -0
- data/test/regression/test_rich_string09.rb +31 -0
- data/test/regression/test_rich_string10.rb +30 -0
- data/test/regression/test_rich_string11.rb +29 -0
- data/test/regression/test_row_col_format01.rb +24 -0
- data/test/regression/test_row_col_format02.rb +25 -0
- data/test/regression/test_row_col_format03.rb +24 -0
- data/test/regression/test_row_col_format04.rb +25 -0
- data/test/regression/test_row_col_format05.rb +26 -0
- data/test/regression/test_row_col_format06.rb +29 -0
- data/test/regression/test_row_col_format07.rb +24 -0
- data/test/regression/test_row_col_format08.rb +34 -0
- data/test/regression/test_row_col_format09.rb +33 -0
- data/test/regression/test_row_col_format10.rb +24 -0
- data/test/regression/test_row_col_format11.rb +23 -0
- data/test/regression/test_row_col_format12.rb +23 -0
- data/test/regression/test_row_col_format13.rb +28 -0
- data/test/regression/test_row_col_format14.rb +28 -0
- data/test/regression/test_shape_connect01.rb +46 -0
- data/test/regression/test_shape_connect02.rb +42 -0
- data/test/regression/test_shape_connect03.rb +78 -0
- data/test/regression/test_shape_connect04.rb +75 -0
- data/test/regression/test_shape_scale01.rb +47 -0
- data/test/regression/test_shape_stencil01.rb +44 -0
- data/test/regression/test_shared_strings01.rb +34 -0
- data/test/regression/test_shared_strings02.rb +47 -0
- data/test/regression/test_simple01.rb +24 -0
- data/test/regression/test_simple02.rb +32 -0
- data/test/regression/test_tab_color01.rb +29 -0
- data/test/regression/test_table01.rb +27 -0
- data/test/regression/test_table02.rb +37 -0
- data/test/regression/test_table03.rb +30 -0
- data/test/regression/test_table04.rb +34 -0
- data/test/regression/test_table05.rb +38 -0
- data/test/regression/test_table06.rb +41 -0
- data/test/regression/test_table07.rb +29 -0
- data/test/regression/test_table08.rb +48 -0
- data/test/regression/test_table09.rb +65 -0
- data/test/regression/test_table10.rb +68 -0
- data/test/regression/test_table11.rb +37 -0
- data/test/regression/test_table12.rb +36 -0
- data/test/regression/test_table13.rb +51 -0
- data/test/regression/test_table14.rb +51 -0
- 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/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/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_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_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_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_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_line01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_line02.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_pie01.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_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/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/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/custom_colors01.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/defined_name01.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/filehandle01.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/gridlines01.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/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/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_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/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/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/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/simple01.xlsx +0 -0
- data/test/regression/xlsx_files/simple02.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/test_example_match.rb +2386 -889
- data/test/workbook/test_write_defined_names.rb +1 -1
- data/test/worksheet/test_cond_format_01.rb +82 -0
- data/test/worksheet/test_cond_format_02.rb +87 -0
- data/test/worksheet/test_cond_format_03.rb +97 -0
- data/test/worksheet/test_cond_format_04.rb +85 -0
- data/test/worksheet/test_cond_format_05.rb +96 -0
- data/test/worksheet/test_cond_format_06.rb +106 -0
- data/test/worksheet/test_cond_format_07.rb +116 -0
- data/test/worksheet/test_cond_format_08.rb +115 -0
- data/test/worksheet/test_cond_format_09.rb +108 -0
- data/test/worksheet/test_cond_format_10.rb +83 -0
- data/test/worksheet/test_cond_format_11.rb +85 -0
- data/test/worksheet/test_cond_format_12.rb +133 -0
- data/test/worksheet/test_cond_format_13.rb +135 -0
- data/test/worksheet/test_cond_format_14.rb +132 -0
- data/test/worksheet/test_cond_format_15.rb +93 -0
- data/test/worksheet/test_cond_format_16.rb +138 -0
- data/test/worksheet/test_cond_format_17.rb +141 -0
- data/test/worksheet/test_cond_format_18.rb +135 -0
- data/test/worksheet/test_cond_format_19.rb +139 -0
- data/test/worksheet/test_write_array_formula_01.rb +3 -4
- data/test/worksheet/test_write_data_validation_01.rb +1 -1
- data/test/worksheet/test_write_data_validation_02.rb +2 -2
- data/test/worksheet/test_write_methods.rb +6 -1
- data/test/worksheet/test_write_page_setup.rb +1 -1
- data/test/worksheet/test_write_sheet_view.rb +1 -1
- data/write_xlsx.gemspec +644 -9
- metadata +649 -22
- data/test/chart/test_write_chart_space.rb +0 -15
data/lib/write_xlsx/format.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
require 'write_xlsx/utility'
|
3
|
+
|
2
4
|
module Writexlsx
|
3
5
|
# ==CELL FORMATTING
|
4
6
|
#
|
@@ -158,6 +160,8 @@ module Writexlsx
|
|
158
160
|
# format1.set_bold( 0 ) # Turns bold off
|
159
161
|
#
|
160
162
|
class Format
|
163
|
+
include Writexlsx::Utility
|
164
|
+
|
161
165
|
attr_reader :xf_index, :dxf_index, :num_format # :nodoc:
|
162
166
|
attr_reader :underline, :font_script, :size, :theme, :font, :font_family, :hyperlink # :nodoc:
|
163
167
|
attr_reader :diag_type, :diag_color, :font_only, :color, :color_indexed # :nodoc:
|
@@ -167,6 +171,9 @@ class Format
|
|
167
171
|
attr_accessor :fill_index, :font_condense, :font_extend, :diag_border # :nodoc:
|
168
172
|
attr_accessor :bg_color, :fg_color, :pattern # :nodoc:
|
169
173
|
|
174
|
+
attr_accessor :dxf_bg_color, :dxf_fg_color # :nodoc:
|
175
|
+
attr_reader :rotation, :bold, :italic, :font_strikeout
|
176
|
+
|
170
177
|
def initialize(xf_format_indices = {}, dxf_format_indices = {}, params = {}) # :nodoc:
|
171
178
|
@xf_format_indices = xf_format_indices
|
172
179
|
@dxf_format_indices = dxf_format_indices
|
@@ -236,6 +243,22 @@ def initialize(xf_format_indices = {}, dxf_format_indices = {}, params = {}) #
|
|
236
243
|
set_format_properties(params) unless params.empty?
|
237
244
|
end
|
238
245
|
|
246
|
+
#
|
247
|
+
# Copy the attributes of another Format object.
|
248
|
+
#
|
249
|
+
def copy(other)
|
250
|
+
reserve = [
|
251
|
+
:xf_index,
|
252
|
+
:dxf_index,
|
253
|
+
:xf_format_indices,
|
254
|
+
:xdf_format_indices,
|
255
|
+
:palette
|
256
|
+
]
|
257
|
+
(instance_variables - reserve).each do |v|
|
258
|
+
instance_variable_set(v, other.instance_variable_get(v))
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
239
262
|
#
|
240
263
|
# :call-seq:
|
241
264
|
# set_format_properties( :bold => 1 [, :color => 'red'..] )
|
@@ -339,14 +362,14 @@ def get_align_properties
|
|
339
362
|
def get_protection_properties
|
340
363
|
attributes = []
|
341
364
|
|
342
|
-
attributes << 'locked' << 0
|
343
|
-
attributes << 'hidden' << 1
|
365
|
+
attributes << 'locked' << 0 unless ptrue?(@locked)
|
366
|
+
attributes << 'hidden' << 1 if ptrue?(@hidden)
|
344
367
|
|
345
368
|
attributes.empty? ? nil : attributes
|
346
369
|
end
|
347
370
|
|
348
371
|
def set_bold(bold = 1)
|
349
|
-
@bold = (bold
|
372
|
+
@bold = ptrue?(bold) ? 1 : 0
|
350
373
|
end
|
351
374
|
|
352
375
|
def inspect
|
@@ -600,6 +623,36 @@ def set_hyperlink
|
|
600
623
|
set_align('top')
|
601
624
|
end
|
602
625
|
|
626
|
+
def set_font_info(fonts)
|
627
|
+
key = get_font_key
|
628
|
+
|
629
|
+
if fonts[key]
|
630
|
+
# Font has already been used.
|
631
|
+
@font_index = fonts[key]
|
632
|
+
@has_font = false
|
633
|
+
else
|
634
|
+
# This is a new font.
|
635
|
+
@font_index = fonts.size
|
636
|
+
fonts[key] = fonts.size
|
637
|
+
@has_font = true
|
638
|
+
end
|
639
|
+
end
|
640
|
+
|
641
|
+
def set_border_info(borders)
|
642
|
+
key = get_border_key
|
643
|
+
|
644
|
+
if borders[key]
|
645
|
+
# Border has already been used.
|
646
|
+
@border_index = borders[key]
|
647
|
+
@has_border = false
|
648
|
+
else
|
649
|
+
# This is a new border.
|
650
|
+
@border_index = borders.size
|
651
|
+
borders[key] = borders.size
|
652
|
+
@has_border = true
|
653
|
+
end
|
654
|
+
end
|
655
|
+
|
603
656
|
def method_missing(name, *args) # :nodoc:
|
604
657
|
method = "#{name}"
|
605
658
|
|
@@ -616,42 +669,36 @@ def method_missing(name, *args) # :nodoc:
|
|
616
669
|
else # for "set_xxx" methods
|
617
670
|
value = args[0].nil? ? 1 : args[0]
|
618
671
|
end
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
672
|
+
|
673
|
+
instance_variable_set(attribute, value)
|
674
|
+
end
|
675
|
+
|
676
|
+
def color?
|
677
|
+
ptrue?(@color)
|
625
678
|
end
|
626
679
|
|
627
680
|
def bold?
|
628
|
-
|
681
|
+
ptrue?(@bold)
|
629
682
|
end
|
630
683
|
|
631
684
|
def italic?
|
632
|
-
|
685
|
+
ptrue?(@italic)
|
633
686
|
end
|
634
687
|
|
635
688
|
def strikeout?
|
636
|
-
|
689
|
+
ptrue?(@font_strikeout)
|
637
690
|
end
|
638
691
|
|
639
692
|
def outline?
|
640
|
-
|
693
|
+
ptrue?(@font_outline)
|
641
694
|
end
|
642
695
|
|
643
696
|
def shadow?
|
644
|
-
|
697
|
+
ptrue?(@font_shadow)
|
645
698
|
end
|
646
699
|
|
647
700
|
def underline?
|
648
|
-
|
649
|
-
end
|
650
|
-
|
651
|
-
def bool_both_ruby_and_perl?(val)
|
652
|
-
return false unless val
|
653
|
-
return false if val == 0
|
654
|
-
true
|
701
|
+
ptrue?(@underline)
|
655
702
|
end
|
656
703
|
|
657
704
|
def has_border(flag)
|
@@ -701,5 +748,9 @@ def has_dxf_fill(flag)
|
|
701
748
|
def has_dxf_fill?
|
702
749
|
@has_dxf_fill
|
703
750
|
end
|
751
|
+
|
752
|
+
def [](attr)
|
753
|
+
self.instance_variable_get("@#{attr}")
|
754
|
+
end
|
704
755
|
end
|
705
756
|
end
|
@@ -67,12 +67,9 @@ def write_xml_declaration
|
|
67
67
|
#
|
68
68
|
def write_properties
|
69
69
|
schema = 'http://schemas.openxmlformats.org/officeDocument/2006/'
|
70
|
-
xmlns = "#{schema}extended-properties"
|
71
|
-
xmlns_vt = "#{schema}docPropsVTypes"
|
72
|
-
|
73
70
|
attributes = [
|
74
|
-
'xmlns',
|
75
|
-
'xmlns:vt',
|
71
|
+
'xmlns', "#{schema}extended-properties",
|
72
|
+
'xmlns:vt', "#{schema}docPropsVTypes"
|
76
73
|
]
|
77
74
|
|
78
75
|
@writer.start_tag('Properties', attributes)
|
@@ -130,6 +130,10 @@ def initialize(worksheet)
|
|
130
130
|
@comments = {}
|
131
131
|
end
|
132
132
|
|
133
|
+
def [](row)
|
134
|
+
@comments[row]
|
135
|
+
end
|
136
|
+
|
133
137
|
def add(comment)
|
134
138
|
if @comments[comment.row]
|
135
139
|
@comments[comment.row][comment.col] = comment
|
@@ -173,7 +177,7 @@ def sorted_comments
|
|
173
177
|
@comments[row][col].visible ||= 1 if comments_visible?
|
174
178
|
|
175
179
|
# Set comment author if not already user defined.
|
176
|
-
@comments[row][col].author ||= @comments_author
|
180
|
+
@comments[row][col].author ||= @worksheet.comments_author
|
177
181
|
@sorted_comments << @comments[row][col]
|
178
182
|
end
|
179
183
|
end
|
@@ -127,6 +127,16 @@ def add_image_types(types)
|
|
127
127
|
types.each_key { |type| add_default(type, "image/#{type}") }
|
128
128
|
end
|
129
129
|
|
130
|
+
#
|
131
|
+
# Add the name of a table to the ContentTypes overrides.
|
132
|
+
#
|
133
|
+
def add_table_name(table_name)
|
134
|
+
add_override(
|
135
|
+
"/xl/tables/#{table_name}.xml",
|
136
|
+
"#{App_document}spreadsheetml.table+xml"
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
130
140
|
private
|
131
141
|
|
132
142
|
def write_xml_declaration
|
@@ -8,6 +8,7 @@
|
|
8
8
|
require 'write_xlsx/package/relationships'
|
9
9
|
require 'write_xlsx/package/shared_strings'
|
10
10
|
require 'write_xlsx/package/styles'
|
11
|
+
require 'write_xlsx/package/table'
|
11
12
|
require 'write_xlsx/package/theme'
|
12
13
|
require 'write_xlsx/package/vml'
|
13
14
|
|
@@ -25,6 +26,7 @@ def initialize
|
|
25
26
|
@chartsheet_count = 0
|
26
27
|
@chart_count = 0
|
27
28
|
@drawing_count = 0
|
29
|
+
@table_count = 0
|
28
30
|
@named_ranges = []
|
29
31
|
end
|
30
32
|
|
@@ -63,6 +65,7 @@ def create_package
|
|
63
65
|
write_drawing_files
|
64
66
|
write_vml_files
|
65
67
|
write_comment_files
|
68
|
+
write_table_files
|
66
69
|
write_shared_strings_file
|
67
70
|
write_app_file
|
68
71
|
write_core_file
|
@@ -215,7 +218,7 @@ def write_app_file
|
|
215
218
|
# Add the Chartsheet parts.
|
216
219
|
@workbook.worksheets.each do |worksheet|
|
217
220
|
next unless worksheet.is_chartsheet?
|
218
|
-
app.add_part_name(worksheet.
|
221
|
+
app.add_part_name(worksheet.name)
|
219
222
|
end
|
220
223
|
|
221
224
|
# Add the Named Range heading pairs.
|
@@ -271,6 +274,8 @@ def write_content_types_file
|
|
271
274
|
|
272
275
|
content.add_vml_name if @num_comment_files > 0
|
273
276
|
|
277
|
+
(1 .. @table_count).each { |i| content.add_table_name("table#{i}") }
|
278
|
+
|
274
279
|
(1 .. @num_comment_files).each { |i| content.add_comment_name("comments#{i}") }
|
275
280
|
|
276
281
|
# Add the sharedString rel if there is string data in the workbook.
|
@@ -325,6 +330,32 @@ def write_theme_file
|
|
325
330
|
rels.assemble_xml_file
|
326
331
|
end
|
327
332
|
|
333
|
+
#
|
334
|
+
# Write the table files.
|
335
|
+
#
|
336
|
+
def write_table_files
|
337
|
+
dir = @package_dir
|
338
|
+
|
339
|
+
index = 1
|
340
|
+
@workbook.worksheets.each do |worksheet|
|
341
|
+
table_props = worksheet.tables
|
342
|
+
|
343
|
+
next if table_props.empty?
|
344
|
+
|
345
|
+
FileUtils.mkdir_p("#{dir}/xl/tables")
|
346
|
+
|
347
|
+
table_props.each do |table_prop|
|
348
|
+
table = Package::Table.new
|
349
|
+
|
350
|
+
table.set_xml_writer("#{dir}/xl/tables/table#{index}.xml")
|
351
|
+
table.set_properties(table_prop)
|
352
|
+
table.assemble_xml_file
|
353
|
+
index += 1
|
354
|
+
@table_count += 1
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
358
|
+
|
328
359
|
#
|
329
360
|
# Write the _rels/.rels xml file.
|
330
361
|
#
|
@@ -387,6 +418,8 @@ def write_worksheet_rels_files
|
|
387
418
|
external_links = [
|
388
419
|
worksheet.external_hyper_links,
|
389
420
|
worksheet.external_drawing_links,
|
421
|
+
worksheet.external_vml_links,
|
422
|
+
worksheet.external_table_links,
|
390
423
|
worksheet.external_comment_links
|
391
424
|
].select {|a| a != []}
|
392
425
|
|
@@ -420,16 +453,17 @@ def write_worksheet_rels_files
|
|
420
453
|
#
|
421
454
|
def write_chartsheet_rels_files
|
422
455
|
existing_rels_dir = false
|
423
|
-
|
456
|
+
index = 0
|
424
457
|
@workbook.worksheets.each do |worksheet|
|
425
458
|
next unless worksheet.is_chartsheet?
|
459
|
+
index += 1
|
426
460
|
|
427
461
|
external_links = worksheet.external_drawing_links
|
428
462
|
|
429
463
|
next if external_links.empty?
|
430
464
|
|
431
465
|
# Create the chartsheet .rels dir if required.
|
432
|
-
if existing_rels_dir
|
466
|
+
if !existing_rels_dir
|
433
467
|
FileUtils.mkdir_p("#{@package_dir}/xl/chartsheets/_rels")
|
434
468
|
existing_rels_dir = true
|
435
469
|
end
|
@@ -437,12 +471,12 @@ def write_chartsheet_rels_files
|
|
437
471
|
rels = Package::Relationships.new
|
438
472
|
|
439
473
|
external_links.each do |link_data|
|
440
|
-
rels.add_worksheet_relationship(link_data)
|
474
|
+
rels.add_worksheet_relationship(*link_data)
|
441
475
|
end
|
442
476
|
|
443
477
|
# Create the .rels file such as /xl/chartsheets/_rels/sheet1.xml.rels.
|
444
478
|
rels.set_xml_writer(
|
445
|
-
"#{@package_dir}/xl/chartsheets/_rels/sheet#{
|
479
|
+
"#{@package_dir}/xl/chartsheets/_rels/sheet#{index}.xml.rels")
|
446
480
|
rels.assemble_xml_file
|
447
481
|
end
|
448
482
|
end
|
@@ -467,7 +501,7 @@ def write_drawing_rels_files
|
|
467
501
|
|
468
502
|
# Create the .rels file such as /xl/drawings/_rels/sheet1.xml.rels.
|
469
503
|
rels.set_xml_writer(
|
470
|
-
|
504
|
+
"#{@package_dir}/xl/drawings/_rels/drawing#{index}.xml.rels")
|
471
505
|
rels.assemble_xml_file
|
472
506
|
end
|
473
507
|
end
|
@@ -487,7 +521,7 @@ def add_image_files
|
|
487
521
|
filename = image[0]
|
488
522
|
extension = ".#{image[1]}"
|
489
523
|
|
490
|
-
|
524
|
+
FileUtils.cp(filename, "#{@package_dir}/xl/media/image#{index}#{extension}")
|
491
525
|
index += 1
|
492
526
|
end
|
493
527
|
end
|
@@ -52,7 +52,7 @@ def add_package_relationship(type, target)
|
|
52
52
|
#
|
53
53
|
# Add worksheet relationship to sheet.rels xml files.
|
54
54
|
#
|
55
|
-
def add_worksheet_relationship(type, target, target_mode)
|
55
|
+
def add_worksheet_relationship(type, target, target_mode = nil)
|
56
56
|
type = Document_schema + type
|
57
57
|
target = target
|
58
58
|
|
@@ -89,17 +89,45 @@ def write_sst_strings
|
|
89
89
|
# Write the <si> element.
|
90
90
|
#
|
91
91
|
def write_si(string)
|
92
|
+
string = string.dup
|
92
93
|
attributes = []
|
93
94
|
|
94
|
-
|
95
|
+
# Excel escapes control characters with _xHHHH_ and also escapes any
|
96
|
+
# literal strings of that type by encoding the leading underscore. So
|
97
|
+
# "\0" -> _x0000_ and "_x0000_" -> _x005F_x0000_.
|
98
|
+
# The following substitutions deal with those cases.
|
95
99
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
100
|
+
# Escape the escape.
|
101
|
+
string = string.gsub(/(_x[0-9a-fA-F]{4}_)/, '_x005F\1')
|
102
|
+
|
103
|
+
# Convert control character to the _xHHHH_ escape.
|
104
|
+
string = string.gsub(
|
105
|
+
/([\x00-\x08\x0B-\x1F])/,
|
106
|
+
sprintf("_x%04X_", $1.ord)
|
107
|
+
) if string =~ /([\x00-\x08\x0B-\x1F])/
|
108
|
+
|
109
|
+
# Convert character to \xC2\xxx or \xC3\xxx
|
110
|
+
unless string.empty?
|
111
|
+
string = add_c2_c3(string) if 0x80 <= string.ord && string.ord <= 0xFF
|
112
|
+
end
|
113
|
+
|
114
|
+
# Add attribute to preserve leading or trailing whitespace.
|
115
|
+
attributes << 'xml:space' << 'preserve' if string =~ /\A\s|\s\Z/
|
116
|
+
|
117
|
+
# Write any rich strings without further tags.
|
118
|
+
if string =~ %r{^<r>} && string =~ %r{</r>$}
|
119
|
+
@writer.si_rich_element(string)
|
120
|
+
else
|
121
|
+
@writer.si_element(string, attributes)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def add_c2_c3(string)
|
126
|
+
num = string.ord
|
127
|
+
if 0x80 <= num && num < 0xC0
|
128
|
+
0xC2.chr + num.chr
|
129
|
+
else
|
130
|
+
0xC3.chr + (num - 0x40).chr
|
103
131
|
end
|
104
132
|
end
|
105
133
|
|
@@ -279,6 +279,13 @@ def write_fill(format, dxf_format = nil)
|
|
279
279
|
bg_color = format.bg_color
|
280
280
|
fg_color = format.fg_color
|
281
281
|
|
282
|
+
# Colors for dxf formats are handled differently from normal formats since
|
283
|
+
# the normal format reverses the meaning of BG and FG for solid fills.
|
284
|
+
if dxf_format && dxf_format != 0
|
285
|
+
bg_color = format.dxf_bg_color
|
286
|
+
fg_color = format.dxf_fg_color
|
287
|
+
end
|
288
|
+
|
282
289
|
patterns = %w(
|
283
290
|
none
|
284
291
|
solid
|
@@ -308,14 +315,14 @@ def write_fill(format, dxf_format = nil)
|
|
308
315
|
else
|
309
316
|
attributes = ['patternType', patterns[format.pattern]]
|
310
317
|
end
|
311
|
-
|
318
|
+
|
312
319
|
@writer.tag_elements('patternFill', attributes) do
|
313
|
-
|
320
|
+
if fg_color && fg_color != 0
|
314
321
|
fg_color = get_palette_color(fg_color)
|
315
322
|
@writer.empty_tag('fgColor', ['rgb', fg_color])
|
316
323
|
end
|
317
324
|
|
318
|
-
if bg_color != 0
|
325
|
+
if bg_color && bg_color != 0
|
319
326
|
bg_color = get_palette_color(bg_color)
|
320
327
|
@writer.empty_tag('bgColor', ['rgb', bg_color])
|
321
328
|
else
|
@@ -426,9 +433,7 @@ def write_sub_border(type, style = 0, color = nil)
|
|
426
433
|
# Write the <cellStyleXfs> element.
|
427
434
|
#
|
428
435
|
def write_cell_style_xfs
|
429
|
-
|
430
|
-
|
431
|
-
attributes = ['count', count]
|
436
|
+
attributes = ['count', 1]
|
432
437
|
|
433
438
|
@writer.tag_elements('cellStyleXfs', attributes) do
|
434
439
|
# Write the style_xf element.
|
@@ -535,9 +540,7 @@ def write_xf(format)
|
|
535
540
|
# Write the <cellStyles> element.
|
536
541
|
#
|
537
542
|
def write_cell_styles
|
538
|
-
|
539
|
-
|
540
|
-
attributes = ['count', count]
|
543
|
+
attributes = ['count', 1]
|
541
544
|
|
542
545
|
@writer.tag_elements('cellStyles', attributes) do
|
543
546
|
# Write the cellStyle element.
|