caxlsx 3.2.0 → 3.3.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/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +385 -354
- data/LICENSE +21 -21
- data/README.md +165 -168
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
- data/lib/axlsx/drawing/bar_chart.rb +138 -138
- data/lib/axlsx/drawing/bar_series.rb +97 -97
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +299 -276
- data/lib/axlsx/drawing/d_lbls.rb +91 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -129
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +107 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +398 -388
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -73
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +535 -494
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +416 -410
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +425 -395
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +204 -185
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
|
@@ -1,164 +1,164 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
# The Cell Serializer class contains the logic for serializing cells based on their type.
|
|
4
|
-
class CellSerializer
|
|
5
|
-
class << self
|
|
6
|
-
# Calls the proper serialization method based on type.
|
|
7
|
-
# @param [Integer] row_index The index of the cell's row
|
|
8
|
-
# @param [Integer] column_index The index of the cell's column
|
|
9
|
-
# @param [String] str The string to apend serialization to.
|
|
10
|
-
# @return [String]
|
|
11
|
-
def to_xml_string(row_index, column_index, cell, str='')
|
|
12
|
-
str << ('<c r="' << Axlsx::cell_r(column_index, row_index) << '" s="' << cell.style.to_s << '" ')
|
|
13
|
-
return str << '/>' if cell.value.nil?
|
|
14
|
-
method = cell.type
|
|
15
|
-
self.send(method, cell, str)
|
|
16
|
-
str << '</c>'
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# builds an xml text run based on this cells attributes.
|
|
20
|
-
# @param [String] str The string instance this run will be concated to.
|
|
21
|
-
# @return [String]
|
|
22
|
-
def run_xml_string(cell, str = '')
|
|
23
|
-
if cell.is_text_run?
|
|
24
|
-
valid = RichTextRun::INLINE_STYLES - [:value, :type]
|
|
25
|
-
data = Hash[cell.
|
|
26
|
-
data = data.select { |key, value| valid.include?(key) && !value.nil? }
|
|
27
|
-
RichText.new(cell.value.to_s, data).to_xml_string(str)
|
|
28
|
-
elsif cell.contains_rich_text?
|
|
29
|
-
cell.value.to_xml_string(str)
|
|
30
|
-
else
|
|
31
|
-
str << ('<t>' << cell.clean_value << '</t>')
|
|
32
|
-
end
|
|
33
|
-
str
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# serializes cells that are type iso_8601
|
|
37
|
-
# @param [Cell] cell The cell that is being serialized
|
|
38
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
39
|
-
# @return [String]
|
|
40
|
-
def iso_8601(cell, str='')
|
|
41
|
-
value_serialization 'd', cell.value, str
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# serializes cells that are type date
|
|
45
|
-
# @param [Cell] cell The cell that is being serialized
|
|
46
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
47
|
-
# @return [String]
|
|
48
|
-
def date(cell, str='')
|
|
49
|
-
value_serialization false, DateTimeConverter::date_to_serial(cell.value).to_s, str
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Serializes cells that are type time
|
|
53
|
-
# @param [Cell] cell The cell that is being serialized
|
|
54
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
55
|
-
# @return [String]
|
|
56
|
-
def time(cell, str='')
|
|
57
|
-
value_serialization false, DateTimeConverter::time_to_serial(cell.value).to_s, str
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Serializes cells that are type boolean
|
|
61
|
-
# @param [Cell] cell The cell that is being serialized
|
|
62
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
63
|
-
# @return [String]
|
|
64
|
-
def boolean(cell, str='')
|
|
65
|
-
value_serialization 'b', cell.value.to_s, str
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Serializes cells that are type float
|
|
69
|
-
# @param [Cell] cell The cell that is being serialized
|
|
70
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
71
|
-
# @return [String]
|
|
72
|
-
def float(cell, str='')
|
|
73
|
-
numeric cell, str
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Serializes cells that are type integer
|
|
77
|
-
# @param [Cell] cell The cell that is being serialized
|
|
78
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
79
|
-
# @return [String]
|
|
80
|
-
def integer(cell, str = '')
|
|
81
|
-
numeric cell, str
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# Serializes cells that are type formula
|
|
85
|
-
# @param [Cell] cell The cell that is being serialized
|
|
86
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
87
|
-
# @return [String]
|
|
88
|
-
def formula_serialization(cell, str='')
|
|
89
|
-
str << ('t="str"><f>' << cell.clean_value.to_s.sub('=', '') << '</f>')
|
|
90
|
-
str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# Serializes cells that are type array formula
|
|
94
|
-
# @param [Cell] cell The cell that is being serialized
|
|
95
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
96
|
-
# @return [String]
|
|
97
|
-
def array_formula_serialization(cell, str='')
|
|
98
|
-
str << ('t="str">' << '<f t="array" ref="' << cell.r << '">' << cell.clean_value.to_s.sub('{=', '').sub(/}$/, '') << '</f>')
|
|
99
|
-
str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# Serializes cells that are type inline_string
|
|
103
|
-
# @param [Cell] cell The cell that is being serialized
|
|
104
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
105
|
-
# @return [String]
|
|
106
|
-
def inline_string_serialization(cell, str = '')
|
|
107
|
-
str << 't="inlineStr"><is>'
|
|
108
|
-
run_xml_string cell, str
|
|
109
|
-
str << '</is>'
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
# Serializes cells that are type string
|
|
113
|
-
# @param [Cell] cell The cell that is being serialized
|
|
114
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
115
|
-
# @return [String]
|
|
116
|
-
def string(cell, str='')
|
|
117
|
-
if cell.is_array_formula?
|
|
118
|
-
array_formula_serialization cell, str
|
|
119
|
-
elsif cell.is_formula?
|
|
120
|
-
formula_serialization cell, str
|
|
121
|
-
elsif !cell.ssti.nil?
|
|
122
|
-
value_serialization 's', cell.ssti, str
|
|
123
|
-
else
|
|
124
|
-
inline_string_serialization cell, str
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
# Serializes cells that are of the type richtext
|
|
129
|
-
# @param [Cell] cell The cell that is being serialized
|
|
130
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
131
|
-
# @return [String]
|
|
132
|
-
def richtext(cell, str)
|
|
133
|
-
if cell.ssti.nil?
|
|
134
|
-
inline_string_serialization cell, str
|
|
135
|
-
else
|
|
136
|
-
value_serialization 's', cell.ssti, str
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
# Serializes cells that are of the type text
|
|
141
|
-
# @param [Cell] cell The cell that is being serialized
|
|
142
|
-
# @param [String] str The string the serialized content will be appended to.
|
|
143
|
-
# @return [String]
|
|
144
|
-
def text(cell, str)
|
|
145
|
-
if cell.ssti.nil?
|
|
146
|
-
inline_string_serialization cell, str
|
|
147
|
-
else
|
|
148
|
-
value_serialization 's', cell.ssti, str
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
private
|
|
153
|
-
|
|
154
|
-
def numeric(cell, str = '')
|
|
155
|
-
value_serialization 'n', cell.value, str
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def value_serialization(serialization_type, serialization_value, str = '')
|
|
159
|
-
str << ('t="' << serialization_type.to_s << '"') if serialization_type
|
|
160
|
-
str << ('><v>' << serialization_value.to_s << '</v>')
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
# The Cell Serializer class contains the logic for serializing cells based on their type.
|
|
4
|
+
class CellSerializer
|
|
5
|
+
class << self
|
|
6
|
+
# Calls the proper serialization method based on type.
|
|
7
|
+
# @param [Integer] row_index The index of the cell's row
|
|
8
|
+
# @param [Integer] column_index The index of the cell's column
|
|
9
|
+
# @param [String] str The string to apend serialization to.
|
|
10
|
+
# @return [String]
|
|
11
|
+
def to_xml_string(row_index, column_index, cell, str='')
|
|
12
|
+
str << ('<c r="' << Axlsx::cell_r(column_index, row_index) << '" s="' << cell.style.to_s << '" ')
|
|
13
|
+
return str << '/>' if cell.value.nil?
|
|
14
|
+
method = cell.type
|
|
15
|
+
self.send(method, cell, str)
|
|
16
|
+
str << '</c>'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# builds an xml text run based on this cells attributes.
|
|
20
|
+
# @param [String] str The string instance this run will be concated to.
|
|
21
|
+
# @return [String]
|
|
22
|
+
def run_xml_string(cell, str = '')
|
|
23
|
+
if cell.is_text_run?
|
|
24
|
+
valid = RichTextRun::INLINE_STYLES - [:value, :type]
|
|
25
|
+
data = Hash[Axlsx.instance_values_for(cell).map{ |k, v| [k.to_sym, v] }]
|
|
26
|
+
data = data.select { |key, value| valid.include?(key) && !value.nil? }
|
|
27
|
+
RichText.new(cell.value.to_s, data).to_xml_string(str)
|
|
28
|
+
elsif cell.contains_rich_text?
|
|
29
|
+
cell.value.to_xml_string(str)
|
|
30
|
+
else
|
|
31
|
+
str << ('<t>' << cell.clean_value << '</t>')
|
|
32
|
+
end
|
|
33
|
+
str
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# serializes cells that are type iso_8601
|
|
37
|
+
# @param [Cell] cell The cell that is being serialized
|
|
38
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
39
|
+
# @return [String]
|
|
40
|
+
def iso_8601(cell, str='')
|
|
41
|
+
value_serialization 'd', cell.value, str
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# serializes cells that are type date
|
|
45
|
+
# @param [Cell] cell The cell that is being serialized
|
|
46
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
47
|
+
# @return [String]
|
|
48
|
+
def date(cell, str='')
|
|
49
|
+
value_serialization false, DateTimeConverter::date_to_serial(cell.value).to_s, str
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Serializes cells that are type time
|
|
53
|
+
# @param [Cell] cell The cell that is being serialized
|
|
54
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
55
|
+
# @return [String]
|
|
56
|
+
def time(cell, str='')
|
|
57
|
+
value_serialization false, DateTimeConverter::time_to_serial(cell.value).to_s, str
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Serializes cells that are type boolean
|
|
61
|
+
# @param [Cell] cell The cell that is being serialized
|
|
62
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
63
|
+
# @return [String]
|
|
64
|
+
def boolean(cell, str='')
|
|
65
|
+
value_serialization 'b', cell.value.to_s, str
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Serializes cells that are type float
|
|
69
|
+
# @param [Cell] cell The cell that is being serialized
|
|
70
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
71
|
+
# @return [String]
|
|
72
|
+
def float(cell, str='')
|
|
73
|
+
numeric cell, str
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Serializes cells that are type integer
|
|
77
|
+
# @param [Cell] cell The cell that is being serialized
|
|
78
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
79
|
+
# @return [String]
|
|
80
|
+
def integer(cell, str = '')
|
|
81
|
+
numeric cell, str
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Serializes cells that are type formula
|
|
85
|
+
# @param [Cell] cell The cell that is being serialized
|
|
86
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
87
|
+
# @return [String]
|
|
88
|
+
def formula_serialization(cell, str='')
|
|
89
|
+
str << ('t="str"><f>' << cell.clean_value.to_s.sub('=', '') << '</f>')
|
|
90
|
+
str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Serializes cells that are type array formula
|
|
94
|
+
# @param [Cell] cell The cell that is being serialized
|
|
95
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
96
|
+
# @return [String]
|
|
97
|
+
def array_formula_serialization(cell, str='')
|
|
98
|
+
str << ('t="str">' << '<f t="array" ref="' << cell.r << '">' << cell.clean_value.to_s.sub('{=', '').sub(/}$/, '') << '</f>')
|
|
99
|
+
str << ('<v>' << cell.formula_value.to_s << '</v>') unless cell.formula_value.nil?
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Serializes cells that are type inline_string
|
|
103
|
+
# @param [Cell] cell The cell that is being serialized
|
|
104
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
105
|
+
# @return [String]
|
|
106
|
+
def inline_string_serialization(cell, str = '')
|
|
107
|
+
str << 't="inlineStr"><is>'
|
|
108
|
+
run_xml_string cell, str
|
|
109
|
+
str << '</is>'
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Serializes cells that are type string
|
|
113
|
+
# @param [Cell] cell The cell that is being serialized
|
|
114
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
115
|
+
# @return [String]
|
|
116
|
+
def string(cell, str='')
|
|
117
|
+
if cell.is_array_formula?
|
|
118
|
+
array_formula_serialization cell, str
|
|
119
|
+
elsif cell.is_formula?
|
|
120
|
+
formula_serialization cell, str
|
|
121
|
+
elsif !cell.ssti.nil?
|
|
122
|
+
value_serialization 's', cell.ssti, str
|
|
123
|
+
else
|
|
124
|
+
inline_string_serialization cell, str
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Serializes cells that are of the type richtext
|
|
129
|
+
# @param [Cell] cell The cell that is being serialized
|
|
130
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
131
|
+
# @return [String]
|
|
132
|
+
def richtext(cell, str)
|
|
133
|
+
if cell.ssti.nil?
|
|
134
|
+
inline_string_serialization cell, str
|
|
135
|
+
else
|
|
136
|
+
value_serialization 's', cell.ssti, str
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Serializes cells that are of the type text
|
|
141
|
+
# @param [Cell] cell The cell that is being serialized
|
|
142
|
+
# @param [String] str The string the serialized content will be appended to.
|
|
143
|
+
# @return [String]
|
|
144
|
+
def text(cell, str)
|
|
145
|
+
if cell.ssti.nil?
|
|
146
|
+
inline_string_serialization cell, str
|
|
147
|
+
else
|
|
148
|
+
value_serialization 's', cell.ssti, str
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
private
|
|
153
|
+
|
|
154
|
+
def numeric(cell, str = '')
|
|
155
|
+
value_serialization 'n', cell.value, str
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def value_serialization(serialization_type, serialization_value, str = '')
|
|
159
|
+
str << ('t="' << serialization_type.to_s << '"') if serialization_type
|
|
160
|
+
str << ('><v>' << serialization_value.to_s << '</v>')
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
# Conditional Format Value Object
|
|
3
|
-
# Describes the values of the interpolation points in a gradient scale. This object is used by ColorScale, DataBar and IconSet classes
|
|
4
|
-
#
|
|
5
|
-
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
6
|
-
# @see Worksheet#add_conditional_formatting
|
|
7
|
-
# @see ConditionalFormattingRule#initialize
|
|
8
|
-
#
|
|
9
|
-
class Cfvo
|
|
10
|
-
|
|
11
|
-
include Axlsx::OptionsParser
|
|
12
|
-
include Axlsx::SerializedAttributes
|
|
13
|
-
|
|
14
|
-
# Creates a new Cfvo object
|
|
15
|
-
# @option options [Symbol] type The type of conditional formatting value object
|
|
16
|
-
# @option options [Boolean] gte threshold value usage indicator
|
|
17
|
-
# @option options [String] val The value of the conditional formatting object
|
|
18
|
-
def initialize(options={})
|
|
19
|
-
@gte = true
|
|
20
|
-
parse_options options
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
serializable_attributes :type, :gte, :val
|
|
24
|
-
|
|
25
|
-
# Type (ST_CfvoType)
|
|
26
|
-
# The type of this conditional formatting value object. options are num, percent, max, min, formula and percentile
|
|
27
|
-
# @return [Symbol]
|
|
28
|
-
attr_reader :type
|
|
29
|
-
|
|
30
|
-
# Type (xsd:boolean)
|
|
31
|
-
# For icon sets, determines whether this threshold value uses the greater than or equal to operator. 0 indicates 'greater than' is used instead of 'greater than or equal to'.
|
|
32
|
-
# The default value is true
|
|
33
|
-
# @return [Boolean]
|
|
34
|
-
attr_reader :gte
|
|
35
|
-
|
|
36
|
-
# Type (ST_Xstring)
|
|
37
|
-
# The value of the conditional formatting object
|
|
38
|
-
# This library will accept any value so long as it supports to_s
|
|
39
|
-
attr_reader :val
|
|
40
|
-
|
|
41
|
-
# @see type
|
|
42
|
-
def type=(v); Axlsx::validate_conditional_formatting_value_object_type(v); @type = v end
|
|
43
|
-
|
|
44
|
-
# @see gte
|
|
45
|
-
def gte=(v); Axlsx::validate_boolean(v); @gte = v end
|
|
46
|
-
|
|
47
|
-
# @see val
|
|
48
|
-
def val=(v)
|
|
49
|
-
raise ArgumentError, "#{v.inspect} must respond to to_s" unless v.respond_to?(:to_s)
|
|
50
|
-
@val = v.to_s
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# serialize the Csvo object
|
|
54
|
-
# @param [String] str
|
|
55
|
-
# @return [String]
|
|
56
|
-
def to_xml_string(str = '')
|
|
57
|
-
serialized_tag('cfvo', str)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
# Conditional Format Value Object
|
|
3
|
+
# Describes the values of the interpolation points in a gradient scale. This object is used by ColorScale, DataBar and IconSet classes
|
|
4
|
+
#
|
|
5
|
+
# @note The recommended way to manage these rules is via Worksheet#add_conditional_formatting
|
|
6
|
+
# @see Worksheet#add_conditional_formatting
|
|
7
|
+
# @see ConditionalFormattingRule#initialize
|
|
8
|
+
#
|
|
9
|
+
class Cfvo
|
|
10
|
+
|
|
11
|
+
include Axlsx::OptionsParser
|
|
12
|
+
include Axlsx::SerializedAttributes
|
|
13
|
+
|
|
14
|
+
# Creates a new Cfvo object
|
|
15
|
+
# @option options [Symbol] type The type of conditional formatting value object
|
|
16
|
+
# @option options [Boolean] gte threshold value usage indicator
|
|
17
|
+
# @option options [String] val The value of the conditional formatting object
|
|
18
|
+
def initialize(options={})
|
|
19
|
+
@gte = true
|
|
20
|
+
parse_options options
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
serializable_attributes :type, :gte, :val
|
|
24
|
+
|
|
25
|
+
# Type (ST_CfvoType)
|
|
26
|
+
# The type of this conditional formatting value object. options are num, percent, max, min, formula and percentile
|
|
27
|
+
# @return [Symbol]
|
|
28
|
+
attr_reader :type
|
|
29
|
+
|
|
30
|
+
# Type (xsd:boolean)
|
|
31
|
+
# For icon sets, determines whether this threshold value uses the greater than or equal to operator. 0 indicates 'greater than' is used instead of 'greater than or equal to'.
|
|
32
|
+
# The default value is true
|
|
33
|
+
# @return [Boolean]
|
|
34
|
+
attr_reader :gte
|
|
35
|
+
|
|
36
|
+
# Type (ST_Xstring)
|
|
37
|
+
# The value of the conditional formatting object
|
|
38
|
+
# This library will accept any value so long as it supports to_s
|
|
39
|
+
attr_reader :val
|
|
40
|
+
|
|
41
|
+
# @see type
|
|
42
|
+
def type=(v); Axlsx::validate_conditional_formatting_value_object_type(v); @type = v end
|
|
43
|
+
|
|
44
|
+
# @see gte
|
|
45
|
+
def gte=(v); Axlsx::validate_boolean(v); @gte = v end
|
|
46
|
+
|
|
47
|
+
# @see val
|
|
48
|
+
def val=(v)
|
|
49
|
+
raise ArgumentError, "#{v.inspect} must respond to to_s" unless v.respond_to?(:to_s)
|
|
50
|
+
@val = v.to_s
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# serialize the Csvo object
|
|
54
|
+
# @param [String] str
|
|
55
|
+
# @return [String]
|
|
56
|
+
def to_xml_string(str = '')
|
|
57
|
+
serialized_tag('cfvo', str)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
module Axlsx
|
|
2
|
-
|
|
3
|
-
#A collection of Cfvo objects that initializes with the required
|
|
4
|
-
#first two items
|
|
5
|
-
class Cfvos < SimpleTypedList
|
|
6
|
-
|
|
7
|
-
def initialize
|
|
8
|
-
super(Cfvo)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# Serialize the Cfvo object
|
|
12
|
-
# @param [String] str
|
|
13
|
-
# @return [String]
|
|
14
|
-
def to_xml_string(str='')
|
|
15
|
-
each { |cfvo| cfvo.to_xml_string(str) }
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
1
|
+
module Axlsx
|
|
2
|
+
|
|
3
|
+
#A collection of Cfvo objects that initializes with the required
|
|
4
|
+
#first two items
|
|
5
|
+
class Cfvos < SimpleTypedList
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
super(Cfvo)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# Serialize the Cfvo object
|
|
12
|
+
# @param [String] str
|
|
13
|
+
# @return [String]
|
|
14
|
+
def to_xml_string(str='')
|
|
15
|
+
each { |cfvo| cfvo.to_xml_string(str) }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|