l_axlsx 2.0.1
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.
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +239 -0
- data/LICENSE +22 -0
- data/README.md +259 -0
- data/Rakefile +30 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/IMAGE1UP.JPEG +0 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +16 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +88 -0
- data/examples/colored_links.rb +59 -0
- data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
- data/examples/conditional_formatting/getting_barred.rb +37 -0
- data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
- data/examples/conditional_formatting/scaled_colors.rb +39 -0
- data/examples/conditional_formatting/stop_and_go.rb +37 -0
- data/examples/data_validation.rb +50 -0
- data/examples/example.rb +828 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/merge_cells.rb +17 -0
- data/examples/no_grid_with_borders.rb +18 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/pivot_test.rb +63 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/split.rb +16 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +166 -0
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
- data/lib/axlsx/content_type/content_type.rb +26 -0
- data/lib/axlsx/content_type/default.rb +25 -0
- data/lib/axlsx/content_type/override.rb +25 -0
- data/lib/axlsx/doc_props/app.rb +235 -0
- data/lib/axlsx/doc_props/core.rb +39 -0
- data/lib/axlsx/drawing/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +190 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/bubble_chart.rb +59 -0
- data/lib/axlsx/drawing/bubble_series.rb +63 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +232 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +164 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +100 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
- data/lib/axlsx/drawing/line_chart.rb +99 -0
- data/lib/axlsx/drawing/line_series.rb +93 -0
- data/lib/axlsx/drawing/marker.rb +84 -0
- data/lib/axlsx/drawing/num_data.rb +52 -0
- data/lib/axlsx/drawing/num_data_source.rb +62 -0
- data/lib/axlsx/drawing/num_val.rb +32 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
- data/lib/axlsx/drawing/pic.rb +204 -0
- data/lib/axlsx/drawing/picture_locking.rb +42 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
- data/lib/axlsx/drawing/pie_series.rb +74 -0
- data/lib/axlsx/drawing/scaling.rb +60 -0
- data/lib/axlsx/drawing/scatter_chart.rb +74 -0
- data/lib/axlsx/drawing/scatter_series.rb +65 -0
- data/lib/axlsx/drawing/ser_axis.rb +45 -0
- data/lib/axlsx/drawing/series.rb +69 -0
- data/lib/axlsx/drawing/series_title.rb +23 -0
- data/lib/axlsx/drawing/str_data.rb +42 -0
- data/lib/axlsx/drawing/str_val.rb +32 -0
- data/lib/axlsx/drawing/title.rb +78 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
- data/lib/axlsx/drawing/val_axis.rb +37 -0
- data/lib/axlsx/drawing/view_3D.rb +115 -0
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +66 -0
- data/lib/axlsx/package.rb +363 -0
- data/lib/axlsx/rels/relationship.rb +129 -0
- data/lib/axlsx/rels/relationships.rb +29 -0
- data/lib/axlsx/stylesheet/border.rb +71 -0
- data/lib/axlsx/stylesheet/border_pr.rb +71 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
- data/lib/axlsx/stylesheet/cell_style.rb +72 -0
- data/lib/axlsx/stylesheet/color.rb +76 -0
- data/lib/axlsx/stylesheet/dxf.rb +79 -0
- data/lib/axlsx/stylesheet/fill.rb +35 -0
- data/lib/axlsx/stylesheet/font.rb +148 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +77 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
- data/lib/axlsx/stylesheet/styles.rb +420 -0
- data/lib/axlsx/stylesheet/table_style.rb +54 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
- data/lib/axlsx/stylesheet/table_styles.rb +46 -0
- data/lib/axlsx/stylesheet/xf.rb +147 -0
- data/lib/axlsx/util/accessors.rb +64 -0
- data/lib/axlsx/util/constants.rb +397 -0
- data/lib/axlsx/util/options_parser.rb +16 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +89 -0
- data/lib/axlsx/util/simple_typed_list.rb +179 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/string.rb +7 -0
- data/lib/axlsx/util/validators.rb +307 -0
- data/lib/axlsx/version.rb +5 -0
- data/lib/axlsx/workbook/defined_name.rb +128 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
- data/lib/axlsx/workbook/workbook.rb +361 -0
- data/lib/axlsx/workbook/workbook_view.rb +78 -0
- data/lib/axlsx/workbook/workbook_views.rb +22 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +471 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +154 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
- data/lib/axlsx/workbook/worksheet/col.rb +141 -0
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +266 -0
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/rich_text.rb +35 -0
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +254 -0
- data/lib/axlsx/workbook/worksheet/row.rb +154 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
- data/lib/axlsx/workbook/worksheet/table.rb +102 -0
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +798 -0
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +52 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +54 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4434 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +116 -0
- data/test/benchmark.rb +72 -0
- data/test/content_type/tc_content_type.rb +76 -0
- data/test/content_type/tc_default.rb +16 -0
- data/test/content_type/tc_override.rb +14 -0
- data/test/doc_props/tc_app.rb +43 -0
- data/test/doc_props/tc_core.rb +42 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +112 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_bubble_chart.rb +44 -0
- data/test/drawing/tc_bubble_series.rb +21 -0
- data/test/drawing/tc_cat_axis.rb +31 -0
- data/test/drawing/tc_cat_axis_data.rb +27 -0
- data/test/drawing/tc_chart.rb +110 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +23 -0
- data/test/drawing/tc_drawing.rb +80 -0
- data/test/drawing/tc_graphic_frame.rb +27 -0
- data/test/drawing/tc_hyperlink.rb +64 -0
- data/test/drawing/tc_line_3d_chart.rb +47 -0
- data/test/drawing/tc_line_chart.rb +39 -0
- data/test/drawing/tc_line_series.rb +38 -0
- data/test/drawing/tc_marker.rb +44 -0
- data/test/drawing/tc_named_axis_data.rb +27 -0
- data/test/drawing/tc_num_data.rb +31 -0
- data/test/drawing/tc_num_val.rb +29 -0
- data/test/drawing/tc_one_cell_anchor.rb +66 -0
- data/test/drawing/tc_pic.rb +107 -0
- data/test/drawing/tc_picture_locking.rb +72 -0
- data/test/drawing/tc_pie_3D_chart.rb +28 -0
- data/test/drawing/tc_pie_series.rb +32 -0
- data/test/drawing/tc_scaling.rb +36 -0
- data/test/drawing/tc_scatter_chart.rb +48 -0
- data/test/drawing/tc_scatter_series.rb +21 -0
- data/test/drawing/tc_ser_axis.rb +31 -0
- data/test/drawing/tc_series.rb +23 -0
- data/test/drawing/tc_series_title.rb +33 -0
- data/test/drawing/tc_str_data.rb +18 -0
- data/test/drawing/tc_str_val.rb +21 -0
- data/test/drawing/tc_title.rb +49 -0
- data/test/drawing/tc_two_cell_anchor.rb +36 -0
- data/test/drawing/tc_val_axis.rb +24 -0
- data/test/drawing/tc_view_3D.rb +54 -0
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +106 -0
- data/test/profile.rb +24 -0
- data/test/rels/tc_relationship.rb +44 -0
- data/test/rels/tc_relationships.rb +37 -0
- data/test/stylesheet/tc_border.rb +37 -0
- data/test/stylesheet/tc_border_pr.rb +32 -0
- data/test/stylesheet/tc_cell_alignment.rb +81 -0
- data/test/stylesheet/tc_cell_protection.rb +29 -0
- data/test/stylesheet/tc_cell_style.rb +57 -0
- data/test/stylesheet/tc_color.rb +43 -0
- data/test/stylesheet/tc_dxf.rb +81 -0
- data/test/stylesheet/tc_fill.rb +18 -0
- data/test/stylesheet/tc_font.rb +121 -0
- data/test/stylesheet/tc_gradient_fill.rb +72 -0
- data/test/stylesheet/tc_gradient_stop.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb +30 -0
- data/test/stylesheet/tc_pattern_fill.rb +43 -0
- data/test/stylesheet/tc_styles.rb +235 -0
- data/test/stylesheet/tc_table_style.rb +44 -0
- data/test/stylesheet/tc_table_style_element.rb +45 -0
- data/test/stylesheet/tc_table_styles.rb +29 -0
- data/test/stylesheet/tc_xf.rb +120 -0
- data/test/tc_axlsx.rb +72 -0
- data/test/tc_helper.rb +10 -0
- data/test/tc_package.rb +233 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +77 -0
- data/test/util/tc_validators.rb +186 -0
- data/test/workbook/tc_defined_name.rb +49 -0
- data/test/workbook/tc_shared_strings_table.rb +44 -0
- data/test/workbook/tc_workbook.rb +139 -0
- data/test/workbook/tc_workbook_view.rb +50 -0
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_cell.rb +345 -0
- data/test/workbook/worksheet/tc_cfvo.rb +31 -0
- data/test/workbook/worksheet/tc_col.rb +78 -0
- data/test/workbook/worksheet/tc_color_scale.rb +58 -0
- data/test/workbook/worksheet/tc_comment.rb +72 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
- data/test/workbook/worksheet/tc_data_bar.rb +46 -0
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
- data/test/workbook/worksheet/tc_header_footer.rb +151 -0
- data/test/workbook/worksheet/tc_icon_set.rb +45 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
- data/test/workbook/worksheet/tc_page_setup.rb +143 -0
- data/test/workbook/worksheet/tc_pane.rb +54 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_rich_text.rb +44 -0
- data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
- data/test/workbook/worksheet/tc_row.rb +117 -0
- data/test/workbook/worksheet/tc_selection.rb +55 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_table.rb +68 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +563 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +583 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestDefinedNames < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@dn = Axlsx::DefinedName.new('Sheet1!A1:A1')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_initialize
|
|
9
|
+
assert_equal('Sheet1!A1:A1', @dn.formula)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_string_attributes
|
|
13
|
+
%w(short_cut_key status_bar help description custom_menu comment).each do |attr|
|
|
14
|
+
assert_raise(ArgumentError, 'only strings allowed in string attributes') { @dn.send("#{attr}=", 1) }
|
|
15
|
+
assert_nothing_raised { @dn.send("#{attr}=", '_xlnm.Sheet_Title') }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_boolean_attributes
|
|
20
|
+
%w(workbook_parameter publish_to_server xlm vb_proceedure function hidden).each do |attr|
|
|
21
|
+
assert_raise(ArgumentError, 'only booleanish allowed in string attributes') { @dn.send("#{attr}=", 'foo') }
|
|
22
|
+
assert_nothing_raised { @dn.send("#{attr}=", 1) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_local_sheet_id
|
|
28
|
+
assert_raise(ArgumentError, 'local_sheet_id must be an unsigned int') { @dn.local_sheet_id = -1 }
|
|
29
|
+
assert_nothing_raised { @dn.local_sheet_id = 1 }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_do_not_camelcase_value_for_name
|
|
33
|
+
@dn.name = '_xlnm._FilterDatabase'
|
|
34
|
+
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
35
|
+
assert_equal(doc.xpath("//definedName[@name='_xlnm._FilterDatabase']").size, 1)
|
|
36
|
+
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_to_xml_string
|
|
40
|
+
assert_raise(ArgumentError, 'name is required for serialization') { @dn.to_xml_string }
|
|
41
|
+
@dn.name = '_xlnm.Print_Titles'
|
|
42
|
+
@dn.hidden = true
|
|
43
|
+
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
44
|
+
assert_equal(doc.xpath("//definedName[@name='_xlnm.Print_Titles']").size, 1)
|
|
45
|
+
assert_equal(doc.xpath("//definedName[@hidden='1']").size, 1)
|
|
46
|
+
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestSharedStringsTable < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@p = Axlsx::Package.new :use_shared_strings=>true
|
|
7
|
+
ws = @p.workbook.add_worksheet
|
|
8
|
+
ws.add_row ['a', 1, 'b']
|
|
9
|
+
ws.add_row ['b', 1, 'c']
|
|
10
|
+
ws.add_row ['c', 1, 'd']
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_workbook_has_shared_strings
|
|
14
|
+
assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_count
|
|
18
|
+
sst = @p.workbook.shared_strings
|
|
19
|
+
assert_equal(sst.count, 6)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_unique_count
|
|
23
|
+
sst = @p.workbook.shared_strings
|
|
24
|
+
assert_equal(sst.unique_count, 4)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_uses_workbook_xml_space
|
|
28
|
+
assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
|
|
29
|
+
@p.workbook.xml_space = :default
|
|
30
|
+
assert_equal(:default, @p.workbook.shared_strings.xml_space)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_valid_document
|
|
34
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
35
|
+
doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
|
|
36
|
+
errors = []
|
|
37
|
+
schema.validate(doc).each do |error|
|
|
38
|
+
puts error.message
|
|
39
|
+
errors << error
|
|
40
|
+
end
|
|
41
|
+
assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestWorkbook < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
@wb = p.workbook
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def teardown
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_worksheet_users_xml_space
|
|
13
|
+
sheet = @wb.add_worksheet(:name => 'foo')
|
|
14
|
+
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
15
|
+
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
|
|
16
|
+
|
|
17
|
+
@wb.xml_space = :default
|
|
18
|
+
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
19
|
+
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_xml_space
|
|
23
|
+
assert_equal(:preserve, @wb.xml_space)
|
|
24
|
+
@wb.xml_space = :default
|
|
25
|
+
assert_equal(:default, @wb.xml_space)
|
|
26
|
+
assert_raise(ArgumentError) { @wb.xml_space = :none }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_no_autowidth
|
|
30
|
+
assert_equal(@wb.use_autowidth, true)
|
|
31
|
+
assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
|
|
32
|
+
assert_nothing_raised {@wb.use_autowidth = false}
|
|
33
|
+
assert_equal(@wb.use_autowidth, false)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_sheet_by_name_retrieval
|
|
38
|
+
@wb.add_worksheet(:name=>'foo')
|
|
39
|
+
@wb.add_worksheet(:name=>'bar')
|
|
40
|
+
assert_equal('foo', @wb.sheet_by_name('foo').name)
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
def test_date1904
|
|
44
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
45
|
+
@wb.date1904 = :false
|
|
46
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
47
|
+
Axlsx::Workbook.date1904 = :true
|
|
48
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_add_defined_name
|
|
52
|
+
@wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
|
|
53
|
+
assert_equal(1, @wb.defined_names.size)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_add_view
|
|
57
|
+
@wb.add_view visibility: :hidden, window_width: 800
|
|
58
|
+
assert_equal(1, @wb.views.size)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def test_shared_strings
|
|
62
|
+
assert_equal(@wb.use_shared_strings, nil)
|
|
63
|
+
assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
|
|
64
|
+
assert_nothing_raised {@wb.use_shared_strings = :true}
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_add_worksheet
|
|
68
|
+
assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
|
|
69
|
+
ws = @wb.add_worksheet(:name=>"bob")
|
|
70
|
+
assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
|
|
71
|
+
assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
|
|
72
|
+
assert_equal(ws.name, "bob", "name option gets passed to worksheet")
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_insert_worksheet
|
|
76
|
+
@wb.add_worksheet(:name => 'A')
|
|
77
|
+
@wb.add_worksheet(:name => 'B')
|
|
78
|
+
ws3 = @wb.insert_worksheet(0, :name => 'C')
|
|
79
|
+
assert_equal(ws3.name, @wb.worksheets.first.name)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_relationships
|
|
83
|
+
#current relationship size is 1 due to style relation
|
|
84
|
+
assert(@wb.relationships.size == 1)
|
|
85
|
+
@wb.add_worksheet
|
|
86
|
+
assert(@wb.relationships.size == 2)
|
|
87
|
+
@wb.use_shared_strings = true
|
|
88
|
+
assert(@wb.relationships.size == 3)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_to_xml
|
|
92
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
93
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
94
|
+
errors = []
|
|
95
|
+
schema.validate(doc).each do |error|
|
|
96
|
+
errors.push error
|
|
97
|
+
puts error.message
|
|
98
|
+
end
|
|
99
|
+
assert(errors.empty?, "error free validation")
|
|
100
|
+
end
|
|
101
|
+
def test_range_requires__valid_sheet
|
|
102
|
+
ws = @wb.add_worksheet :name=>'fish'
|
|
103
|
+
ws.add_row [1,2,3]
|
|
104
|
+
ws.add_row [4,5,6]
|
|
105
|
+
assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
|
|
106
|
+
assert_equal @wb['fish!A1:C2'].size, 6
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def test_to_xml_adds_worksheet_when_worksheets_is_empty
|
|
110
|
+
assert(@wb.worksheets.empty?)
|
|
111
|
+
@wb.to_xml_string
|
|
112
|
+
assert(@wb.worksheets.size == 1)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_to_xml_string_defined_names
|
|
116
|
+
@wb.add_worksheet do |sheet|
|
|
117
|
+
sheet.add_row [1, "two"]
|
|
118
|
+
sheet.auto_filter = "A1:B1"
|
|
119
|
+
end
|
|
120
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
121
|
+
assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_to_xml_string_book_views
|
|
125
|
+
@wb.add_worksheet do |sheet|
|
|
126
|
+
sheet.add_row [1, "two"]
|
|
127
|
+
end
|
|
128
|
+
@wb.add_view active_tab: 0, first_sheet: 0
|
|
129
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
130
|
+
assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def test_to_xml_uses_correct_rIds_for_pivotCache
|
|
134
|
+
ws = @wb.add_worksheet
|
|
135
|
+
pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
136
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
137
|
+
assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
|
|
138
|
+
end
|
|
139
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestWorkbookView < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
|
|
7
|
+
show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
|
|
8
|
+
window_width: 800, window_height: 600, auto_filter_date_grouping: true }
|
|
9
|
+
@book_view = Axlsx::WorkbookView.new @options
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_options_assignation
|
|
13
|
+
@options.each do |key, value|
|
|
14
|
+
assert_equal(value, @book_view.send(key))
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_boolean_attribute_validation
|
|
19
|
+
%w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
|
|
20
|
+
assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
|
|
21
|
+
assert_nothing_raised { @book_view.send("#{attr}=", false )}
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_integer_attribute_validation
|
|
26
|
+
%w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
|
|
27
|
+
assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
|
|
28
|
+
assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_visibility_attribute_validation
|
|
33
|
+
assert_raise(ArgumentError) { @book_view.visibility = :foobar }
|
|
34
|
+
assert_nothing_raised { @book_view.visibility = :hidden }
|
|
35
|
+
assert_nothing_raised { @book_view.visibility = :very_hidden }
|
|
36
|
+
assert_nothing_raised { @book_view.visibility = :visible }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_to_xml_string
|
|
40
|
+
xml = @book_view.to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(xml)
|
|
42
|
+
@options.each do |key, value|
|
|
43
|
+
if value == true || value == false
|
|
44
|
+
value = value ? 1 : 0
|
|
45
|
+
end
|
|
46
|
+
path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
|
|
47
|
+
assert_equal(1, doc.xpath(path).size)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestAutoFilter < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
ws = Axlsx::Package.new.workbook.add_worksheet
|
|
7
|
+
3.times { |index| ws.add_row [1*index,2*index,3*index] }
|
|
8
|
+
@auto_filter = ws.auto_filter
|
|
9
|
+
@auto_filter.range = 'A1:C3'
|
|
10
|
+
@auto_filter.add_column 0, :filters, :filter_items => [1]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_defined_name
|
|
14
|
+
assert_equal("'Sheet1'!$A$1:$C$3", @auto_filter.defined_name)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_to_xml_string
|
|
18
|
+
doc = Nokogiri::XML(@auto_filter.to_xml_string)
|
|
19
|
+
assert(doc.xpath("autoFilter[@ref='#{@auto_filter.range}']"))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_columns
|
|
23
|
+
assert @auto_filter.columns.is_a?(Axlsx::SimpleTypedList)
|
|
24
|
+
assert_equal @auto_filter.columns.allowed_types, [Axlsx::FilterColumn]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_add_column
|
|
28
|
+
@auto_filter.add_column(0, :filters) do |column|
|
|
29
|
+
assert column.is_a? FilterColumn
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_applya
|
|
34
|
+
assert_equal nil, @auto_filter.worksheet.rows.last.hidden
|
|
35
|
+
@auto_filter.apply
|
|
36
|
+
assert_equal true, @auto_filter.worksheet.rows.last.hidden
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestFilterColumn < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@filter_column = Axlsx::FilterColumn.new(0, :filters, :filter_items => [200])
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def test_initialize_col_id
|
|
11
|
+
assert_raise ArgumentError do
|
|
12
|
+
Axlsx::FilterColumn.new(0, :bobs_house_of_filter)
|
|
13
|
+
end
|
|
14
|
+
assert_raise ArgumentError do
|
|
15
|
+
Axlsx::FilterColumn.new(:penut, :filters)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_initailize_filter_type
|
|
20
|
+
assert @filter_column.filter.is_a?(Axlsx::Filters)
|
|
21
|
+
assert_equal 1, @filter_column.filter.filter_items.size
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_initialize_filter_type_filters_with_options
|
|
25
|
+
assert_equal 200, @filter_column.filter.filter_items.first.val
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_initialize_with_block
|
|
29
|
+
filter_column = Axlsx::FilterColumn.new(0, :filters) do |filters|
|
|
30
|
+
filters.filter_items = [700, 100, 5]
|
|
31
|
+
end
|
|
32
|
+
assert_equal 3, filter_column.filter.filter_items.size
|
|
33
|
+
assert_equal 700, filter_column.filter.filter_items.first.val
|
|
34
|
+
assert_equal 5, filter_column.filter.filter_items.last.val
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_default_show_button
|
|
38
|
+
assert_equal true, @filter_column.show_button
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_default_hidden_button
|
|
42
|
+
assert_equal false, @filter_column.hidden_button
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_show_button
|
|
46
|
+
assert_raise ArgumentError do
|
|
47
|
+
@filter_column.show_button = :foo
|
|
48
|
+
end
|
|
49
|
+
assert_nothing_raised { @filter_column.show_button = false }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_hidden_button
|
|
53
|
+
assert_raise ArgumentError do
|
|
54
|
+
@filter_column.hidden_button = :hoge
|
|
55
|
+
end
|
|
56
|
+
assert_nothing_raised { @filter_column.hidden_button = true }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_col_id=
|
|
60
|
+
assert_raise ArgumentError do
|
|
61
|
+
@filter_column.col_id = :bar
|
|
62
|
+
end
|
|
63
|
+
assert_nothing_raised { @filter_column.col_id = 7 }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_to_xml_string
|
|
67
|
+
doc = Nokogiri::XML(@filter_column.to_xml_string)
|
|
68
|
+
assert doc.xpath("//filterColumn[@colId=#{@filter_column.col_id}]")
|
|
69
|
+
assert doc.xpath("//filterColumn[@hiddenButton=#{@filter_column.hidden_button}]")
|
|
70
|
+
assert doc.xpath("//filterColumn[@showButton=#{@filter_column.show_button}]")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
assert doc.xpath("//filterColumn/filters")
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestFilters < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@filters = Axlsx::Filters.new(:filter_items => [1, 'a'],
|
|
6
|
+
:date_group_items =>[ { :date_time_grouping => :year, :year => 2011, :month => 11, :day => 11, :hour => 0, :minute => 0, :second => 0 } ] ,
|
|
7
|
+
:blank => true)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_blank
|
|
11
|
+
assert_equal true, @filters.blank
|
|
12
|
+
assert_raise(ArgumentError) { @filters.blank = :only_if_you_want_it }
|
|
13
|
+
@filters.blank = true
|
|
14
|
+
assert_equal true, @filters.blank
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_calendar_type
|
|
18
|
+
assert_raise(ArgumentError) { @filters.calendar_type = 'monkey calendar' }
|
|
19
|
+
@filters.calendar_type = 'japan'
|
|
20
|
+
assert_equal('japan', @filters.calendar_type)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_filters_items
|
|
24
|
+
assert @filters.filter_items.is_a?(Array)
|
|
25
|
+
assert_equal 2, @filters.filter_items.size
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_date_group_items
|
|
29
|
+
assert @filters.date_group_items.is_a?(Array)
|
|
30
|
+
assert_equal 1, @filters.date_group_items.size
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_apply_is_false_for_matching_values
|
|
34
|
+
keeper = Object.new
|
|
35
|
+
def keeper.value; 'a'; end
|
|
36
|
+
assert_equal false, @filters.apply(keeper)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_apply_is_true_for_non_matching_values
|
|
40
|
+
hidden = Object.new
|
|
41
|
+
def hidden.value; 'b'; end
|
|
42
|
+
assert_equal true, @filters.apply(hidden)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_to_xml_string
|
|
46
|
+
doc = Nokogiri::XML(@filters.to_xml_string)
|
|
47
|
+
assert_equal(1, doc.xpath('//filters[@blank=1]').size)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|