xlsxrb 0.1.16 → 0.1.17

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +64 -0
  3. data/README.md +2 -2
  4. data/lib/xlsxrb/chart_builder.rb +41 -2
  5. data/lib/xlsxrb/dsl_helpers.rb +522 -6
  6. data/lib/xlsxrb/elements/cell.rb +34 -9
  7. data/lib/xlsxrb/elements/column.rb +2 -2
  8. data/lib/xlsxrb/elements/types.rb +1 -0
  9. data/lib/xlsxrb/elements/workbook.rb +48 -0
  10. data/lib/xlsxrb/elements/worksheet.rb +158 -11
  11. data/lib/xlsxrb/ooxml/reader/listeners/core_listeners.rb +22 -1
  12. data/lib/xlsxrb/ooxml/reader/listeners/drawing_listeners.rb +187 -24
  13. data/lib/xlsxrb/ooxml/reader/listeners/feature_listeners.rb +108 -1
  14. data/lib/xlsxrb/ooxml/reader/listeners/style_listeners.rb +16 -11
  15. data/lib/xlsxrb/ooxml/reader.rb +88 -0
  16. data/lib/xlsxrb/ooxml/styles_parser.rb +19 -11
  17. data/lib/xlsxrb/ooxml/workbook_parser.rb +18 -3
  18. data/lib/xlsxrb/ooxml/workbook_writer.rb +266 -46
  19. data/lib/xlsxrb/ooxml/worksheet_parser.rb +18 -4
  20. data/lib/xlsxrb/ooxml/worksheet_writer.rb +289 -88
  21. data/lib/xlsxrb/ooxml/writer/drawing_xml.rb +579 -441
  22. data/lib/xlsxrb/ooxml/writer/features_xml.rb +26 -9
  23. data/lib/xlsxrb/ooxml/writer/styles_xml.rb +23 -9
  24. data/lib/xlsxrb/ooxml/writer.rb +268 -31
  25. data/lib/xlsxrb/ooxml/zip_writer.rb +15 -5
  26. data/lib/xlsxrb/stream_sheet.rb +157 -3
  27. data/lib/xlsxrb/stream_writer.rb +946 -74
  28. data/lib/xlsxrb/style_builder.rb +59 -6
  29. data/lib/xlsxrb/utils.rb +65 -0
  30. data/lib/xlsxrb/version.rb +1 -1
  31. data/lib/xlsxrb/workbook_builder.rb +197 -14
  32. data/lib/xlsxrb/worksheet_builder.rb +1137 -44
  33. data/lib/xlsxrb.rb +302 -47
  34. data/sig/generated/xlsxrb/chart_builder.rbs +31 -3
  35. data/sig/generated/xlsxrb/dsl_helpers.rbs +119 -4
  36. data/sig/generated/xlsxrb/elements/cell.rbs +20 -3
  37. data/sig/generated/xlsxrb/elements/column.rbs +3 -3
  38. data/sig/generated/xlsxrb/elements/types.rbs +2 -0
  39. data/sig/generated/xlsxrb/elements/workbook.rbs +37 -0
  40. data/sig/generated/xlsxrb/elements/worksheet.rbs +82 -2
  41. data/sig/generated/xlsxrb/ooxml/reader/listeners/core_listeners.rbs +2 -0
  42. data/sig/generated/xlsxrb/ooxml/reader/listeners/drawing_listeners.rbs +74 -2
  43. data/sig/generated/xlsxrb/ooxml/reader/listeners/feature_listeners.rbs +36 -0
  44. data/sig/generated/xlsxrb/ooxml/reader/listeners/style_listeners.rbs +3 -0
  45. data/sig/generated/xlsxrb/ooxml/reader.rbs +17 -0
  46. data/sig/generated/xlsxrb/ooxml/styles_parser.rbs +3 -0
  47. data/sig/generated/xlsxrb/ooxml/workbook_parser.rbs +8 -0
  48. data/sig/generated/xlsxrb/ooxml/workbook_writer.rbs +8 -4
  49. data/sig/generated/xlsxrb/ooxml/worksheet_parser.rbs +1 -1
  50. data/sig/generated/xlsxrb/ooxml/worksheet_writer.rbs +12 -1
  51. data/sig/generated/xlsxrb/ooxml/writer/drawing_xml.rbs +16 -0
  52. data/sig/generated/xlsxrb/ooxml/writer.rbs +42 -8
  53. data/sig/generated/xlsxrb/ooxml/zip_writer.rbs +8 -2
  54. data/sig/generated/xlsxrb/stream_sheet.rbs +101 -1
  55. data/sig/generated/xlsxrb/stream_writer.rbs +592 -23
  56. data/sig/generated/xlsxrb/style_builder.rbs +24 -6
  57. data/sig/generated/xlsxrb/utils.rbs +20 -0
  58. data/sig/generated/xlsxrb/workbook_builder.rbs +87 -5
  59. data/sig/generated/xlsxrb/worksheet_builder.rbs +554 -10
  60. data/sig/generated/xlsxrb.rbs +77 -16
  61. metadata +1 -1
@@ -36,7 +36,7 @@ module Xlsxrb
36
36
 
37
37
  # Write the worksheet footer. Call once after all rows.
38
38
  # Options for post-sheetData elements (in OOXML order):
39
- def finish: (?drawing_rid: untyped, ?sheet_protection: untyped, ?protected_ranges: untyped, ?auto_filter: untyped, ?filter_columns: untyped, ?sort_state: untyped, ?merge_cells: untyped, ?conditional_formats: untyped, ?data_validations: untyped, ?hyperlinks: untyped, ?print_options: untyped, ?page_margins: untyped, ?page_setup: untyped, ?header_footer: untyped, ?row_breaks: untyped, ?col_breaks: untyped, ?cell_watches: untyped, ?tables: untyped, ?table_start_rid: untyped, ?legacy_drawing_rid: untyped, ?sparkline_groups: untyped) -> untyped
39
+ def finish: (?drawing_rid: untyped, ?picture_rid: untyped, ?sheet_protection: untyped, ?protected_ranges: untyped, ?auto_filter: untyped, ?filter_columns: untyped, ?sort_state: untyped, ?merge_cells: untyped, ?conditional_formats: untyped, ?data_validations: untyped, ?hyperlinks: untyped, ?print_options: untyped, ?page_margins: untyped, ?page_setup: untyped, ?header_footer: untyped, ?row_breaks: untyped, ?col_breaks: untyped, ?cell_watches: untyped, ?ignored_errors: untyped, ?tables: untyped, ?table_start_rid: untyped, ?legacy_drawing_rid: untyped, ?sparkline_groups: untyped, ?phonetic_pr: untyped, ?sheet_calc_pr: untyped) -> untyped
40
40
 
41
41
  private
42
42
 
@@ -44,6 +44,8 @@ module Xlsxrb
44
44
 
45
45
  def write_sheet_properties: (untyped props) -> untyped
46
46
 
47
+ def build_tab_color_attrs: (untyped props) -> untyped
48
+
47
49
  def write_sheet_views: (?freeze_pane: untyped, ?split_pane: untyped, ?selection: untyped, ?sheet_view: untyped) -> untyped
48
50
 
49
51
  def write_sheet_format_pr: (untyped fmt) -> untyped
@@ -78,6 +80,12 @@ module Xlsxrb
78
80
 
79
81
  def write_cell_watches: (untyped watches) -> untyped
80
82
 
83
+ def write_ignored_errors: (untyped errors) -> untyped
84
+
85
+ def write_phonetic_pr: (untyped props) -> untyped
86
+
87
+ def write_sheet_calc_pr: (untyped props) -> untyped
88
+
81
89
  def write_table_parts: (untyped tables, untyped start_rid) -> untyped
82
90
 
83
91
  def write_sparklines: (untyped groups) -> untyped
@@ -96,6 +104,9 @@ module Xlsxrb
96
104
 
97
105
  def column_letter: (untyped index) -> untyped
98
106
 
107
+ # : (String buf, Elements::RichText rich_text) -> void
108
+ def write_inline_rich_text: (String buf, Elements::RichText rich_text) -> void
109
+
99
110
  INVALID_XML_CHARS_RE: ::Regexp
100
111
 
101
112
  ESCAPE_RE: ::Regexp
@@ -62,6 +62,8 @@ module Xlsxrb
62
62
  # : (untyped rotation, untyped font) -> ("" | ::String)
63
63
  def build_axis_txpr: (untyped rotation, untyped font) -> untyped
64
64
 
65
+ def build_val_ax_xml: (ax_id: untyped, prefix: untyped, chart: untyped, ?default_pos: untyped, ?default_crosses: untyped) -> untyped
66
+
65
67
  # : (untyped chart) -> untyped
66
68
  def generate_chart_xml: (untyped chart) -> untyped
67
69
 
@@ -73,6 +75,20 @@ module Xlsxrb
73
75
 
74
76
  # : (untyped cell_ref) -> (::Array[0] | ::Array[untyped])
75
77
  def cell_to_col_row: (untyped cell_ref) -> untyped
78
+
79
+ THREADED_COMMENTS_NS: ::String
80
+
81
+ # Formats or generates a GUID in standard uppercase braced format {UUID}.
82
+ # : (?String? val) -> String
83
+ def format_guid: (?untyped val) -> untyped
84
+
85
+ # Generates XML for xl/threadedComments/threadedComment{N}.xml.
86
+ # : (Array[Hash[Symbol, untyped]] sheet_threaded_comments) -> String
87
+ def generate_threaded_comments_xml: (untyped sheet_threaded_comments) -> untyped
88
+
89
+ # Generates XML for xl/persons/person.xml.
90
+ # : (Array[Hash[Symbol, untyped]] persons) -> String
91
+ def generate_persons_xml: (untyped persons) -> untyped
76
92
  end
77
93
  end
78
94
  end
@@ -48,8 +48,10 @@ module Xlsxrb
48
48
 
49
49
  attr_reader num_fmts: untyped
50
50
 
51
- # : () -> void
52
- def initialize: () -> untyped
51
+ attr_reader dxfs: untyped
52
+
53
+ # : (?default_font: untyped?) -> void
54
+ def initialize: (?default_font: untyped) -> untyped
53
55
 
54
56
  # Adds a new sheet. Raises if name is already taken.
55
57
  # : (untyped name) -> untyped
@@ -208,6 +210,18 @@ module Xlsxrb
208
210
  # : (**untyped opts) -> untyped
209
211
  def add_dxf: (**untyped opts) -> untyped
210
212
 
213
+ # Sets the workbook-wide default font (font 0).
214
+ #
215
+ # @param name [String, Hash, nil] Font name or font options Hash.
216
+ # @param size [Float, Integer, nil] Font size in points.
217
+ # @param opts [Hash] Additional font options (e.g. `bold:`, `italic:`, `family:`, `charset:`, `color:`).
218
+ # @return [void]
219
+ # @api public
220
+ # : (?String | Hash[Symbol, untyped]? name, ?Float | Integer | nil size, **untyped opts) -> void
221
+ def default_font: (?String | Hash[Symbol, untyped]? name, ?Float | Integer | nil size, **untyped opts) -> void
222
+
223
+ alias set_default_font default_font
224
+
211
225
  # Sets the indexed colors palette (array of ARGB hex strings, e.g. ["FF000000", "FFFFFFFF"]).
212
226
  # rubocop:disable Naming/AccessorMethodName
213
227
  # : (untyped colors) -> untyped
@@ -382,8 +396,8 @@ module Xlsxrb
382
396
  # Adds a conditional formatting rule to the specified range.
383
397
  # Options: type (:cell_is, :expression, :color_scale, :data_bar, :icon_set),
384
398
  # operator, priority, formula/formulas, format_id, color_scale, data_bar, icon_set.
385
- # : (untyped sqref, ?sheet: untyped?, **untyped opts) -> untyped
386
- def add_conditional_format: (untyped sqref, ?sheet: untyped, **untyped opts) -> untyped
399
+ # : (?untyped sqref, ?sheet: untyped?, **untyped opts) ?{ (ConditionalFormatBuilder) -> void } -> untyped
400
+ def add_conditional_format: (?untyped sqref, ?sheet: untyped, **untyped opts) ?{ (?) -> untyped } -> untyped
387
401
 
388
402
  # Returns conditional formatting rules for the first (or given) sheet.
389
403
  # : (?sheet: untyped?) -> untyped
@@ -571,8 +585,8 @@ module Xlsxrb
571
585
  # Adds a chart to the given sheet.
572
586
  # type: :bar, :line, :pie. title: chart title string.
573
587
  # data_ref: e.g. "Sheet1!$A$1:$B$4". cat_ref/val_ref for explicit series.
574
- # : (?type: ::Symbol, ?title: untyped?, ?title_overlay: untyped?, ?title_font: untyped?, ?title_fill_color: untyped?, ?title_no_fill: untyped?, ?title_line_color: untyped?, ?title_line_width: untyped?, ?title_line_dash: untyped?, ?title_rotation: untyped?, ?auto_title_deleted: untyped?, ?cat_ref: untyped?, ?val_ref: untyped?, ?series: untyped?, ?legend: untyped?, ?data_labels: untyped?, ?cat_axis_title: untyped?, ?val_axis_title: untyped?, ?cat_axis_title_font: untyped?, ?cat_axis_title_fill: untyped?, ?cat_axis_title_no_fill: untyped?, ?cat_axis_title_line_color: untyped?, ?cat_axis_title_line_width: untyped?, ?cat_axis_title_line_dash: untyped?, ?cat_axis_title_rotation: untyped?, ?val_axis_title_font: untyped?, ?val_axis_title_fill: untyped?, ?val_axis_title_no_fill: untyped?, ?val_axis_title_line_color: untyped?, ?val_axis_title_line_width: untyped?, ?val_axis_title_line_dash: untyped?, ?val_axis_title_rotation: untyped?, ?cat_axis_tick_lbl_pos: untyped?, ?val_axis_tick_lbl_pos: untyped?, ?cat_axis_major_gridlines: untyped?, ?val_axis_major_gridlines: untyped?, ?cat_axis_minor_gridlines: untyped?, ?val_axis_minor_gridlines: untyped?, ?cat_axis_delete: untyped?, ?val_axis_delete: untyped?, ?cat_axis_orientation: untyped?, ?val_axis_orientation: untyped?, ?cat_axis_num_fmt: untyped?, ?val_axis_num_fmt: untyped?, ?cat_axis_major_tick_mark: untyped?, ?cat_axis_minor_tick_mark: untyped?, ?val_axis_major_tick_mark: untyped?, ?val_axis_minor_tick_mark: untyped?, ?cat_axis_crosses: untyped?, ?val_axis_crosses: untyped?, ?cat_axis_crosses_at: untyped?, ?val_axis_crosses_at: untyped?, ?cat_axis_tick_lbl_skip: untyped?, ?cat_axis_tick_mark_skip: untyped?, ?cat_axis_lbl_offset: untyped?, ?cat_axis_auto: untyped?, ?cat_axis_lbl_algn: untyped?, ?cat_axis_no_multi_lvl_lbl: untyped?, ?val_axis_cross_between: untyped?, ?val_axis_major_unit: untyped?, ?val_axis_minor_unit: untyped?, ?cat_axis_scaling_max: untyped?, ?cat_axis_scaling_min: untyped?, ?val_axis_scaling_max: untyped?, ?val_axis_scaling_min: untyped?, ?cat_axis_log_base: untyped?, ?val_axis_log_base: untyped?, ?val_axis_disp_units: untyped?, ?gap_width: untyped?, ?gap_depth: untyped?, ?overlap: untyped?, ?first_slice_ang: untyped?, ?hole_size: untyped?, ?smooth: untyped?, ?marker: untyped?, ?scatter_style: untyped?, ?radar_style: untyped?, ?bar_shape: untyped?, ?bubble_3d: untyped?, ?bubble_scale: untyped?, ?show_neg_bubbles: untyped?, ?size_represents: untyped?, ?wireframe: untyped?, ?grouping: untyped?, ?bar_dir: untyped?, ?vary_colors: untyped?, ?style: untyped?, ?rounded_corners: untyped?, ?view_3d: untyped?, ?cat_axis_pos: untyped?, ?val_axis_pos: untyped?, ?name: untyped?, ?description: untyped?, ?frame_title: untyped?, ?frame_hidden: untyped?, ?frame_macro: untyped?, ?frame_no_grp: untyped?, ?from_col: ::Integer, ?from_row: ::Integer, ?to_col: ::Integer, ?to_row: ::Integer, ?from_col_off: untyped?, ?from_row_off: untyped?, ?to_col_off: untyped?, ?to_row_off: untyped?, ?edit_as: untyped?, ?published: untyped?, ?locks_with_sheet: untyped?, ?prints_with_sheet: untyped?, ?plot_vis_only: untyped?, ?disp_blanks_as: untyped?, ?show_d_lbls_over_max: untyped?, ?data_table: untyped?, ?plot_area_fill: untyped?, ?plot_area_no_fill: untyped?, ?plot_area_line_color: untyped?, ?plot_area_line_width: untyped?, ?plot_area_line_dash: untyped?, ?plot_area_layout: untyped?, ?floor: untyped?, ?side_wall: untyped?, ?back_wall: untyped?, ?drop_lines: untyped?, ?hi_low_lines: untyped?, ?ser_lines: untyped?, ?up_down_bars: untyped?, ?band_fmts: untyped?, ?of_pie_type: untyped?, ?split_type: untyped?, ?split_pos: untyped?, ?cust_split: untyped?, ?second_pie_size: untyped?, ?cat_axis_label_rotation: untyped?, ?val_axis_label_rotation: untyped?, ?cat_axis_font: untyped?, ?val_axis_font: untyped?, ?cat_axis_line_color: untyped?, ?cat_axis_line_width: untyped?, ?cat_axis_line_dash: untyped?, ?val_axis_line_color: untyped?, ?val_axis_line_width: untyped?, ?val_axis_line_dash: untyped?, ?cat_axis_fill: untyped?, ?cat_axis_no_fill: untyped?, ?val_axis_fill: untyped?, ?val_axis_no_fill: untyped?, ?cat_axis_type: untyped?, ?cat_axis_base_time_unit: untyped?, ?cat_axis_major_time_unit: untyped?, ?cat_axis_minor_time_unit: untyped?, ?cat_axis_major_unit: untyped?, ?cat_axis_minor_unit: untyped?, ?chart_fill: untyped?, ?chart_no_fill: untyped?, ?chart_line_color: untyped?, ?chart_line_width: untyped?, ?chart_line_dash: untyped?, ?protection: untyped?, ?print_settings: untyped?, ?chart_font: untyped?, ?sheet: untyped?) -> untyped
575
- def add_chart: (?type: untyped, ?title: untyped, ?title_overlay: untyped, ?title_font: untyped, ?title_fill_color: untyped, ?title_no_fill: untyped, ?title_line_color: untyped, ?title_line_width: untyped, ?title_line_dash: untyped, ?title_rotation: untyped, ?auto_title_deleted: untyped, ?cat_ref: untyped, ?val_ref: untyped, ?series: untyped, ?legend: untyped, ?data_labels: untyped, ?cat_axis_title: untyped, ?val_axis_title: untyped, ?cat_axis_title_font: untyped, ?cat_axis_title_fill: untyped, ?cat_axis_title_no_fill: untyped, ?cat_axis_title_line_color: untyped, ?cat_axis_title_line_width: untyped, ?cat_axis_title_line_dash: untyped, ?cat_axis_title_rotation: untyped, ?val_axis_title_font: untyped, ?val_axis_title_fill: untyped, ?val_axis_title_no_fill: untyped, ?val_axis_title_line_color: untyped, ?val_axis_title_line_width: untyped, ?val_axis_title_line_dash: untyped, ?val_axis_title_rotation: untyped, ?cat_axis_tick_lbl_pos: untyped, ?val_axis_tick_lbl_pos: untyped, ?cat_axis_major_gridlines: untyped, ?val_axis_major_gridlines: untyped, ?cat_axis_minor_gridlines: untyped, ?val_axis_minor_gridlines: untyped, ?cat_axis_delete: untyped, ?val_axis_delete: untyped, ?cat_axis_orientation: untyped, ?val_axis_orientation: untyped, ?cat_axis_num_fmt: untyped, ?val_axis_num_fmt: untyped, ?cat_axis_major_tick_mark: untyped, ?cat_axis_minor_tick_mark: untyped, ?val_axis_major_tick_mark: untyped, ?val_axis_minor_tick_mark: untyped, ?cat_axis_crosses: untyped, ?val_axis_crosses: untyped, ?cat_axis_crosses_at: untyped, ?val_axis_crosses_at: untyped, ?cat_axis_tick_lbl_skip: untyped, ?cat_axis_tick_mark_skip: untyped, ?cat_axis_lbl_offset: untyped, ?cat_axis_auto: untyped, ?cat_axis_lbl_algn: untyped, ?cat_axis_no_multi_lvl_lbl: untyped, ?val_axis_cross_between: untyped, ?val_axis_major_unit: untyped, ?val_axis_minor_unit: untyped, ?cat_axis_scaling_max: untyped, ?cat_axis_scaling_min: untyped, ?val_axis_scaling_max: untyped, ?val_axis_scaling_min: untyped, ?cat_axis_log_base: untyped, ?val_axis_log_base: untyped, ?val_axis_disp_units: untyped, ?gap_width: untyped, ?gap_depth: untyped, ?overlap: untyped, ?first_slice_ang: untyped, ?hole_size: untyped, ?smooth: untyped, ?marker: untyped, ?scatter_style: untyped, ?radar_style: untyped, ?bar_shape: untyped, ?bubble_3d: untyped, ?bubble_scale: untyped, ?show_neg_bubbles: untyped, ?size_represents: untyped, ?wireframe: untyped, ?grouping: untyped, ?bar_dir: untyped, ?vary_colors: untyped, ?style: untyped, ?rounded_corners: untyped, ?view_3d: untyped, ?cat_axis_pos: untyped, ?val_axis_pos: untyped, ?name: untyped, ?description: untyped, ?frame_title: untyped, ?frame_hidden: untyped, ?frame_macro: untyped, ?frame_no_grp: untyped, ?from_col: untyped, ?from_row: untyped, ?to_col: untyped, ?to_row: untyped, ?from_col_off: untyped, ?from_row_off: untyped, ?to_col_off: untyped, ?to_row_off: untyped, ?edit_as: untyped, ?published: untyped, ?locks_with_sheet: untyped, ?prints_with_sheet: untyped, ?plot_vis_only: untyped, ?disp_blanks_as: untyped, ?show_d_lbls_over_max: untyped, ?data_table: untyped, ?plot_area_fill: untyped, ?plot_area_no_fill: untyped, ?plot_area_line_color: untyped, ?plot_area_line_width: untyped, ?plot_area_line_dash: untyped, ?plot_area_layout: untyped, ?floor: untyped, ?side_wall: untyped, ?back_wall: untyped, ?drop_lines: untyped, ?hi_low_lines: untyped, ?ser_lines: untyped, ?up_down_bars: untyped, ?band_fmts: untyped, ?of_pie_type: untyped, ?split_type: untyped, ?split_pos: untyped, ?cust_split: untyped, ?second_pie_size: untyped, ?cat_axis_label_rotation: untyped, ?val_axis_label_rotation: untyped, ?cat_axis_font: untyped, ?val_axis_font: untyped, ?cat_axis_line_color: untyped, ?cat_axis_line_width: untyped, ?cat_axis_line_dash: untyped, ?val_axis_line_color: untyped, ?val_axis_line_width: untyped, ?val_axis_line_dash: untyped, ?cat_axis_fill: untyped, ?cat_axis_no_fill: untyped, ?val_axis_fill: untyped, ?val_axis_no_fill: untyped, ?cat_axis_type: untyped, ?cat_axis_base_time_unit: untyped, ?cat_axis_major_time_unit: untyped, ?cat_axis_minor_time_unit: untyped, ?cat_axis_major_unit: untyped, ?cat_axis_minor_unit: untyped, ?chart_fill: untyped, ?chart_no_fill: untyped, ?chart_line_color: untyped, ?chart_line_width: untyped, ?chart_line_dash: untyped, ?protection: untyped, ?print_settings: untyped, ?chart_font: untyped, ?sheet: untyped) -> untyped
588
+ # : (?type: ::Symbol, ?title: untyped?, ?title_overlay: untyped?, ?title_font: untyped?, ?title_fill_color: untyped?, ?title_no_fill: untyped?, ?title_line_color: untyped?, ?title_line_width: untyped?, ?title_line_dash: untyped?, ?title_rotation: untyped?, ?auto_title_deleted: untyped?, ?cat_ref: untyped?, ?val_ref: untyped?, ?series: untyped?, ?legend: untyped?, ?data_labels: untyped?, ?cat_axis_title: untyped?, ?val_axis_title: untyped?, ?cat_axis_title_font: untyped?, ?cat_axis_title_fill: untyped?, ?cat_axis_title_no_fill: untyped?, ?cat_axis_title_line_color: untyped?, ?cat_axis_title_line_width: untyped?, ?cat_axis_title_line_dash: untyped?, ?cat_axis_title_rotation: untyped?, ?val_axis_title_font: untyped?, ?val_axis_title_fill: untyped?, ?val_axis_title_no_fill: untyped?, ?val_axis_title_line_color: untyped?, ?val_axis_title_line_width: untyped?, ?val_axis_title_line_dash: untyped?, ?val_axis_title_rotation: untyped?, ?cat_axis_tick_lbl_pos: untyped?, ?val_axis_tick_lbl_pos: untyped?, ?cat_axis_major_gridlines: untyped?, ?val_axis_major_gridlines: untyped?, ?cat_axis_minor_gridlines: untyped?, ?val_axis_minor_gridlines: untyped?, ?cat_axis_delete: untyped?, ?val_axis_delete: untyped?, ?cat_axis_orientation: untyped?, ?val_axis_orientation: untyped?, ?cat_axis_num_fmt: untyped?, ?val_axis_num_fmt: untyped?, ?cat_axis_major_tick_mark: untyped?, ?cat_axis_minor_tick_mark: untyped?, ?val_axis_major_tick_mark: untyped?, ?val_axis_minor_tick_mark: untyped?, ?cat_axis_crosses: untyped?, ?val_axis_crosses: untyped?, ?cat_axis_crosses_at: untyped?, ?val_axis_crosses_at: untyped?, ?cat_axis_tick_lbl_skip: untyped?, ?cat_axis_tick_mark_skip: untyped?, ?cat_axis_lbl_offset: untyped?, ?cat_axis_auto: untyped?, ?cat_axis_lbl_algn: untyped?, ?cat_axis_no_multi_lvl_lbl: untyped?, ?val_axis_cross_between: untyped?, ?val_axis_major_unit: untyped?, ?val_axis_minor_unit: untyped?, ?cat_axis_scaling_max: untyped?, ?cat_axis_scaling_min: untyped?, ?val_axis_scaling_max: untyped?, ?val_axis_scaling_min: untyped?, ?cat_axis_log_base: untyped?, ?val_axis_log_base: untyped?, ?val_axis_disp_units: untyped?, ?gap_width: untyped?, ?gap_depth: untyped?, ?overlap: untyped?, ?first_slice_ang: untyped?, ?hole_size: untyped?, ?smooth: untyped?, ?marker: untyped?, ?scatter_style: untyped?, ?radar_style: untyped?, ?bar_shape: untyped?, ?bubble_3d: untyped?, ?bubble_scale: untyped?, ?show_neg_bubbles: untyped?, ?size_represents: untyped?, ?wireframe: untyped?, ?grouping: untyped?, ?bar_dir: untyped?, ?vary_colors: untyped?, ?style: untyped?, ?rounded_corners: untyped?, ?view_3d: untyped?, ?cat_axis_pos: untyped?, ?val_axis_pos: untyped?, ?name: untyped?, ?description: untyped?, ?frame_title: untyped?, ?frame_hidden: untyped?, ?frame_macro: untyped?, ?frame_no_grp: untyped?, ?from_col: ::Integer, ?from_row: ::Integer, ?to_col: ::Integer, ?to_row: ::Integer, ?from_col_off: untyped?, ?from_row_off: untyped?, ?to_col_off: untyped?, ?to_row_off: untyped?, ?edit_as: untyped?, ?published: untyped?, ?locks_with_sheet: untyped?, ?prints_with_sheet: untyped?, ?plot_vis_only: untyped?, ?disp_blanks_as: untyped?, ?show_d_lbls_over_max: untyped?, ?data_table: untyped?, ?plot_area_fill: untyped?, ?plot_area_no_fill: untyped?, ?plot_area_line_color: untyped?, ?plot_area_line_width: untyped?, ?plot_area_line_dash: untyped?, ?plot_area_layout: untyped?, ?floor: untyped?, ?side_wall: untyped?, ?back_wall: untyped?, ?drop_lines: untyped?, ?hi_low_lines: untyped?, ?ser_lines: untyped?, ?up_down_bars: untyped?, ?band_fmts: untyped?, ?of_pie_type: untyped?, ?split_type: untyped?, ?split_pos: untyped?, ?cust_split: untyped?, ?second_pie_size: untyped?, ?cat_axis_label_rotation: untyped?, ?val_axis_label_rotation: untyped?, ?cat_axis_font: untyped?, ?val_axis_font: untyped?, ?cat_axis_line_color: untyped?, ?cat_axis_line_width: untyped?, ?cat_axis_line_dash: untyped?, ?val_axis_line_color: untyped?, ?val_axis_line_width: untyped?, ?val_axis_line_dash: untyped?, ?cat_axis_fill: untyped?, ?cat_axis_no_fill: untyped?, ?val_axis_fill: untyped?, ?val_axis_no_fill: untyped?, ?cat_axis_type: untyped?, ?cat_axis_base_time_unit: untyped?, ?cat_axis_major_time_unit: untyped?, ?cat_axis_minor_time_unit: untyped?, ?cat_axis_major_unit: untyped?, ?cat_axis_minor_unit: untyped?, ?chart_fill: untyped?, ?chart_no_fill: untyped?, ?chart_line_color: untyped?, ?chart_line_width: untyped?, ?chart_line_dash: untyped?, ?protection: untyped?, ?print_settings: untyped?, ?chart_font: untyped?, ?secondary_value_axis: untyped?, ?secondary_axis: untyped?, ?category_axis: untyped?, ?value_axis: untyped?, ?sheet: untyped?, **untyped extra_options) -> untyped
589
+ def add_chart: (?type: untyped, ?title: untyped, ?title_overlay: untyped, ?title_font: untyped, ?title_fill_color: untyped, ?title_no_fill: untyped, ?title_line_color: untyped, ?title_line_width: untyped, ?title_line_dash: untyped, ?title_rotation: untyped, ?auto_title_deleted: untyped, ?cat_ref: untyped, ?val_ref: untyped, ?series: untyped, ?legend: untyped, ?data_labels: untyped, ?cat_axis_title: untyped, ?val_axis_title: untyped, ?cat_axis_title_font: untyped, ?cat_axis_title_fill: untyped, ?cat_axis_title_no_fill: untyped, ?cat_axis_title_line_color: untyped, ?cat_axis_title_line_width: untyped, ?cat_axis_title_line_dash: untyped, ?cat_axis_title_rotation: untyped, ?val_axis_title_font: untyped, ?val_axis_title_fill: untyped, ?val_axis_title_no_fill: untyped, ?val_axis_title_line_color: untyped, ?val_axis_title_line_width: untyped, ?val_axis_title_line_dash: untyped, ?val_axis_title_rotation: untyped, ?cat_axis_tick_lbl_pos: untyped, ?val_axis_tick_lbl_pos: untyped, ?cat_axis_major_gridlines: untyped, ?val_axis_major_gridlines: untyped, ?cat_axis_minor_gridlines: untyped, ?val_axis_minor_gridlines: untyped, ?cat_axis_delete: untyped, ?val_axis_delete: untyped, ?cat_axis_orientation: untyped, ?val_axis_orientation: untyped, ?cat_axis_num_fmt: untyped, ?val_axis_num_fmt: untyped, ?cat_axis_major_tick_mark: untyped, ?cat_axis_minor_tick_mark: untyped, ?val_axis_major_tick_mark: untyped, ?val_axis_minor_tick_mark: untyped, ?cat_axis_crosses: untyped, ?val_axis_crosses: untyped, ?cat_axis_crosses_at: untyped, ?val_axis_crosses_at: untyped, ?cat_axis_tick_lbl_skip: untyped, ?cat_axis_tick_mark_skip: untyped, ?cat_axis_lbl_offset: untyped, ?cat_axis_auto: untyped, ?cat_axis_lbl_algn: untyped, ?cat_axis_no_multi_lvl_lbl: untyped, ?val_axis_cross_between: untyped, ?val_axis_major_unit: untyped, ?val_axis_minor_unit: untyped, ?cat_axis_scaling_max: untyped, ?cat_axis_scaling_min: untyped, ?val_axis_scaling_max: untyped, ?val_axis_scaling_min: untyped, ?cat_axis_log_base: untyped, ?val_axis_log_base: untyped, ?val_axis_disp_units: untyped, ?gap_width: untyped, ?gap_depth: untyped, ?overlap: untyped, ?first_slice_ang: untyped, ?hole_size: untyped, ?smooth: untyped, ?marker: untyped, ?scatter_style: untyped, ?radar_style: untyped, ?bar_shape: untyped, ?bubble_3d: untyped, ?bubble_scale: untyped, ?show_neg_bubbles: untyped, ?size_represents: untyped, ?wireframe: untyped, ?grouping: untyped, ?bar_dir: untyped, ?vary_colors: untyped, ?style: untyped, ?rounded_corners: untyped, ?view_3d: untyped, ?cat_axis_pos: untyped, ?val_axis_pos: untyped, ?name: untyped, ?description: untyped, ?frame_title: untyped, ?frame_hidden: untyped, ?frame_macro: untyped, ?frame_no_grp: untyped, ?from_col: untyped, ?from_row: untyped, ?to_col: untyped, ?to_row: untyped, ?from_col_off: untyped, ?from_row_off: untyped, ?to_col_off: untyped, ?to_row_off: untyped, ?edit_as: untyped, ?published: untyped, ?locks_with_sheet: untyped, ?prints_with_sheet: untyped, ?plot_vis_only: untyped, ?disp_blanks_as: untyped, ?show_d_lbls_over_max: untyped, ?data_table: untyped, ?plot_area_fill: untyped, ?plot_area_no_fill: untyped, ?plot_area_line_color: untyped, ?plot_area_line_width: untyped, ?plot_area_line_dash: untyped, ?plot_area_layout: untyped, ?floor: untyped, ?side_wall: untyped, ?back_wall: untyped, ?drop_lines: untyped, ?hi_low_lines: untyped, ?ser_lines: untyped, ?up_down_bars: untyped, ?band_fmts: untyped, ?of_pie_type: untyped, ?split_type: untyped, ?split_pos: untyped, ?cust_split: untyped, ?second_pie_size: untyped, ?cat_axis_label_rotation: untyped, ?val_axis_label_rotation: untyped, ?cat_axis_font: untyped, ?val_axis_font: untyped, ?cat_axis_line_color: untyped, ?cat_axis_line_width: untyped, ?cat_axis_line_dash: untyped, ?val_axis_line_color: untyped, ?val_axis_line_width: untyped, ?val_axis_line_dash: untyped, ?cat_axis_fill: untyped, ?cat_axis_no_fill: untyped, ?val_axis_fill: untyped, ?val_axis_no_fill: untyped, ?cat_axis_type: untyped, ?cat_axis_base_time_unit: untyped, ?cat_axis_major_time_unit: untyped, ?cat_axis_minor_time_unit: untyped, ?cat_axis_major_unit: untyped, ?cat_axis_minor_unit: untyped, ?chart_fill: untyped, ?chart_no_fill: untyped, ?chart_line_color: untyped, ?chart_line_width: untyped, ?chart_line_dash: untyped, ?protection: untyped, ?print_settings: untyped, ?chart_font: untyped, ?secondary_value_axis: untyped, ?secondary_axis: untyped, ?category_axis: untyped, ?value_axis: untyped, ?sheet: untyped, **untyped extra_options) -> untyped
576
590
 
577
591
  # Returns chart definitions for the first (or given) sheet.
578
592
  # : (?sheet: untyped?) -> untyped
@@ -597,6 +611,26 @@ module Xlsxrb
597
611
  # : (?sheet: untyped?) -> untyped
598
612
  def comments: (?sheet: untyped) -> untyped
599
613
 
614
+ # Adds a threaded comment to a cell in the given sheet.
615
+ # : (String | Integer cell_address, String text, ?author: untyped, ?timestamp: untyped, ?id: String?, ?parent_id: String?, ?done: bool?, ?user_id: String?, ?provider_id: String?, ?sheet: untyped?) -> Hash[Symbol, untyped]
616
+ def add_threaded_comment: (untyped cell_address, untyped text, ?author: untyped, ?timestamp: untyped, ?id: untyped, ?parent_id: untyped, ?done: untyped, ?user_id: untyped, ?provider_id: untyped, ?sheet: untyped) -> untyped
617
+
618
+ alias threaded_comment add_threaded_comment
619
+
620
+ # Returns threaded comments for the first (or given) sheet.
621
+ # : (?sheet: untyped?) -> Array[Hash[Symbol, untyped]]
622
+ def threaded_comments: (?sheet: untyped) -> untyped
623
+
624
+ # Registers a person in the workbook person list.
625
+ # : (String name, ?id: String?, ?user_id: String?, ?provider_id: String?) -> Hash[Symbol, untyped]
626
+ def add_person: (untyped name, ?id: untyped, ?user_id: untyped, ?provider_id: untyped) -> untyped
627
+
628
+ # Returns the workbook person list.
629
+ # : () -> Array[Hash[Symbol, untyped]]
630
+ def persons: () -> untyped
631
+
632
+ alias person_list persons
633
+
600
634
  # Adds a pivot table to the given sheet.
601
635
  # source_ref: data source range (e.g. "Sheet1!A1:C4").
602
636
  # row_fields: array of 0-based field indices for row axis.
@@ -681,8 +715,8 @@ module Xlsxrb
681
715
  # : (untyped sheet_hyperlinks, ?untyped sheet_tables, ?::Integer table_start_index) -> untyped
682
716
  def generate_worksheet_rels: (untyped sheet_hyperlinks, ?untyped sheet_tables, ?untyped table_start_index) -> untyped
683
717
 
684
- # : (untyped sheet_name, untyped sheet_tables, untyped table_start_index, untyped drawing_idx, untyped comment_idx, untyped pivot_start, untyped pivot_count) -> untyped
685
- def build_sheet_rels_parts_v2: (untyped sheet_name, untyped sheet_tables, untyped table_start_index, untyped drawing_idx, untyped comment_idx, untyped pivot_start, untyped pivot_count) -> untyped
718
+ # : (untyped sheet_name, untyped sheet_tables, untyped table_start_index, untyped drawing_idx, untyped comment_idx, untyped pivot_start, untyped pivot_count, ?untyped? threaded_comment_idx) -> untyped
719
+ def build_sheet_rels_parts_v2: (untyped sheet_name, untyped sheet_tables, untyped table_start_index, untyped drawing_idx, untyped comment_idx, untyped pivot_start, untyped pivot_count, ?untyped threaded_comment_idx) -> untyped
686
720
 
687
721
  # : (untyped rels_data) -> untyped
688
722
  def generate_generic_rels: (untyped rels_data) -> untyped
@@ -5,9 +5,15 @@ module Xlsxrb
5
5
  # Writes ZIP archives using only stdlib (zlib).
6
6
  # Supports streaming: entries are written sequentially, central directory at close.
7
7
  class ZipWriter
8
- def self.open: (untyped target) ?{ (?) -> untyped } -> untyped
8
+ def self.open: (untyped target, ?compression_level: untyped) ?{ (?) -> untyped } -> untyped
9
9
 
10
- def initialize: (untyped io) -> untyped
10
+ # @return [Integer] Deflate compression level (0..9).
11
+ attr_reader compression_level: untyped
12
+
13
+ # @param io [IO, StringIO] Destination IO stream.
14
+ # @param compression_level [Integer, nil] ZIP deflate compression level (0..9, or Zlib::DEFAULT_COMPRESSION).
15
+ # : (untyped io, ?compression_level: Integer | nil) -> void
16
+ def initialize: (untyped io, ?compression_level: Integer | nil) -> void
11
17
 
12
18
  # Add a file entry with string content.
13
19
  def add_entry: (untyped path, untyped content) -> untyped
@@ -287,6 +287,29 @@ module Xlsxrb
287
287
  # : () -> Hash[String, Hash[Symbol, untyped]]
288
288
  def comments_by_ref: () -> Hash[String, Hash[Symbol, untyped]]
289
289
 
290
+ # Returns threaded comments configured for this worksheet as an Array of comment hashes.
291
+ #
292
+ # @return [Array<Hash[Symbol, untyped]>]
293
+ # @api public
294
+ # : () -> Array[Hash[Symbol, untyped]]
295
+ def threaded_comments: () -> Array[Hash[Symbol, untyped]]
296
+
297
+ # Returns threaded comments for a specific cell reference, or empty array.
298
+ #
299
+ # @param ref_or_row [String, Symbol, Integer] Cell reference (e.g. "A1") or 0-based row index.
300
+ # @param col [Integer, nil] Optional 0-based column index.
301
+ # @return [Array<Hash[Symbol, untyped]>]
302
+ # @api public
303
+ # : (String | Symbol | Integer ref_or_row, ?Integer? col) -> Array[Hash[Symbol, untyped]]
304
+ def threaded_comment: (String | Symbol | Integer ref_or_row, ?Integer? col) -> Array[Hash[Symbol, untyped]]
305
+
306
+ # Returns threaded comments indexed by cell reference.
307
+ #
308
+ # @return [Hash<String, Array<Hash[Symbol, untyped]>>]
309
+ # @api public
310
+ # : () -> Hash[String, Array[Hash[Symbol, untyped]]]
311
+ def threaded_comments_by_ref: () -> Hash[String, Array[Hash[Symbol, untyped]]]
312
+
290
313
  # Returns all embedded images in this worksheet.
291
314
  #
292
315
  # @return [Array<Elements::Image>]
@@ -404,13 +427,63 @@ module Xlsxrb
404
427
  # : () -> Hash[Symbol, untyped]?
405
428
  def sheet_protection: () -> Hash[Symbol, untyped]?
406
429
 
407
- # Returns sheet-level properties (tabColor, outlinePr) for this worksheet.
430
+ # Returns sheet-level properties (tabColor, outlinePr, sheetPr) for this worksheet.
408
431
  #
409
432
  # @return [Hash[Symbol, untyped]]
410
433
  # @api public
411
434
  # : () -> Hash[Symbol, untyped]
412
435
  def sheet_properties: () -> Hash[Symbol, untyped]
413
436
 
437
+ # Returns the internal VBA or application code name of the worksheet, or nil if not specified.
438
+ #
439
+ # @return [String, nil]
440
+ # @api public
441
+ # : () -> String?
442
+ def code_name: () -> String?
443
+
444
+ # Returns whether fit-to-page is enabled for page setup on this worksheet.
445
+ #
446
+ # @return [Boolean]
447
+ # @api public
448
+ # : () -> bool
449
+ def fit_to_page?: () -> bool
450
+
451
+ alias fit_to_page fit_to_page?
452
+
453
+ # Returns whether full calculation on load is enabled on this worksheet.
454
+ #
455
+ # @return [Boolean]
456
+ # @api public
457
+ # : () -> bool
458
+ def full_calc_on_load?: () -> bool
459
+
460
+ alias full_calc_on_load full_calc_on_load?
461
+
462
+ # Returns sheet calculation properties (<sheetCalcPr>), or nil if not present.
463
+ #
464
+ # @return [Hash, nil]
465
+ # @api public
466
+ # : () -> Hash[Symbol, untyped]?
467
+ def sheet_calc_pr: () -> Hash[Symbol, untyped]?
468
+
469
+ alias calc_pr sheet_calc_pr
470
+
471
+ # Returns the worksheet tab color specification, or nil if not set.
472
+ #
473
+ # @return [String, Hash, nil] RGB hex string (e.g. "FFFF0000") or color hash (e.g. { theme: 3, tint: -0.5 }).
474
+ # @api public
475
+ # : () -> (String | Hash[Symbol, untyped])?
476
+ def tab_color: () -> (String | Hash[Symbol, untyped])?
477
+
478
+ # Returns the outline and grouping properties of the worksheet, or an empty hash if none configured.
479
+ #
480
+ # @return [Hash]
481
+ # @api public
482
+ # : () -> Hash[Symbol, untyped]
483
+ def outline_properties: () -> Hash[Symbol, untyped]
484
+
485
+ alias outline_pr outline_properties
486
+
414
487
  # Returns sheet format properties (defaultRowHeight, defaultColWidth, baseColWidth) for this worksheet.
415
488
  #
416
489
  # @return [Hash[Symbol, untyped]]
@@ -474,6 +547,33 @@ module Xlsxrb
474
547
  # : () -> Array[String]
475
548
  def cell_watches: () -> Array[String]
476
549
 
550
+ # Returns ignored error rules defined for this worksheet.
551
+ #
552
+ # @return [Array<Hash[Symbol, untyped]>]
553
+ # @api public
554
+ # : () -> Array[Hash[Symbol, untyped]]
555
+ def ignored_errors: () -> Array[Hash[Symbol, untyped]]
556
+
557
+ # Returns phonetic properties defined for this worksheet, or nil.
558
+ #
559
+ # @return [Hash[Symbol, untyped], nil]
560
+ # @api public
561
+ # : () -> Hash[Symbol, untyped]?
562
+ def phonetic_properties: () -> Hash[Symbol, untyped]?
563
+
564
+ alias phonetic_pr phonetic_properties
565
+
566
+ # Returns the background image configured for this worksheet, or nil.
567
+ #
568
+ # @return [Hash[Symbol, untyped], nil]
569
+ # @api public
570
+ # : () -> Hash[Symbol, untyped]?
571
+ def background_image: () -> Hash[Symbol, untyped]?
572
+
573
+ alias background_picture background_image
574
+
575
+ alias picture background_image
576
+
477
577
  # Closes any underlying reader resources.
478
578
  # : () -> void
479
579
  def close: () -> void