xlsxrb 0.1.13 → 0.1.14
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/CHANGELOG.md +57 -0
- data/README.md +2 -0
- data/lib/xlsxrb/colors.rb +118 -0
- data/lib/xlsxrb/elements/cell.rb +205 -16
- data/lib/xlsxrb/elements/column.rb +6 -4
- data/lib/xlsxrb/elements/coordinate_access.rb +32 -0
- data/lib/xlsxrb/elements/image.rb +128 -0
- data/lib/xlsxrb/elements/row.rb +206 -9
- data/lib/xlsxrb/elements/styles.rb +157 -0
- data/lib/xlsxrb/elements/types.rb +95 -1
- data/lib/xlsxrb/elements/workbook.rb +85 -4
- data/lib/xlsxrb/elements/worksheet.rb +424 -29
- data/lib/xlsxrb/elements.rb +2 -0
- data/lib/xlsxrb/number_formatter.rb +429 -0
- data/lib/xlsxrb/ooxml/cfb.rb +1 -1
- data/lib/xlsxrb/ooxml/reader/listeners/core_listeners.rb +7 -5
- data/lib/xlsxrb/ooxml/reader/listeners/drawing_listeners.rb +11 -4
- data/lib/xlsxrb/ooxml/reader.rb +12 -14
- data/lib/xlsxrb/ooxml/shared_strings_parser.rb +7 -1
- data/lib/xlsxrb/ooxml/styles_parser.rb +39 -9
- data/lib/xlsxrb/ooxml/utils.rb +34 -18
- data/lib/xlsxrb/ooxml/workbook_parser.rb +53 -15
- data/lib/xlsxrb/ooxml/workbook_writer.rb +65 -14
- data/lib/xlsxrb/ooxml/worksheet_parser.rb +319 -79
- data/lib/xlsxrb/ooxml/worksheet_writer.rb +206 -61
- data/lib/xlsxrb/ooxml/writer/features_xml.rb +4 -2
- data/lib/xlsxrb/ooxml/writer.rb +14 -0
- data/lib/xlsxrb/ooxml/zip_reader.rb +109 -25
- data/lib/xlsxrb/stream_row.rb +243 -16
- data/lib/xlsxrb/stream_sheet.rb +414 -15
- data/lib/xlsxrb/stream_writer.rb +213 -17
- data/lib/xlsxrb/style_builder.rb +308 -22
- data/lib/xlsxrb/utils.rb +158 -0
- data/lib/xlsxrb/version.rb +1 -1
- data/lib/xlsxrb/workbook_builder.rb +73 -3
- data/lib/xlsxrb/worksheet_builder.rb +227 -16
- data/lib/xlsxrb.rb +578 -79
- data/sig/generated/xlsxrb/colors.rbs +40 -0
- data/sig/generated/xlsxrb/elements/cell.rbs +113 -8
- data/sig/generated/xlsxrb/elements/column.rbs +3 -2
- data/sig/generated/xlsxrb/elements/coordinate_access.rbs +18 -0
- data/sig/generated/xlsxrb/elements/image.rbs +82 -0
- data/sig/generated/xlsxrb/elements/row.rbs +83 -4
- data/sig/generated/xlsxrb/elements/styles.rbs +79 -0
- data/sig/generated/xlsxrb/elements/types.rbs +43 -0
- data/sig/generated/xlsxrb/elements/workbook.rbs +51 -2
- data/sig/generated/xlsxrb/elements/worksheet.rbs +231 -18
- data/sig/generated/xlsxrb/number_formatter.rbs +132 -0
- data/sig/generated/xlsxrb/ooxml/reader.rbs +6 -0
- data/sig/generated/xlsxrb/ooxml/shared_strings_parser.rbs +2 -0
- data/sig/generated/xlsxrb/ooxml/styles_parser.rbs +5 -2
- data/sig/generated/xlsxrb/ooxml/utils.rbs +17 -8
- data/sig/generated/xlsxrb/ooxml/workbook_parser.rbs +9 -3
- data/sig/generated/xlsxrb/ooxml/worksheet_parser.rbs +28 -6
- data/sig/generated/xlsxrb/ooxml/worksheet_writer.rbs +3 -1
- data/sig/generated/xlsxrb/ooxml/writer.rbs +2 -0
- data/sig/generated/xlsxrb/ooxml/zip_reader.rbs +10 -0
- data/sig/generated/xlsxrb/stream_row.rbs +100 -6
- data/sig/generated/xlsxrb/stream_sheet.rbs +247 -13
- data/sig/generated/xlsxrb/stream_writer.rbs +120 -14
- data/sig/generated/xlsxrb/style_builder.rbs +55 -18
- data/sig/generated/xlsxrb/utils.rbs +119 -0
- data/sig/generated/xlsxrb/workbook_builder.rbs +26 -0
- data/sig/generated/xlsxrb/worksheet_builder.rbs +107 -11
- data/sig/generated/xlsxrb.rbs +186 -27
- metadata +11 -1
|
@@ -62,6 +62,8 @@ module Xlsxrb
|
|
|
62
62
|
private
|
|
63
63
|
|
|
64
64
|
def fetch_chunk: (untyped chunk_size) -> untyped
|
|
65
|
+
|
|
66
|
+
def check_bom_encoding!: () -> untyped
|
|
65
67
|
end
|
|
66
68
|
|
|
67
69
|
# Opens a ZIP from a file path or IO and yields the reader.
|
|
@@ -128,6 +130,14 @@ module Xlsxrb
|
|
|
128
130
|
def decompress: (untyped raw, untyped method) -> untyped
|
|
129
131
|
|
|
130
132
|
def safe_inflate: (untyped raw, untyped wbits) -> untyped
|
|
133
|
+
|
|
134
|
+
def normalize_entry_name: (untyped name) -> untyped
|
|
135
|
+
|
|
136
|
+
def lookup_entry: (untyped name) -> untyped
|
|
137
|
+
|
|
138
|
+
def ci_catalog: () -> untyped
|
|
139
|
+
|
|
140
|
+
def normalize_text_encoding: (untyped data) -> untyped
|
|
131
141
|
end
|
|
132
142
|
end
|
|
133
143
|
end
|
|
@@ -23,8 +23,14 @@ module Xlsxrb
|
|
|
23
23
|
|
|
24
24
|
attr_reader custom_height: untyped
|
|
25
25
|
|
|
26
|
+
attr_reader collapsed: untyped
|
|
27
|
+
|
|
26
28
|
attr_reader outline_level: untyped
|
|
27
29
|
|
|
30
|
+
attr_reader style_index: untyped
|
|
31
|
+
|
|
32
|
+
attr_reader pad_empty_cells: untyped
|
|
33
|
+
|
|
28
34
|
# @param index [Integer] 0-based row index.
|
|
29
35
|
# @param xml_bytes [String] Raw ASCII-8BIT XML bytes.
|
|
30
36
|
# @param from [Integer] Byte offset where cells start.
|
|
@@ -34,12 +40,58 @@ module Xlsxrb
|
|
|
34
40
|
# @param height [Float, Integer, nil] Row height in points.
|
|
35
41
|
# @param hidden [Boolean] Whether the row is hidden.
|
|
36
42
|
# @param custom_height [Boolean] Whether custom height is set.
|
|
43
|
+
# @param collapsed [Boolean] Whether the row is collapsed.
|
|
37
44
|
# @param outline_level [Integer, nil] Grouping/outline level.
|
|
38
|
-
#
|
|
39
|
-
|
|
45
|
+
# @param style_index [Integer, nil] Style index.
|
|
46
|
+
# @param date1904 [Boolean] Whether the 1904 date system is active.
|
|
47
|
+
# @param pad_empty_cells [Boolean] Whether missing cells in this row are padded.
|
|
48
|
+
# : (index: Integer, xml_bytes: String, from: Integer, to: Integer, shared_strings: Array[String], ?prefix: String, ?height: Float | Integer | nil, ?hidden: bool, ?custom_height: bool, ?collapsed: bool, ?outline_level: Integer | nil, ?style_index: Integer | nil, ?styles: Hash[untyped, untyped]?, ?date1904: bool, ?pad_empty_cells: bool) -> void
|
|
49
|
+
def initialize: (index: Integer, xml_bytes: String, from: Integer, to: Integer, shared_strings: Array[String], ?prefix: String, ?height: Float | Integer | nil, ?hidden: bool, ?custom_height: bool, ?collapsed: bool, ?outline_level: Integer | nil, ?style_index: Integer | nil, ?styles: Hash[untyped, untyped]?, ?date1904: bool, ?pad_empty_cells: bool) -> void
|
|
40
50
|
|
|
41
51
|
# rubocop:disable Style/OptionalBooleanParameter
|
|
42
|
-
def self.fast_create: (untyped index, untyped xml_bytes, untyped from, untyped to, untyped shared_strings, ?untyped prefix, ?untyped height, ?untyped hidden, ?untyped custom_height, ?untyped outline_level) -> untyped
|
|
52
|
+
def self.fast_create: (untyped index, untyped xml_bytes, untyped from, untyped to, untyped shared_strings, ?untyped prefix, ?untyped height, ?untyped hidden, ?untyped custom_height, ?untyped outline_level, ?untyped style_index, ?untyped styles, ?untyped date1904, ?untyped collapsed, ?untyped pad_empty_cells) -> untyped
|
|
53
|
+
|
|
54
|
+
# Returns whether the row is hidden.
|
|
55
|
+
#
|
|
56
|
+
# @return [Boolean]
|
|
57
|
+
# @api public
|
|
58
|
+
# : () -> bool
|
|
59
|
+
def hidden?: () -> bool
|
|
60
|
+
|
|
61
|
+
# Returns whether the row is collapsed.
|
|
62
|
+
#
|
|
63
|
+
# @return [Boolean]
|
|
64
|
+
# @api public
|
|
65
|
+
# : () -> bool
|
|
66
|
+
def collapsed?: () -> bool
|
|
67
|
+
|
|
68
|
+
# Returns whether custom height is set.
|
|
69
|
+
#
|
|
70
|
+
# @return [Boolean]
|
|
71
|
+
# @api public
|
|
72
|
+
# : () -> bool
|
|
73
|
+
def custom_height?: () -> bool
|
|
74
|
+
|
|
75
|
+
# Returns a frozen Hash of row attributes.
|
|
76
|
+
#
|
|
77
|
+
# @return [Hash{Symbol => Object}]
|
|
78
|
+
# @api public
|
|
79
|
+
# : () -> Hash[Symbol, untyped]
|
|
80
|
+
def attributes: () -> Hash[Symbol, untyped]
|
|
81
|
+
|
|
82
|
+
# Returns whether the row uses the 1904 date system.
|
|
83
|
+
#
|
|
84
|
+
# @return [Boolean]
|
|
85
|
+
# @api public
|
|
86
|
+
# : () -> bool
|
|
87
|
+
def date1904?: () -> bool
|
|
88
|
+
|
|
89
|
+
# Returns whether missing cells in this row are padded.
|
|
90
|
+
#
|
|
91
|
+
# @return [Boolean]
|
|
92
|
+
# @api public
|
|
93
|
+
# : () -> bool
|
|
94
|
+
def pad_empty_cells?: () -> bool
|
|
43
95
|
|
|
44
96
|
# Iterate over cells in this streaming row one by one.
|
|
45
97
|
#
|
|
@@ -86,6 +138,14 @@ module Xlsxrb
|
|
|
86
138
|
# : (Integer col_index) -> Elements::Cell?
|
|
87
139
|
def cell_at: (Integer col_index) -> Elements::Cell?
|
|
88
140
|
|
|
141
|
+
# Convert row cells to a coordinate-keyed Hash (e.g. {"A1" => "value", "B1" => 123}).
|
|
142
|
+
#
|
|
143
|
+
# @param type_cast [Boolean] Whether to coerce date/time serial numbers into Date/Time instances.
|
|
144
|
+
# @return [Hash{String => Object}]
|
|
145
|
+
# @api public
|
|
146
|
+
# : (?type_cast: bool) -> Hash[String, untyped]
|
|
147
|
+
def to_h: (?type_cast: bool) -> Hash[String, untyped]
|
|
148
|
+
|
|
89
149
|
# Convert row cells to an Array of raw values (sparse columns get nil).
|
|
90
150
|
#
|
|
91
151
|
# @return [Array<Object>]
|
|
@@ -93,12 +153,34 @@ module Xlsxrb
|
|
|
93
153
|
# : () -> Array[untyped]
|
|
94
154
|
def to_a: () -> Array[untyped]
|
|
95
155
|
|
|
96
|
-
# Returns cell values as an Array.
|
|
156
|
+
# Returns cell values as an Array (sparse columns get nil).
|
|
97
157
|
#
|
|
158
|
+
# @param type_cast [Boolean] Whether to coerce date/time serial numbers into Date/Time instances.
|
|
98
159
|
# @return [Array<Object>]
|
|
99
160
|
# @api public
|
|
100
|
-
# : () -> Array[untyped]
|
|
101
|
-
def values: () -> Array[untyped]
|
|
161
|
+
# : (?type_cast: bool) -> Array[untyped]
|
|
162
|
+
def values: (?type_cast: bool) -> Array[untyped]
|
|
163
|
+
|
|
164
|
+
# Convert row cells to an Array of raw string values (sparse columns get nil).
|
|
165
|
+
#
|
|
166
|
+
# @return [Array<String, nil>]
|
|
167
|
+
# @api public
|
|
168
|
+
# : () -> Array[String?]
|
|
169
|
+
def raw_values: () -> Array[String?]
|
|
170
|
+
|
|
171
|
+
# Convert row cells to an Array of formatted string representations (sparse columns get nil).
|
|
172
|
+
#
|
|
173
|
+
# @return [Array<String, nil>]
|
|
174
|
+
# @api public
|
|
175
|
+
# : () -> Array[String?]
|
|
176
|
+
def formatted_values: () -> Array[String?]
|
|
177
|
+
|
|
178
|
+
# Convert row cells to an Array of formula expressions without leading '=' (sparse columns get nil).
|
|
179
|
+
#
|
|
180
|
+
# @return [Array<String, nil>]
|
|
181
|
+
# @api public
|
|
182
|
+
# : () -> Array[String?]
|
|
183
|
+
def formulas: () -> Array[String?]
|
|
102
184
|
|
|
103
185
|
# Returns whether the row is valid according to OOXML specifications.
|
|
104
186
|
#
|
|
@@ -107,6 +189,13 @@ module Xlsxrb
|
|
|
107
189
|
# : () -> bool
|
|
108
190
|
def valid?: () -> bool
|
|
109
191
|
|
|
192
|
+
# Returns whether the row contains no cell values (or all cell values are nil or empty strings).
|
|
193
|
+
#
|
|
194
|
+
# @return [Boolean]
|
|
195
|
+
# @api public
|
|
196
|
+
# : () -> bool
|
|
197
|
+
def empty?: () -> bool
|
|
198
|
+
|
|
110
199
|
# Unmapped metadata for compatibility with Elements::Row.
|
|
111
200
|
#
|
|
112
201
|
# @return [Hash]
|
|
@@ -127,5 +216,10 @@ module Xlsxrb
|
|
|
127
216
|
# @api public
|
|
128
217
|
# : () -> String
|
|
129
218
|
def inspect: () -> String
|
|
219
|
+
|
|
220
|
+
private
|
|
221
|
+
|
|
222
|
+
# : (bool) -> Array[untyped]
|
|
223
|
+
def values_from_cells: (bool) -> Array[untyped]
|
|
130
224
|
end
|
|
131
225
|
end
|
|
@@ -29,6 +29,16 @@ module Xlsxrb
|
|
|
29
29
|
# : String
|
|
30
30
|
attr_reader name: untyped
|
|
31
31
|
|
|
32
|
+
# @return [Symbol] The sheet visibility state (:visible, :hidden, or :very_hidden).
|
|
33
|
+
# @api public
|
|
34
|
+
# : Symbol
|
|
35
|
+
attr_reader state: untyped
|
|
36
|
+
|
|
37
|
+
# @return [Hash, nil] The parsed styles definition hash.
|
|
38
|
+
# @api public
|
|
39
|
+
# : Hash[untyped, untyped]?
|
|
40
|
+
attr_reader styles: untyped
|
|
41
|
+
|
|
32
42
|
# Initializes a streaming worksheet context.
|
|
33
43
|
#
|
|
34
44
|
# @param name [String] The sheet name.
|
|
@@ -37,24 +47,126 @@ module Xlsxrb
|
|
|
37
47
|
# @param styles [Hash, nil] Optional parsed styles hash.
|
|
38
48
|
# @param zip_reader [Ooxml::ZipReader, nil] Optional ZipReader context.
|
|
39
49
|
# @param entry_name [String, nil] Archive entry name for this sheet.
|
|
40
|
-
#
|
|
41
|
-
|
|
50
|
+
# @param date1904 [Boolean] Whether the 1904 date system is active.
|
|
51
|
+
# @param dimension [String, nil] Sheet dimension reference string (e.g. "A1:Z50000").
|
|
52
|
+
# @param trim_empty_rows [Boolean] Whether to omit trailing empty rows during iteration.
|
|
53
|
+
# @param pad_empty_rows [Boolean] Whether to yield empty rows for skipped row numbers.
|
|
54
|
+
# @param pad_empty_cells [Boolean] Whether to pad missing cells within rows.
|
|
55
|
+
# @param images [Array<Elements::Image>, nil] Optional preloaded images array.
|
|
56
|
+
# : (String name, untyped sheet_source, Array[String] shared_strings, ?Hash[untyped, untyped]? styles, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?state: Symbol, ?date1904: bool, ?dimension: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool, ?images: Array[Elements::Image]?) -> void
|
|
57
|
+
def initialize: (String name, untyped sheet_source, Array[String] shared_strings, ?Hash[untyped, untyped]? styles, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?state: Symbol, ?date1904: bool, ?dimension: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool, ?images: Array[Elements::Image]?) -> void
|
|
58
|
+
|
|
59
|
+
# Returns whether trailing empty rows are omitted during iteration.
|
|
60
|
+
#
|
|
61
|
+
# @return [Boolean]
|
|
62
|
+
# @api public
|
|
63
|
+
# : () -> bool
|
|
64
|
+
def trim_empty_rows?: () -> bool
|
|
65
|
+
|
|
66
|
+
alias trim_empty_rows trim_empty_rows?
|
|
67
|
+
|
|
68
|
+
# Returns whether skipped rows are padded during iteration.
|
|
69
|
+
#
|
|
70
|
+
# @return [Boolean]
|
|
71
|
+
# @api public
|
|
72
|
+
# : () -> bool
|
|
73
|
+
def pad_empty_rows?: () -> bool
|
|
74
|
+
|
|
75
|
+
alias pad_empty_rows pad_empty_rows?
|
|
76
|
+
|
|
77
|
+
# Returns whether missing cells within rows are padded during iteration.
|
|
78
|
+
#
|
|
79
|
+
# @return [Boolean]
|
|
80
|
+
# @api public
|
|
81
|
+
# : () -> bool
|
|
82
|
+
def pad_empty_cells?: () -> bool
|
|
83
|
+
|
|
84
|
+
alias pad_empty_cells pad_empty_cells?
|
|
85
|
+
|
|
86
|
+
# Returns the dimension reference string (e.g. "A1:Z50000"), or nil if not present.
|
|
87
|
+
#
|
|
88
|
+
# @return [String, nil]
|
|
89
|
+
# @api public
|
|
90
|
+
# : () -> String?
|
|
91
|
+
def dimension: () -> String?
|
|
92
|
+
|
|
93
|
+
# Returns the 1-based index of the first row defined in the sheet dimension, or nil.
|
|
94
|
+
#
|
|
95
|
+
# @return [Integer, nil]
|
|
96
|
+
# @api public
|
|
97
|
+
# : () -> Integer?
|
|
98
|
+
def first_row: () -> Integer?
|
|
99
|
+
|
|
100
|
+
# Returns the 1-based index of the first column defined in the sheet dimension, or nil.
|
|
101
|
+
#
|
|
102
|
+
# @return [Integer, nil]
|
|
103
|
+
# @api public
|
|
104
|
+
# : () -> Integer?
|
|
105
|
+
def first_column: () -> Integer?
|
|
106
|
+
|
|
107
|
+
alias first_col first_column
|
|
108
|
+
|
|
109
|
+
# Returns the 1-based index of the last row defined in the sheet dimension, or nil.
|
|
110
|
+
#
|
|
111
|
+
# @return [Integer, nil]
|
|
112
|
+
# @api public
|
|
113
|
+
# : () -> Integer?
|
|
114
|
+
def last_row: () -> Integer?
|
|
115
|
+
|
|
116
|
+
# Returns the 1-based index of the last column defined in the sheet dimension, or nil.
|
|
117
|
+
#
|
|
118
|
+
# @return [Integer, nil]
|
|
119
|
+
# @api public
|
|
120
|
+
# : () -> Integer?
|
|
121
|
+
def last_column: () -> Integer?
|
|
122
|
+
|
|
123
|
+
alias last_col last_column
|
|
124
|
+
|
|
125
|
+
# Returns whether the sheet uses the 1904 date system.
|
|
126
|
+
#
|
|
127
|
+
# @return [Boolean]
|
|
128
|
+
# @api public
|
|
129
|
+
# : () -> bool
|
|
130
|
+
def date1904?: () -> bool
|
|
131
|
+
|
|
132
|
+
# Returns whether the sheet is hidden (:hidden or :very_hidden).
|
|
133
|
+
#
|
|
134
|
+
# @return [Boolean]
|
|
135
|
+
# @api public
|
|
136
|
+
# : () -> bool
|
|
137
|
+
def hidden?: () -> bool
|
|
138
|
+
|
|
139
|
+
# Returns whether the sheet is visible.
|
|
140
|
+
#
|
|
141
|
+
# @return [Boolean]
|
|
142
|
+
# @api public
|
|
143
|
+
# : () -> bool
|
|
144
|
+
def visible?: () -> bool
|
|
42
145
|
|
|
43
146
|
# Iterates over rows in this streaming worksheet with O(1) memory.
|
|
44
147
|
#
|
|
45
148
|
# @overload each_row(&block)
|
|
46
149
|
# @yield [row]
|
|
47
150
|
# @yieldparam row [StreamRow, Elements::Row] The current row.
|
|
151
|
+
# @overload each_row(trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil, &block)
|
|
152
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows (defaults to sheet setting).
|
|
153
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers (defaults to sheet setting).
|
|
154
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows (defaults to sheet setting).
|
|
155
|
+
# @yield [row]
|
|
156
|
+
# @yieldparam row [StreamRow, Elements::Row] The current row.
|
|
48
157
|
# @return [void]
|
|
49
158
|
#
|
|
50
|
-
# @overload each_row
|
|
159
|
+
# @overload each_row(trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil)
|
|
160
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows (defaults to sheet setting).
|
|
161
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers (defaults to sheet setting).
|
|
162
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows (defaults to sheet setting).
|
|
51
163
|
# @return [Enumerator<StreamRow | Elements::Row, void>]
|
|
52
164
|
#
|
|
53
165
|
# @api public
|
|
54
|
-
# : () { (StreamRow | Elements::Row) -> void } -> void
|
|
55
|
-
# : () -> Enumerator[StreamRow | Elements::Row, void]
|
|
56
|
-
def each_row: () { (StreamRow | Elements::Row) -> void } -> void
|
|
57
|
-
| () -> Enumerator[StreamRow | Elements::Row, void]
|
|
166
|
+
# : (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (StreamRow | Elements::Row) -> void } -> void
|
|
167
|
+
# : (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[StreamRow | Elements::Row, void]
|
|
168
|
+
def each_row: (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (StreamRow | Elements::Row) -> void } -> void
|
|
169
|
+
| (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[StreamRow | Elements::Row, void]
|
|
58
170
|
|
|
59
171
|
# Iterates over all cells across all rows continuously with O(1) memory.
|
|
60
172
|
#
|
|
@@ -72,21 +184,51 @@ module Xlsxrb
|
|
|
72
184
|
def each_cell: () { (Elements::Cell) -> void } -> void
|
|
73
185
|
| () -> Enumerator[Elements::Cell, void]
|
|
74
186
|
|
|
187
|
+
# Iterates over row values directly as Arrays without wrapping cells in Elements::Cell objects.
|
|
188
|
+
#
|
|
189
|
+
# @overload each_row_values(type_cast: false, trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil, &block)
|
|
190
|
+
# @param type_cast [Boolean] Whether to coerce date/time serial numbers into Date/Time instances.
|
|
191
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows (defaults to sheet setting).
|
|
192
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers (defaults to sheet setting).
|
|
193
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows (defaults to sheet setting).
|
|
194
|
+
# @yield [values]
|
|
195
|
+
# @yieldparam values [Array<Object>] Row values array.
|
|
196
|
+
# @return [void]
|
|
197
|
+
#
|
|
198
|
+
# @overload each_row_values(type_cast: false, trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil)
|
|
199
|
+
# @param type_cast [Boolean] Whether to coerce date/time serial numbers into Date/Time instances.
|
|
200
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows (defaults to sheet setting).
|
|
201
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers (defaults to sheet setting).
|
|
202
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows (defaults to sheet setting).
|
|
203
|
+
# @return [Enumerator<Array<Object>, void>]
|
|
204
|
+
#
|
|
205
|
+
# @api public
|
|
206
|
+
# : (?type_cast: bool, ?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (Array[untyped]) -> void } -> void
|
|
207
|
+
# : (?type_cast: bool, ?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[Array[untyped], void]
|
|
208
|
+
def each_row_values: (?type_cast: bool, ?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (Array[untyped]) -> void } -> void
|
|
209
|
+
| (?type_cast: bool, ?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[Array[untyped], void]
|
|
210
|
+
|
|
75
211
|
# Default Enumerable iteration delegates to {#each_row}.
|
|
76
212
|
#
|
|
77
|
-
# @overload each(&block)
|
|
213
|
+
# @overload each(trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil, &block)
|
|
214
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows.
|
|
215
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers.
|
|
216
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows.
|
|
78
217
|
# @yield [row]
|
|
79
218
|
# @yieldparam row [StreamRow, Elements::Row]
|
|
80
219
|
# @return [void]
|
|
81
220
|
#
|
|
82
|
-
# @overload each
|
|
221
|
+
# @overload each(trim_empty_rows: nil, pad_empty_rows: nil, pad_empty_cells: nil)
|
|
222
|
+
# @param trim_empty_rows [Boolean, nil] Whether to omit trailing empty rows.
|
|
223
|
+
# @param pad_empty_rows [Boolean, nil] Whether to yield empty rows for skipped row numbers.
|
|
224
|
+
# @param pad_empty_cells [Boolean, nil] Whether to pad missing cells within rows.
|
|
83
225
|
# @return [Enumerator<StreamRow | Elements::Row, void>]
|
|
84
226
|
#
|
|
85
227
|
# @api public
|
|
86
|
-
# : () { (StreamRow | Elements::Row) -> void } -> void
|
|
87
|
-
# : () -> Enumerator[StreamRow | Elements::Row, void]
|
|
88
|
-
def each: () { (StreamRow | Elements::Row) -> void } -> void
|
|
89
|
-
| () -> Enumerator[StreamRow | Elements::Row, void]
|
|
228
|
+
# : (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (StreamRow | Elements::Row) -> void } -> void
|
|
229
|
+
# : (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[StreamRow | Elements::Row, void]
|
|
230
|
+
def each: (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) { (StreamRow | Elements::Row) -> void } -> void
|
|
231
|
+
| (?trim_empty_rows: bool?, ?pad_empty_rows: bool?, ?pad_empty_cells: bool?) -> Enumerator[StreamRow | Elements::Row, void]
|
|
90
232
|
|
|
91
233
|
# Loads this sheet completely into an in-memory {Elements::Worksheet},
|
|
92
234
|
# enabling coordinate random access (`sheet["A1"]`), row lookups (`row_at`),
|
|
@@ -99,6 +241,90 @@ module Xlsxrb
|
|
|
99
241
|
|
|
100
242
|
alias to_worksheet load
|
|
101
243
|
|
|
244
|
+
# Returns hyperlinks configured for this worksheet as a Hash of cell references to hyperlink hashes.
|
|
245
|
+
#
|
|
246
|
+
# @return [Hash<String, Hash[Symbol, untyped]>]
|
|
247
|
+
# @api public
|
|
248
|
+
# : () -> Hash[String, Hash[Symbol, untyped]]
|
|
249
|
+
def hyperlinks: () -> Hash[String, Hash[Symbol, untyped]]
|
|
250
|
+
|
|
251
|
+
# Returns hyperlink metadata for a specific cell reference, or nil.
|
|
252
|
+
#
|
|
253
|
+
# @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
|
|
254
|
+
# @param col [Integer, nil] Optional 0-based column index.
|
|
255
|
+
# @return [Hash, nil]
|
|
256
|
+
# @api public
|
|
257
|
+
# : (String | Symbol | Integer ref_or_row, ?Integer? col) -> Hash[Symbol, untyped]?
|
|
258
|
+
def hyperlink: (String | Symbol | Integer ref_or_row, ?Integer? col) -> Hash[Symbol, untyped]?
|
|
259
|
+
|
|
260
|
+
# Returns comments configured for this worksheet as an Array of comment hashes.
|
|
261
|
+
#
|
|
262
|
+
# @return [Array<Hash[Symbol, untyped]>]
|
|
263
|
+
# @api public
|
|
264
|
+
# : () -> Array[Hash[Symbol, untyped]]
|
|
265
|
+
def comments: () -> Array[Hash[Symbol, untyped]]
|
|
266
|
+
|
|
267
|
+
# Returns comment metadata for a specific cell reference, or nil.
|
|
268
|
+
#
|
|
269
|
+
# @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
|
|
270
|
+
# @param col [Integer, nil] Optional 0-based column index.
|
|
271
|
+
# @return [Hash, nil]
|
|
272
|
+
# @api public
|
|
273
|
+
# : (String | Symbol | Integer ref_or_row, ?Integer? col) -> Hash[Symbol, untyped]?
|
|
274
|
+
def comment: (String | Symbol | Integer ref_or_row, ?Integer? col) -> Hash[Symbol, untyped]?
|
|
275
|
+
|
|
276
|
+
# Returns comments indexed by cell reference.
|
|
277
|
+
#
|
|
278
|
+
# @return [Hash<String, Hash[Symbol, untyped]>]
|
|
279
|
+
# @api public
|
|
280
|
+
# : () -> Hash[String, Hash[Symbol, untyped]]
|
|
281
|
+
def comments_by_ref: () -> Hash[String, Hash[Symbol, untyped]]
|
|
282
|
+
|
|
283
|
+
# Returns all embedded images in this worksheet.
|
|
284
|
+
#
|
|
285
|
+
# @return [Array<Elements::Image>]
|
|
286
|
+
# @api public
|
|
287
|
+
# : () -> Array[Elements::Image]
|
|
288
|
+
def images: () -> Array[Elements::Image]
|
|
289
|
+
|
|
290
|
+
# Returns all images anchored at a specific cell reference or 0-based coordinate.
|
|
291
|
+
#
|
|
292
|
+
# @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
|
|
293
|
+
# @param col [Integer, nil] Optional 0-based column index.
|
|
294
|
+
# @return [Array<Elements::Image>]
|
|
295
|
+
# @api public
|
|
296
|
+
# : (String | Symbol | Integer ref_or_row, ?Integer? col) -> Array[Elements::Image]
|
|
297
|
+
def images_at: (String | Symbol | Integer ref_or_row, ?Integer? col) -> Array[Elements::Image]
|
|
298
|
+
|
|
299
|
+
# Loads and returns images for this worksheet, optionally yielding self for block syntax.
|
|
300
|
+
#
|
|
301
|
+
# @yield [sheet]
|
|
302
|
+
# @yieldparam sheet [StreamSheet]
|
|
303
|
+
# @return [StreamSheet, void]
|
|
304
|
+
# @api public
|
|
305
|
+
# : () { (StreamSheet) -> void } -> void
|
|
306
|
+
# : () -> StreamSheet
|
|
307
|
+
def with_images: () { (StreamSheet) -> void } -> void
|
|
308
|
+
| () -> StreamSheet
|
|
309
|
+
|
|
310
|
+
# Access a cell by reference or 0-based coordinates.
|
|
311
|
+
#
|
|
312
|
+
# @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
|
|
313
|
+
# @param col [Integer, nil] Optional 0-based column index.
|
|
314
|
+
# @return [Elements::Cell, nil]
|
|
315
|
+
# @api public
|
|
316
|
+
# : (String | Symbol | Integer ref_or_row, ?Integer? col) -> Elements::Cell?
|
|
317
|
+
def cell: (String | Symbol | Integer ref_or_row, ?Integer? col) -> Elements::Cell?
|
|
318
|
+
|
|
319
|
+
# Returns the formatted string representation of a cell's value.
|
|
320
|
+
#
|
|
321
|
+
# @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
|
|
322
|
+
# @param col [Integer, nil] Optional 0-based column index.
|
|
323
|
+
# @return [String, nil]
|
|
324
|
+
# @api public
|
|
325
|
+
# : (String | Symbol | Integer ref_or_row, ?Integer? col) -> String?
|
|
326
|
+
def formatted_value: (String | Symbol | Integer ref_or_row, ?Integer? col) -> String?
|
|
327
|
+
|
|
102
328
|
# Returns merged cell ranges (e.g. ["A1:B2"]) for this worksheet.
|
|
103
329
|
#
|
|
104
330
|
# @return [Array<String>]
|
|
@@ -136,5 +362,13 @@ module Xlsxrb
|
|
|
136
362
|
# Returns the full raw XML string for this worksheet, loaded on demand.
|
|
137
363
|
# : () -> String
|
|
138
364
|
def raw_sheet_xml: () -> String
|
|
365
|
+
|
|
366
|
+
# Returns 1-based bounds [first_row, first_col, last_row, last_col] from dimension ref.
|
|
367
|
+
# : () -> Array[Integer]?
|
|
368
|
+
def dimension_bounds: () -> Array[Integer]?
|
|
369
|
+
|
|
370
|
+
# Extracts dimension reference from XML source lazily without parsing the entire file.
|
|
371
|
+
# : () -> String?
|
|
372
|
+
def extract_dimension: () -> String?
|
|
139
373
|
end
|
|
140
374
|
end
|