xlsxrb 0.1.13 → 0.1.15

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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/README.md +17 -14
  4. data/lib/xlsxrb/colors.rb +118 -0
  5. data/lib/xlsxrb/elements/cell.rb +205 -16
  6. data/lib/xlsxrb/elements/column.rb +6 -4
  7. data/lib/xlsxrb/elements/coordinate_access.rb +32 -0
  8. data/lib/xlsxrb/elements/image.rb +128 -0
  9. data/lib/xlsxrb/elements/row.rb +206 -9
  10. data/lib/xlsxrb/elements/styles.rb +157 -0
  11. data/lib/xlsxrb/elements/types.rb +95 -1
  12. data/lib/xlsxrb/elements/workbook.rb +121 -4
  13. data/lib/xlsxrb/elements/worksheet.rb +519 -29
  14. data/lib/xlsxrb/elements.rb +2 -0
  15. data/lib/xlsxrb/number_formatter.rb +429 -0
  16. data/lib/xlsxrb/ooxml/cfb.rb +1 -1
  17. data/lib/xlsxrb/ooxml/reader/listeners/core_listeners.rb +7 -5
  18. data/lib/xlsxrb/ooxml/reader/listeners/drawing_listeners.rb +11 -4
  19. data/lib/xlsxrb/ooxml/reader/listeners/feature_listeners.rb +7 -1
  20. data/lib/xlsxrb/ooxml/reader.rb +14 -17
  21. data/lib/xlsxrb/ooxml/shared_strings_parser.rb +7 -1
  22. data/lib/xlsxrb/ooxml/styles_parser.rb +39 -9
  23. data/lib/xlsxrb/ooxml/utils.rb +34 -18
  24. data/lib/xlsxrb/ooxml/workbook_parser.rb +74 -16
  25. data/lib/xlsxrb/ooxml/workbook_writer.rb +82 -23
  26. data/lib/xlsxrb/ooxml/worksheet_parser.rb +319 -79
  27. data/lib/xlsxrb/ooxml/worksheet_writer.rb +263 -66
  28. data/lib/xlsxrb/ooxml/writer/features_xml.rb +5 -3
  29. data/lib/xlsxrb/ooxml/writer.rb +14 -0
  30. data/lib/xlsxrb/ooxml/xml_builder.rb +14 -2
  31. data/lib/xlsxrb/ooxml/zip_reader.rb +144 -28
  32. data/lib/xlsxrb/stream_row.rb +243 -16
  33. data/lib/xlsxrb/stream_sheet.rb +647 -16
  34. data/lib/xlsxrb/stream_writer.rb +375 -34
  35. data/lib/xlsxrb/style_builder.rb +308 -22
  36. data/lib/xlsxrb/utils.rb +211 -0
  37. data/lib/xlsxrb/version.rb +1 -1
  38. data/lib/xlsxrb/workbook_builder.rb +72 -11
  39. data/lib/xlsxrb/worksheet_builder.rb +738 -24
  40. data/lib/xlsxrb.rb +1073 -83
  41. data/sig/generated/xlsxrb/colors.rbs +40 -0
  42. data/sig/generated/xlsxrb/elements/cell.rbs +113 -8
  43. data/sig/generated/xlsxrb/elements/column.rbs +3 -2
  44. data/sig/generated/xlsxrb/elements/coordinate_access.rbs +18 -0
  45. data/sig/generated/xlsxrb/elements/image.rbs +82 -0
  46. data/sig/generated/xlsxrb/elements/row.rbs +83 -4
  47. data/sig/generated/xlsxrb/elements/styles.rbs +79 -0
  48. data/sig/generated/xlsxrb/elements/types.rbs +43 -0
  49. data/sig/generated/xlsxrb/elements/workbook.rbs +79 -2
  50. data/sig/generated/xlsxrb/elements/worksheet.rbs +282 -18
  51. data/sig/generated/xlsxrb/number_formatter.rbs +132 -0
  52. data/sig/generated/xlsxrb/ooxml/reader.rbs +6 -0
  53. data/sig/generated/xlsxrb/ooxml/shared_strings_parser.rbs +2 -0
  54. data/sig/generated/xlsxrb/ooxml/styles_parser.rbs +5 -2
  55. data/sig/generated/xlsxrb/ooxml/utils.rbs +17 -8
  56. data/sig/generated/xlsxrb/ooxml/workbook_parser.rbs +9 -3
  57. data/sig/generated/xlsxrb/ooxml/workbook_writer.rbs +1 -1
  58. data/sig/generated/xlsxrb/ooxml/worksheet_parser.rbs +28 -6
  59. data/sig/generated/xlsxrb/ooxml/worksheet_writer.rbs +13 -3
  60. data/sig/generated/xlsxrb/ooxml/writer.rbs +2 -0
  61. data/sig/generated/xlsxrb/ooxml/xml_builder.rbs +3 -1
  62. data/sig/generated/xlsxrb/ooxml/zip_reader.rbs +13 -0
  63. data/sig/generated/xlsxrb/stream_row.rbs +100 -6
  64. data/sig/generated/xlsxrb/stream_sheet.rbs +358 -14
  65. data/sig/generated/xlsxrb/stream_writer.rbs +220 -30
  66. data/sig/generated/xlsxrb/style_builder.rbs +55 -18
  67. data/sig/generated/xlsxrb/utils.rbs +151 -0
  68. data/sig/generated/xlsxrb/workbook_builder.rbs +26 -0
  69. data/sig/generated/xlsxrb/worksheet_builder.rbs +356 -18
  70. data/sig/generated/xlsxrb.rbs +223 -27
  71. metadata +11 -1
@@ -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
- # : (String name, untyped sheet_source, Array[String] shared_strings, ?Hash[untyped, untyped]? styles, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> void
41
- def initialize: (String name, untyped sheet_source, Array[String] shared_strings, ?Hash[untyped, untyped]? styles, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> void
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>]
@@ -127,14 +353,132 @@ module Xlsxrb
127
353
  # : () -> Array[Hash[Symbol, untyped]]
128
354
  def conditional_formats: () -> Array[Hash[Symbol, untyped]]
129
355
 
356
+ # Returns tables defined in this worksheet.
357
+ #
358
+ # @return [Array<Hash[Symbol, untyped]>]
359
+ # @api public
360
+ # : () -> Array[Hash[Symbol, untyped]]
361
+ def tables: () -> Array[Hash[Symbol, untyped]]
362
+
363
+ # Returns shapes defined in this worksheet.
364
+ #
365
+ # @return [Array<Hash[Symbol, untyped]>]
366
+ # @api public
367
+ # : () -> Array[Hash[Symbol, untyped]]
368
+ def shapes: () -> Array[Hash[Symbol, untyped]]
369
+
370
+ # Returns freeze pane settings for this worksheet, or nil if none.
371
+ #
372
+ # @return [Hash[Symbol, untyped], nil]
373
+ # @api public
374
+ # : () -> Hash[Symbol, untyped]?
375
+ def freeze_pane: () -> Hash[Symbol, untyped]?
376
+
377
+ # Returns sheet view properties for this worksheet.
378
+ #
379
+ # @return [Hash[Symbol, untyped]]
380
+ # @api public
381
+ # : () -> Hash[Symbol, untyped]
382
+ def sheet_view: () -> Hash[Symbol, untyped]
383
+
384
+ # Returns sheet protection settings as a hash, or nil if unprotected.
385
+ #
386
+ # @return [Hash[Symbol, untyped], nil]
387
+ # @api public
388
+ # : () -> Hash[Symbol, untyped]?
389
+ def sheet_protection: () -> Hash[Symbol, untyped]?
390
+
391
+ # Returns sheet-level properties (tabColor, outlinePr) for this worksheet.
392
+ #
393
+ # @return [Hash[Symbol, untyped]]
394
+ # @api public
395
+ # : () -> Hash[Symbol, untyped]
396
+ def sheet_properties: () -> Hash[Symbol, untyped]
397
+
398
+ # Returns sheet format properties (defaultRowHeight, defaultColWidth, baseColWidth) for this worksheet.
399
+ #
400
+ # @return [Hash[Symbol, untyped]]
401
+ # @api public
402
+ # : () -> Hash[Symbol, untyped]
403
+ def sheet_format: () -> Hash[Symbol, untyped]
404
+
405
+ # Returns page setup configurations for this worksheet.
406
+ #
407
+ # @return [Hash[Symbol, untyped]]
408
+ # @api public
409
+ # : () -> Hash[Symbol, untyped]
410
+ def page_setup: () -> Hash[Symbol, untyped]
411
+
412
+ # Returns page margins for this worksheet, or nil if none.
413
+ #
414
+ # @return [Hash[Symbol, untyped], nil]
415
+ # @api public
416
+ # : () -> Hash[Symbol, untyped]?
417
+ def page_margins: () -> Hash[Symbol, untyped]?
418
+
419
+ # Returns header/footer configurations for this worksheet.
420
+ #
421
+ # @return [Hash[Symbol, untyped]]
422
+ # @api public
423
+ # : () -> Hash[Symbol, untyped]
424
+ def header_footer: () -> Hash[Symbol, untyped]
425
+
426
+ # Returns print options for this worksheet.
427
+ #
428
+ # @return [Hash[Symbol, untyped]]
429
+ # @api public
430
+ # : () -> Hash[Symbol, untyped]
431
+ def print_options: () -> Hash[Symbol, untyped]
432
+
433
+ # Returns explicit row page breaks for this worksheet.
434
+ #
435
+ # @return [Array<untyped>]
436
+ # @api public
437
+ # : () -> Array[untyped]
438
+ def row_breaks: () -> Array[untyped]
439
+
440
+ # Returns explicit column page breaks for this worksheet.
441
+ #
442
+ # @return [Array<untyped>]
443
+ # @api public
444
+ # : () -> Array[untyped]
445
+ def col_breaks: () -> Array[untyped]
446
+
447
+ # Returns protected ranges defined for this worksheet.
448
+ #
449
+ # @return [Array<Hash[Symbol, untyped]>]
450
+ # @api public
451
+ # : () -> Array[Hash[Symbol, untyped]]
452
+ def protected_ranges: () -> Array[Hash[Symbol, untyped]]
453
+
454
+ # Returns cell watch cell references defined for this worksheet.
455
+ #
456
+ # @return [Array<String>]
457
+ # @api public
458
+ # : () -> Array[String]
459
+ def cell_watches: () -> Array[String]
460
+
130
461
  # Closes any underlying reader resources.
131
462
  # : () -> void
132
463
  def close: () -> void
133
464
 
134
465
  private
135
466
 
136
- # Returns the full raw XML string for this worksheet, loaded on demand.
467
+ # : () -> Hash[Symbol, untyped]
468
+ def sheet_view_data: () -> Hash[Symbol, untyped]
469
+
470
+ # : () -> Hash[Symbol, untyped]
471
+ def print_page_data: () -> Hash[Symbol, untyped]
472
+
137
473
  # : () -> String
138
474
  def raw_sheet_xml: () -> String
475
+
476
+ # Returns 1-based bounds [first_row, first_col, last_row, last_col] from dimension ref.
477
+ # : () -> Array[Integer]?
478
+ def dimension_bounds: () -> Array[Integer]?
479
+
480
+ # Extracts dimension reference from XML source lazily without parsing the entire file.
481
+ # : () -> String?
482
+ def extract_dimension: () -> String?
139
483
  end
140
484
  end