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
data/sig/generated/xlsxrb.rbs
CHANGED
|
@@ -29,6 +29,8 @@ module Xlsxrb
|
|
|
29
29
|
class ParseError < Error
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
OMITTED_TARGET: untyped
|
|
33
|
+
|
|
32
34
|
# Raised when cell, row, or workbook parameters fail specification validation.
|
|
33
35
|
class ValidationError < Error
|
|
34
36
|
end
|
|
@@ -51,19 +53,25 @@ module Xlsxrb
|
|
|
51
53
|
|
|
52
54
|
# Helper to construct {Elements::RichText} objects with formatted text runs.
|
|
53
55
|
#
|
|
54
|
-
# @example Create multi-run rich text
|
|
56
|
+
# @example Create multi-run rich text with hashes
|
|
55
57
|
# rt = Xlsxrb.rich_text({ text: "Total: ", font: { bold: true } }, { text: "$100" })
|
|
56
58
|
#
|
|
59
|
+
# @example Create rich text with text/font pairs
|
|
60
|
+
# rt = Xlsxrb.rich_text("Normal text, ", ["bold text, ", { bold: true }], ["red text", { color: "FF0000" }])
|
|
61
|
+
#
|
|
62
|
+
# @example Create rich text with format objects implementing to_font_hash
|
|
63
|
+
# rt = Xlsxrb.rich_text("Normal text, ", bold_format, "bold text")
|
|
64
|
+
#
|
|
57
65
|
# @example Create simple styled text
|
|
58
66
|
# rt = Xlsxrb.rich_text(text: "Important Notice", bold: true, color: "FF0000")
|
|
59
67
|
#
|
|
60
|
-
# @param runs [Array<Hash, String>] Optional array of rich text run
|
|
68
|
+
# @param runs [Array<Hash, String, Array, Elements::RichTextRun, Object>] Optional array of rich text run items.
|
|
61
69
|
# @param text [String, nil] Plain text string (convenience parameter).
|
|
62
70
|
# @param font_props [Hash] Inline font styling options (e.g. bold: true, color: "FF0000").
|
|
63
71
|
# @return [Elements::RichText] The compiled rich text element.
|
|
64
72
|
# @api public
|
|
65
|
-
# : (*(Hash[Symbol, untyped] | String) runs, ?text: String?, **untyped font_props) -> Elements::RichText
|
|
66
|
-
def self.rich_text: (*Hash[Symbol, untyped] | String runs, ?text: String?, **untyped font_props) -> Elements::RichText
|
|
73
|
+
# : (*(Hash[Symbol, untyped] | Elements::RichTextRun | String | Array[untyped] | untyped) runs, ?text: String?, **untyped font_props) -> Elements::RichText
|
|
74
|
+
def self.rich_text: (*Hash[Symbol, untyped] | Elements::RichTextRun | String | Array[untyped] | untyped runs, ?text: String?, **untyped font_props) -> Elements::RichText
|
|
67
75
|
|
|
68
76
|
# Creates an {Elements::Formula} object for use in cell values.
|
|
69
77
|
#
|
|
@@ -75,10 +83,135 @@ module Xlsxrb
|
|
|
75
83
|
#
|
|
76
84
|
# @param expression [String] The formula expression without leading '=' (e.g. "SUM(A1:A10)").
|
|
77
85
|
# @param cached_value [Object, nil] Optional precomputed value for readers that do not evaluate formulas.
|
|
86
|
+
# @param type [Symbol, String, nil] Formula type (:shared, :array, etc.).
|
|
87
|
+
# @param ref [String, nil] Target cell or range reference (e.g. "A1:C1").
|
|
88
|
+
# @return [Elements::Formula]
|
|
89
|
+
# @api public
|
|
90
|
+
# : (String expression, ?cached_value: (String | Numeric | bool | nil), ?type: (Symbol | String)?, ?ref: String?) -> Elements::Formula
|
|
91
|
+
def self.formula: (String expression, ?cached_value: String | Numeric | bool | nil, ?type: (Symbol | String)?, ?ref: String?) -> Elements::Formula
|
|
92
|
+
|
|
93
|
+
# Creates an array or dynamic array {Elements::Formula} object.
|
|
94
|
+
#
|
|
95
|
+
# @example Create a multi-cell array formula
|
|
96
|
+
# formula = Xlsxrb.array_formula("SUM(B1:B10*C1:C10)", "A1:C1", cached_value: 0)
|
|
97
|
+
#
|
|
98
|
+
# @example Create a dynamic array formula
|
|
99
|
+
# formula = Xlsxrb.array_formula("SORT(UNIQUE(A1:A10))", "D1")
|
|
100
|
+
#
|
|
101
|
+
# @param expression [String] The formula expression without leading '='.
|
|
102
|
+
# @param ref [String, nil] Target cell or range reference (e.g. "A1:C1" or "D1").
|
|
103
|
+
# @param cached_value [Object, nil] Optional precomputed value.
|
|
78
104
|
# @return [Elements::Formula]
|
|
79
105
|
# @api public
|
|
80
|
-
# : (String expression, ?cached_value: (String | Numeric | bool | nil)) -> Elements::Formula
|
|
81
|
-
def self.
|
|
106
|
+
# : (String expression, ?String? ref, ?cached_value: (String | Numeric | bool | nil)) -> Elements::Formula
|
|
107
|
+
def self.array_formula: (String expression, ?String? ref, ?cached_value: String | Numeric | bool | nil) -> Elements::Formula
|
|
108
|
+
|
|
109
|
+
# Creates an {Elements::Hyperlink} object for use in cell hyperlinks.
|
|
110
|
+
#
|
|
111
|
+
# @example Create an external hyperlink with a ScreenTip tooltip
|
|
112
|
+
# link = Xlsxrb.hyperlink("https://example.com", tooltip: "Visit Example")
|
|
113
|
+
#
|
|
114
|
+
# @example Create an internal worksheet link
|
|
115
|
+
# link = Xlsxrb.hyperlink(location: "Sheet2!A1", tooltip: "Go to Sheet 2")
|
|
116
|
+
#
|
|
117
|
+
# @param url [String, nil] External hyperlink URL.
|
|
118
|
+
# @param display [String, nil] Optional display label.
|
|
119
|
+
# @param tooltip [String, nil] Optional hover ScreenTip text.
|
|
120
|
+
# @param location [String, nil] Optional internal sheet coordinate.
|
|
121
|
+
# @return [Elements::Hyperlink]
|
|
122
|
+
# @api public
|
|
123
|
+
# : (?String? url, ?display: String?, ?tooltip: String?, ?location: String?) -> Elements::Hyperlink
|
|
124
|
+
def self.hyperlink: (?String? url, ?display: String?, ?tooltip: String?, ?location: String?) -> Elements::Hyperlink
|
|
125
|
+
|
|
126
|
+
# Formats a cell value according to an Excel format code string.
|
|
127
|
+
#
|
|
128
|
+
# @param value [Object, nil] Value to format.
|
|
129
|
+
# @param format_code [String, nil] Excel format code string.
|
|
130
|
+
# @param date1904 [Boolean] Whether the 1904 date system is active.
|
|
131
|
+
# @return [String] Formatted string representation.
|
|
132
|
+
# @api public
|
|
133
|
+
# : (untyped value, ?String? format_code, ?date1904: bool) -> String
|
|
134
|
+
def self.format: (untyped value, ?String? format_code, ?date1904: bool) -> String
|
|
135
|
+
|
|
136
|
+
# Converts a Date or Time to an Excel numeric serial number (1900 or 1904 system).
|
|
137
|
+
#
|
|
138
|
+
# @example
|
|
139
|
+
# Xlsxrb.date_to_serial(Date.new(2026, 1, 1)) #=> 46023
|
|
140
|
+
#
|
|
141
|
+
# @param date_or_time [Date, Time] Date or Time instance.
|
|
142
|
+
# @param date1904 [Boolean] Whether to use the 1904 date system.
|
|
143
|
+
# @return [Integer, Float] Serial number.
|
|
144
|
+
# @api public
|
|
145
|
+
# : (Date | Time date_or_time, ?date1904: bool) -> (Integer | Float)
|
|
146
|
+
def self.date_to_serial: (Date | Time date_or_time, ?date1904: bool) -> (Integer | Float)
|
|
147
|
+
|
|
148
|
+
# Converts an Excel serial number to a Date.
|
|
149
|
+
#
|
|
150
|
+
# @example
|
|
151
|
+
# Xlsxrb.serial_to_date(46023) #=> #<Date: 2026-01-01>
|
|
152
|
+
#
|
|
153
|
+
# @param serial [Numeric] Excel serial number.
|
|
154
|
+
# @param date1904 [Boolean] Whether to use the 1904 date system.
|
|
155
|
+
# @return [Date]
|
|
156
|
+
# @api public
|
|
157
|
+
# : (Numeric serial, ?date1904: bool) -> Date
|
|
158
|
+
def self.serial_to_date: (Numeric serial, ?date1904: bool) -> Date
|
|
159
|
+
|
|
160
|
+
# Converts a Time or Date to a fractional Excel serial number.
|
|
161
|
+
#
|
|
162
|
+
# @example
|
|
163
|
+
# Xlsxrb.datetime_to_serial(Time.utc(2026, 1, 1, 12, 0, 0)) #=> 46023.5
|
|
164
|
+
#
|
|
165
|
+
# @param time [Time, Date] Time or Date instance.
|
|
166
|
+
# @param date1904 [Boolean] Whether to use the 1904 date system.
|
|
167
|
+
# @return [Float] Fractional serial number.
|
|
168
|
+
# @api public
|
|
169
|
+
# : (Time | Date time, ?date1904: bool) -> Float
|
|
170
|
+
def self.datetime_to_serial: (Time | Date time, ?date1904: bool) -> Float
|
|
171
|
+
|
|
172
|
+
# Converts an Excel serial number to a Time (UTC).
|
|
173
|
+
#
|
|
174
|
+
# @example
|
|
175
|
+
# Xlsxrb.serial_to_time(46023.5) #=> 2026-01-01 12:00:00 UTC
|
|
176
|
+
#
|
|
177
|
+
# @param serial [Numeric] Excel serial number.
|
|
178
|
+
# @param date1904 [Boolean] Whether to use the 1904 date system.
|
|
179
|
+
# @return [Time]
|
|
180
|
+
# @api public
|
|
181
|
+
# : (Numeric serial, ?date1904: bool) -> Time
|
|
182
|
+
def self.serial_to_time: (Numeric serial, ?date1904: bool) -> Time
|
|
183
|
+
|
|
184
|
+
alias self.serial_to_datetime self.serial_to_time
|
|
185
|
+
|
|
186
|
+
# Resolves an ECMA-376 indexed color palette index (0..63) to an RRGGBB hex string (or AARRGGBB if alpha: true).
|
|
187
|
+
#
|
|
188
|
+
# @example
|
|
189
|
+
# Xlsxrb.palette_color(12) #=> "0000FF"
|
|
190
|
+
# Xlsxrb.palette_color(12, alpha: true) #=> "FF0000FF"
|
|
191
|
+
#
|
|
192
|
+
# @param index [Object, nil] Palette index (0..63).
|
|
193
|
+
# @param alpha [Boolean] Whether to prefix "FF" alpha channel.
|
|
194
|
+
# @return [String, nil]
|
|
195
|
+
# @api public
|
|
196
|
+
# : (untyped index, ?alpha: bool) -> String?
|
|
197
|
+
def self.palette_color: (untyped index, ?alpha: bool) -> String?
|
|
198
|
+
|
|
199
|
+
# Converts any supported color representation (palette index 0..63, CSS name, #RGB, #RRGGBB, #AARRGGBB, integer RGB)
|
|
200
|
+
# to a normalized hex string.
|
|
201
|
+
#
|
|
202
|
+
# @example
|
|
203
|
+
# Xlsxrb.to_hex_color(12) #=> "0000FF"
|
|
204
|
+
# Xlsxrb.to_hex_color(:navy) #=> "000080"
|
|
205
|
+
# Xlsxrb.to_hex_color("#FF0000") #=> "FF0000"
|
|
206
|
+
#
|
|
207
|
+
# @param color [Integer, String, Symbol, nil]
|
|
208
|
+
# @param alpha [Boolean] Whether to include the alpha channel (default false -> "RRGGBB").
|
|
209
|
+
# @return [String, nil]
|
|
210
|
+
# @api public
|
|
211
|
+
# : (Integer | String | Symbol | nil color, ?alpha: bool) -> String?
|
|
212
|
+
def self.to_hex_color: (Integer | String | Symbol | nil color, ?alpha: bool) -> String?
|
|
213
|
+
|
|
214
|
+
alias self.color_to_hex self.to_hex_color
|
|
82
215
|
|
|
83
216
|
# Reads an XLSX file (streaming and lazy-loaded by default) from a file path, IO stream, or binary String.
|
|
84
217
|
#
|
|
@@ -86,18 +219,24 @@ module Xlsxrb
|
|
|
86
219
|
# yields each {StreamSheet} sequentially. Call {#load} on the returned Workbook or Sheet
|
|
87
220
|
# to convert to an in-memory representation for coordinate random access (`sheet["A1"]`).
|
|
88
221
|
#
|
|
89
|
-
# @overload read(source, password: nil, &block)
|
|
222
|
+
# @overload read(source, password: nil, trim_empty_rows: false, pad_empty_rows: false, pad_empty_cells: false, &block)
|
|
90
223
|
# Yields each {StreamSheet} sequentially in streaming mode.
|
|
91
224
|
# @param source [String, IO, StringIO] File path, binary content string, or readable IO stream.
|
|
92
225
|
# @param password [String, nil] Optional password to decrypt password-protected XLSX files.
|
|
226
|
+
# @param trim_empty_rows [Boolean] Whether to omit trailing empty rows during sheet iteration.
|
|
227
|
+
# @param pad_empty_rows [Boolean] Whether to yield empty rows for skipped row numbers.
|
|
228
|
+
# @param pad_empty_cells [Boolean] Whether to pad missing cells within rows.
|
|
93
229
|
# @yield [sheet]
|
|
94
230
|
# @yieldparam sheet [StreamSheet] The streaming worksheet object.
|
|
95
231
|
# @return [void]
|
|
96
232
|
#
|
|
97
|
-
# @overload read(source, password: nil)
|
|
233
|
+
# @overload read(source, password: nil, trim_empty_rows: false, pad_empty_rows: false, pad_empty_cells: false)
|
|
98
234
|
# Returns a lazy {Elements::Workbook} object.
|
|
99
235
|
# @param source [String, IO, StringIO] File path, binary content string, or readable IO stream.
|
|
100
236
|
# @param password [String, nil] Optional password to decrypt password-protected XLSX files.
|
|
237
|
+
# @param trim_empty_rows [Boolean] Whether to omit trailing empty rows during sheet iteration.
|
|
238
|
+
# @param pad_empty_rows [Boolean] Whether to yield empty rows for skipped row numbers.
|
|
239
|
+
# @param pad_empty_cells [Boolean] Whether to pad missing cells within rows.
|
|
101
240
|
# @return [Elements::Workbook]
|
|
102
241
|
#
|
|
103
242
|
# @example Streaming read across sheets and rows (O(1) constant memory)
|
|
@@ -118,22 +257,25 @@ module Xlsxrb
|
|
|
118
257
|
# @raise [InvalidPasswordError] If the supplied password is incorrect.
|
|
119
258
|
# @raise [ParseError] If the spreadsheet XML structure is invalid.
|
|
120
259
|
# @api public
|
|
121
|
-
# : (untyped source, ?password: String?) { (StreamSheet) -> void } -> void
|
|
122
|
-
# : (untyped source, ?password: String?) -> Elements::Workbook
|
|
123
|
-
def self.read: (untyped source, ?password: String?) { (StreamSheet) -> void } -> void
|
|
124
|
-
| (untyped source, ?password: String?) -> Elements::Workbook
|
|
260
|
+
# : (untyped source, ?password: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) { (StreamSheet) -> void } -> void
|
|
261
|
+
# : (untyped source, ?password: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) -> Elements::Workbook
|
|
262
|
+
def self.read: (untyped source, ?password: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) { (StreamSheet) -> void } -> void
|
|
263
|
+
| (untyped source, ?password: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) -> Elements::Workbook
|
|
264
|
+
|
|
265
|
+
alias self.stream self.read
|
|
125
266
|
|
|
126
267
|
# Writes an XLSX file or IO stream (streaming or in-memory), or returns a binary string.
|
|
127
268
|
#
|
|
128
|
-
# @overload write(target, password: nil, encryption_mode: :standard, strict_excel_mode: true, &block)
|
|
269
|
+
# @overload write(?target, password: nil, encryption_mode: :standard, strict_excel_mode: true, &block)
|
|
129
270
|
# Streaming write: yields a {StreamWriter} context for high-speed, zero-allocation XLSX generation.
|
|
130
|
-
#
|
|
271
|
+
# If target is omitted, returns the generated XLSX as an in-memory binary String.
|
|
272
|
+
# @param target [String, IO, StringIO, nil] Optional destination file path or writable IO object.
|
|
131
273
|
# @param password [String, nil] Optional password to encrypt the generated XLSX file.
|
|
132
274
|
# @param encryption_mode [Symbol] Encryption algorithm (:standard or :agile).
|
|
133
275
|
# @param strict_excel_mode [Boolean] Whether to enforce Microsoft Excel specification limits.
|
|
134
276
|
# @yield [stream_writer]
|
|
135
277
|
# @yieldparam stream_writer [Xlsxrb::StreamWriter]
|
|
136
|
-
# @return [void]
|
|
278
|
+
# @return [String, void] Binary data if target is omitted, or void if written to target.
|
|
137
279
|
#
|
|
138
280
|
# @overload write(workbook, password: nil, encryption_mode: :standard)
|
|
139
281
|
# In-memory write: exports the workbook to an in-memory binary String.
|
|
@@ -155,6 +297,11 @@ module Xlsxrb
|
|
|
155
297
|
# writer.sheet("Sheet1") { |s| s.row(["Hello", "World"]) }
|
|
156
298
|
# end
|
|
157
299
|
#
|
|
300
|
+
# @example Streaming write to in-memory binary string (target omitted)
|
|
301
|
+
# binary_data = Xlsxrb.write do |writer|
|
|
302
|
+
# writer.sheet("Sheet1") { |s| s.row(["Hello", "World"]) }
|
|
303
|
+
# end
|
|
304
|
+
#
|
|
158
305
|
# @example Password-protected streaming write
|
|
159
306
|
# Xlsxrb.write("protected.xlsx", password: "SecretPassword123") do |writer|
|
|
160
307
|
# writer.sheet("Confidential") { |s| s.row(["Private Data", 100]) }
|
|
@@ -166,10 +313,10 @@ module Xlsxrb
|
|
|
166
313
|
# @api public
|
|
167
314
|
# : (Elements::Workbook workbook, ?password: String?, ?encryption_mode: Symbol) -> String
|
|
168
315
|
# : (untyped target, Elements::Workbook | untyped workbook, ?password: String?, ?encryption_mode: Symbol) -> void
|
|
169
|
-
# : (untyped target_or_workbook, ?Elements::Workbook | untyped workbook_or_nil, ?password: String?, ?encryption_mode: Symbol, ?strict_excel_mode: bool) ?{ (StreamWriter) -> void } -> untyped
|
|
316
|
+
# : (?untyped target_or_workbook, ?Elements::Workbook | untyped workbook_or_nil, ?password: String?, ?encryption_mode: Symbol, ?strict_excel_mode: bool) ?{ (StreamWriter) -> void } -> untyped
|
|
170
317
|
def self.write: (Elements::Workbook workbook, ?password: String?, ?encryption_mode: Symbol) -> String
|
|
171
318
|
| (untyped target, Elements::Workbook | untyped workbook, ?password: String?, ?encryption_mode: Symbol) -> void
|
|
172
|
-
| (untyped target_or_workbook, ?Elements::Workbook | untyped workbook_or_nil, ?password: String?, ?encryption_mode: Symbol, ?strict_excel_mode: bool) ?{ (StreamWriter) -> void } -> untyped
|
|
319
|
+
| (?untyped target_or_workbook, ?Elements::Workbook | untyped workbook_or_nil, ?password: String?, ?encryption_mode: Symbol, ?strict_excel_mode: bool) ?{ (StreamWriter) -> void } -> untyped
|
|
173
320
|
|
|
174
321
|
# Modifies an existing XLSX file in-memory using an immutable transformation block.
|
|
175
322
|
#
|
|
@@ -213,14 +360,26 @@ module Xlsxrb
|
|
|
213
360
|
# : (?strict_excel_mode: bool) ?{ (WorkbookBuilder) -> void } -> Elements::Workbook
|
|
214
361
|
def self.build: (?strict_excel_mode: bool) ?{ (WorkbookBuilder) -> void } -> Elements::Workbook
|
|
215
362
|
|
|
216
|
-
# : (String name, String? sheet_xml, Array[String] shared_strings, untyped
|
|
217
|
-
private def self.build_worksheet: (String name, String? sheet_xml, Array[String] shared_strings, untyped
|
|
363
|
+
# : (String name, String? sheet_xml, Array[String] shared_strings, untyped styles, ?state: Symbol, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?hyperlinks: Hash[String, Hash[Symbol, untyped]]?, ?comments: Array[Hash[Symbol, untyped]]?, ?images: Array[Elements::Image]?, ?date1904: bool, ?dimension: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) -> Elements::Worksheet
|
|
364
|
+
private def self.build_worksheet: (String name, String? sheet_xml, Array[String] shared_strings, untyped styles, ?state: Symbol, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?hyperlinks: Hash[String, Hash[Symbol, untyped]]?, ?comments: Array[Hash[Symbol, untyped]]?, ?images: Array[Elements::Image]?, ?date1904: bool, ?dimension: String?, ?trim_empty_rows: bool, ?pad_empty_rows: bool, ?pad_empty_cells: bool) -> Elements::Worksheet
|
|
365
|
+
|
|
366
|
+
# : (String? sheet_xml, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?rels_xml: String?) -> Hash[String, Hash[Symbol, untyped]]
|
|
367
|
+
private def self.resolve_hyperlinks: (String? sheet_xml, ?zip_reader: Ooxml::ZipReader?, ?entry_name: String?, ?rels_xml: String?) -> Hash[String, Hash[Symbol, untyped]]
|
|
368
|
+
|
|
369
|
+
# : (String base_dir, String target) -> String
|
|
370
|
+
private def self.resolve_relative_path: (String base_dir, String target) -> String
|
|
371
|
+
|
|
372
|
+
# : (?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> Array[Hash[Symbol, untyped]]
|
|
373
|
+
private def self.resolve_comments: (?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> Array[Hash[Symbol, untyped]]
|
|
374
|
+
|
|
375
|
+
# : (?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> Array[Elements::Image]
|
|
376
|
+
private def self.resolve_images: (?zip_reader: Ooxml::ZipReader?, ?entry_name: String?) -> Array[Elements::Image]
|
|
218
377
|
|
|
219
|
-
# : (untyped raw_row) -> (Elements::Row | untyped)
|
|
220
|
-
private def self.build_row_from_raw: (untyped raw_row) -> (Elements::Row | untyped)
|
|
378
|
+
# : (untyped raw_row, ?Hash[String, Hash[Symbol, untyped]] hyperlinks, ?(Array[Hash[Symbol, untyped]] | Hash[String, Hash[Symbol, untyped]]) comments, ?Hash[untyped, untyped]? styles, ?date1904: bool) -> (Elements::Row | untyped)
|
|
379
|
+
private def self.build_row_from_raw: (untyped raw_row, ?Hash[String, Hash[Symbol, untyped]] hyperlinks, ?Array[Hash[Symbol, untyped]] | Hash[String, Hash[Symbol, untyped]] comments, ?Hash[untyped, untyped]? styles, ?date1904: bool) -> (Elements::Row | untyped)
|
|
221
380
|
|
|
222
|
-
# : (Elements::Cell cell, Array[String] sst, Hash[String, Integer] sst_index) -> Hash[Symbol, untyped]
|
|
223
|
-
private def self.build_raw_cell: (Elements::Cell cell, Array[String] sst, Hash[String, Integer] sst_index) -> Hash[Symbol, untyped]
|
|
381
|
+
# : (Elements::Cell cell, Array[String] sst, Hash[String, Integer] sst_index, ?date1904: bool) -> Hash[Symbol, untyped]
|
|
382
|
+
private def self.build_raw_cell: (Elements::Cell cell, Array[String] sst, Hash[String, Integer] sst_index, ?date1904: bool) -> Hash[Symbol, untyped]
|
|
224
383
|
|
|
225
384
|
# : (Elements::Row row) -> Hash[Symbol, untyped]
|
|
226
385
|
private def self.build_row_attrs: (Elements::Row row) -> Hash[Symbol, untyped]
|
|
@@ -240,8 +399,8 @@ module Xlsxrb
|
|
|
240
399
|
# : (String sheet_xml, Array[Elements::Row] rows) -> String
|
|
241
400
|
private def self.update_dimension: (String sheet_xml, Array[Elements::Row] rows) -> String
|
|
242
401
|
|
|
243
|
-
# : (Array[Elements::Row] rows, Array[untyped] shared_strings, Hash[untyped, Integer] sst_index, ?use_sst: bool) -> String
|
|
244
|
-
private def self.serialize_sheet_data_xml: (Array[Elements::Row] rows, Array[untyped] shared_strings, Hash[untyped, Integer] sst_index, ?use_sst: bool) -> String
|
|
402
|
+
# : (Array[Elements::Row] rows, Array[untyped] shared_strings, Hash[untyped, Integer] sst_index, ?use_sst: bool, ?date1904: bool) -> String
|
|
403
|
+
private def self.serialize_sheet_data_xml: (Array[Elements::Row] rows, Array[untyped] shared_strings, Hash[untyped, Integer] sst_index, ?use_sst: bool, ?date1904: bool) -> String
|
|
245
404
|
|
|
246
405
|
# Builds a raw cell hash from a value for streaming writes.
|
|
247
406
|
#
|
|
@@ -252,6 +411,6 @@ module Xlsxrb
|
|
|
252
411
|
# @param sst_index [Hash{String => Integer}] Shared strings index mapping.
|
|
253
412
|
# @return [Hash{Symbol => Object}] Raw cell hash.
|
|
254
413
|
# @api public
|
|
255
|
-
# : (Integer row_index, Integer col_index, untyped value, Array[String] sst, Hash[String, Integer] sst_index) -> Hash[Symbol, untyped]
|
|
256
|
-
def self.build_raw_cell_from_value: (Integer row_index, Integer col_index, untyped value, Array[String] sst, Hash[String, Integer] sst_index) -> Hash[Symbol, untyped]
|
|
414
|
+
# : (Integer row_index, Integer col_index, untyped value, Array[String] sst, Hash[String, Integer] sst_index, ?date1904: bool) -> Hash[Symbol, untyped]
|
|
415
|
+
def self.build_raw_cell_from_value: (Integer row_index, Integer col_index, untyped value, Array[String] sst, Hash[String, Integer] sst_index, ?date1904: bool) -> Hash[Symbol, untyped]
|
|
257
416
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xlsxrb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- niku
|
|
@@ -53,15 +53,19 @@ files:
|
|
|
53
53
|
- lib/ruby_lsp/xlsxrb/completion_listener.rb
|
|
54
54
|
- lib/xlsxrb.rb
|
|
55
55
|
- lib/xlsxrb/chart_builder.rb
|
|
56
|
+
- lib/xlsxrb/colors.rb
|
|
56
57
|
- lib/xlsxrb/dsl_helpers.rb
|
|
57
58
|
- lib/xlsxrb/elements.rb
|
|
58
59
|
- lib/xlsxrb/elements/cell.rb
|
|
59
60
|
- lib/xlsxrb/elements/column.rb
|
|
60
61
|
- lib/xlsxrb/elements/coordinate_access.rb
|
|
62
|
+
- lib/xlsxrb/elements/image.rb
|
|
61
63
|
- lib/xlsxrb/elements/row.rb
|
|
64
|
+
- lib/xlsxrb/elements/styles.rb
|
|
62
65
|
- lib/xlsxrb/elements/types.rb
|
|
63
66
|
- lib/xlsxrb/elements/workbook.rb
|
|
64
67
|
- lib/xlsxrb/elements/worksheet.rb
|
|
68
|
+
- lib/xlsxrb/number_formatter.rb
|
|
65
69
|
- lib/xlsxrb/ooxml.rb
|
|
66
70
|
- lib/xlsxrb/ooxml/cfb.rb
|
|
67
71
|
- lib/xlsxrb/ooxml/crypto.rb
|
|
@@ -93,20 +97,25 @@ files:
|
|
|
93
97
|
- lib/xlsxrb/stream_sheet.rb
|
|
94
98
|
- lib/xlsxrb/stream_writer.rb
|
|
95
99
|
- lib/xlsxrb/style_builder.rb
|
|
100
|
+
- lib/xlsxrb/utils.rb
|
|
96
101
|
- lib/xlsxrb/version.rb
|
|
97
102
|
- lib/xlsxrb/workbook_builder.rb
|
|
98
103
|
- lib/xlsxrb/worksheet_builder.rb
|
|
99
104
|
- sig/generated/xlsxrb.rbs
|
|
100
105
|
- sig/generated/xlsxrb/chart_builder.rbs
|
|
106
|
+
- sig/generated/xlsxrb/colors.rbs
|
|
101
107
|
- sig/generated/xlsxrb/dsl_helpers.rbs
|
|
102
108
|
- sig/generated/xlsxrb/elements.rbs
|
|
103
109
|
- sig/generated/xlsxrb/elements/cell.rbs
|
|
104
110
|
- sig/generated/xlsxrb/elements/column.rbs
|
|
105
111
|
- sig/generated/xlsxrb/elements/coordinate_access.rbs
|
|
112
|
+
- sig/generated/xlsxrb/elements/image.rbs
|
|
106
113
|
- sig/generated/xlsxrb/elements/row.rbs
|
|
114
|
+
- sig/generated/xlsxrb/elements/styles.rbs
|
|
107
115
|
- sig/generated/xlsxrb/elements/types.rbs
|
|
108
116
|
- sig/generated/xlsxrb/elements/workbook.rbs
|
|
109
117
|
- sig/generated/xlsxrb/elements/worksheet.rbs
|
|
118
|
+
- sig/generated/xlsxrb/number_formatter.rbs
|
|
110
119
|
- sig/generated/xlsxrb/ooxml.rbs
|
|
111
120
|
- sig/generated/xlsxrb/ooxml/cfb.rbs
|
|
112
121
|
- sig/generated/xlsxrb/ooxml/crypto.rbs
|
|
@@ -138,6 +147,7 @@ files:
|
|
|
138
147
|
- sig/generated/xlsxrb/stream_sheet.rbs
|
|
139
148
|
- sig/generated/xlsxrb/stream_writer.rbs
|
|
140
149
|
- sig/generated/xlsxrb/style_builder.rbs
|
|
150
|
+
- sig/generated/xlsxrb/utils.rbs
|
|
141
151
|
- sig/generated/xlsxrb/version.rbs
|
|
142
152
|
- sig/generated/xlsxrb/workbook_builder.rbs
|
|
143
153
|
- sig/generated/xlsxrb/worksheet_builder.rbs
|