caxlsx 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +24 -5
- data/Rakefile +0 -1
- data/lib/axlsx/content_type/abstract_content_type.rb +2 -5
- data/lib/axlsx/content_type/content_type.rb +0 -4
- data/lib/axlsx/content_type/default.rb +1 -5
- data/lib/axlsx/content_type/override.rb +0 -4
- data/lib/axlsx/doc_props/app.rb +1 -6
- data/lib/axlsx/doc_props/core.rb +1 -6
- data/lib/axlsx/drawing/area_chart.rb +3 -6
- data/lib/axlsx/drawing/area_series.rb +1 -4
- data/lib/axlsx/drawing/ax_data_source.rb +1 -6
- data/lib/axlsx/drawing/axes.rb +5 -6
- data/lib/axlsx/drawing/axis.rb +7 -12
- data/lib/axlsx/drawing/bar_3D_chart.rb +7 -10
- data/lib/axlsx/drawing/bar_chart.rb +6 -9
- data/lib/axlsx/drawing/bar_series.rb +2 -8
- data/lib/axlsx/drawing/bubble_chart.rb +2 -5
- data/lib/axlsx/drawing/bubble_series.rb +3 -6
- data/lib/axlsx/drawing/cat_axis.rb +2 -7
- data/lib/axlsx/drawing/chart.rb +7 -12
- data/lib/axlsx/drawing/d_lbls.rb +23 -22
- data/lib/axlsx/drawing/drawing.rb +4 -8
- data/lib/axlsx/drawing/graphic_frame.rb +0 -3
- data/lib/axlsx/drawing/hyperlink.rb +4 -7
- data/lib/axlsx/drawing/line_3D_chart.rb +10 -14
- data/lib/axlsx/drawing/line_chart.rb +3 -6
- data/lib/axlsx/drawing/line_series.rb +1 -4
- data/lib/axlsx/drawing/marker.rb +5 -9
- data/lib/axlsx/drawing/num_data.rb +4 -9
- data/lib/axlsx/drawing/num_data_source.rb +3 -7
- data/lib/axlsx/drawing/num_val.rb +2 -5
- data/lib/axlsx/drawing/one_cell_anchor.rb +4 -6
- data/lib/axlsx/drawing/pic.rb +46 -13
- data/lib/axlsx/drawing/picture_locking.rb +3 -6
- data/lib/axlsx/drawing/pie_3D_chart.rb +2 -7
- data/lib/axlsx/drawing/pie_series.rb +1 -6
- data/lib/axlsx/drawing/scaling.rb +2 -5
- data/lib/axlsx/drawing/scatter_chart.rb +2 -5
- data/lib/axlsx/drawing/scatter_series.rb +2 -5
- data/lib/axlsx/drawing/ser_axis.rb +2 -6
- data/lib/axlsx/drawing/series.rb +3 -5
- data/lib/axlsx/drawing/series_title.rb +0 -2
- data/lib/axlsx/drawing/str_data.rb +3 -8
- data/lib/axlsx/drawing/str_val.rb +2 -5
- data/lib/axlsx/drawing/title.rb +12 -15
- data/lib/axlsx/drawing/two_cell_anchor.rb +5 -7
- data/lib/axlsx/drawing/val_axis.rb +1 -4
- data/lib/axlsx/drawing/view_3D.rb +24 -24
- data/lib/axlsx/drawing/vml_drawing.rb +2 -5
- data/lib/axlsx/drawing/vml_shape.rb +4 -7
- data/lib/axlsx/package.rb +35 -36
- data/lib/axlsx/rels/relationship.rb +21 -24
- data/lib/axlsx/rels/relationships.rb +3 -6
- data/lib/axlsx/stylesheet/border.rb +1 -4
- data/lib/axlsx/stylesheet/border_pr.rb +3 -5
- data/lib/axlsx/stylesheet/cell_alignment.rb +2 -10
- data/lib/axlsx/stylesheet/cell_protection.rb +1 -4
- data/lib/axlsx/stylesheet/cell_style.rb +3 -7
- data/lib/axlsx/stylesheet/color.rb +6 -5
- data/lib/axlsx/stylesheet/dxf.rb +2 -6
- data/lib/axlsx/stylesheet/fill.rb +0 -4
- data/lib/axlsx/stylesheet/font.rb +7 -6
- data/lib/axlsx/stylesheet/gradient_fill.rb +4 -6
- data/lib/axlsx/stylesheet/gradient_stop.rb +2 -3
- data/lib/axlsx/stylesheet/num_fmt.rb +1 -4
- data/lib/axlsx/stylesheet/pattern_fill.rb +3 -5
- data/lib/axlsx/stylesheet/styles.rb +53 -45
- data/lib/axlsx/stylesheet/table_style.rb +5 -8
- data/lib/axlsx/stylesheet/table_style_element.rb +1 -4
- data/lib/axlsx/stylesheet/table_styles.rb +3 -7
- data/lib/axlsx/stylesheet/xf.rb +3 -6
- data/lib/axlsx/util/accessors.rb +2 -4
- data/lib/axlsx/util/constants.rb +3 -5
- data/lib/axlsx/util/mime_type_utils.rb +13 -0
- data/lib/axlsx/util/options_parser.rb +1 -2
- data/lib/axlsx/util/serialized_attributes.rb +4 -5
- data/lib/axlsx/util/simple_typed_list.rb +18 -17
- data/lib/axlsx/util/storage.rb +32 -36
- data/lib/axlsx/util/validators.rb +7 -4
- data/lib/axlsx/util/zip_command.rb +0 -2
- data/lib/axlsx/version.rb +1 -2
- data/lib/axlsx/workbook/defined_name.rb +6 -5
- data/lib/axlsx/workbook/defined_names.rb +1 -2
- data/lib/axlsx/workbook/shared_strings_table.rb +3 -6
- data/lib/axlsx/workbook/workbook.rb +96 -91
- data/lib/axlsx/workbook/workbook_view.rb +5 -10
- data/lib/axlsx/workbook/workbook_views.rb +1 -3
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +9 -8
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +6 -6
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +13 -14
- data/lib/axlsx/workbook/worksheet/border_creator.rb +29 -26
- data/lib/axlsx/workbook/worksheet/break.rb +2 -5
- data/lib/axlsx/workbook/worksheet/cell.rb +46 -26
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +11 -11
- data/lib/axlsx/workbook/worksheet/cfvo.rb +2 -2
- data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -5
- data/lib/axlsx/workbook/worksheet/col.rb +4 -7
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +4 -5
- data/lib/axlsx/workbook/worksheet/color_scale.rb +10 -12
- data/lib/axlsx/workbook/worksheet/cols.rb +6 -6
- data/lib/axlsx/workbook/worksheet/comment.rb +4 -5
- data/lib/axlsx/workbook/worksheet/comments.rb +6 -10
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +4 -5
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +2 -6
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +2 -4
- data/lib/axlsx/workbook/worksheet/data_bar.rb +20 -22
- data/lib/axlsx/workbook/worksheet/data_validation.rb +4 -5
- data/lib/axlsx/workbook/worksheet/data_validations.rb +2 -5
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -3
- data/lib/axlsx/workbook/worksheet/dimension.rb +5 -4
- data/lib/axlsx/workbook/worksheet/header_footer.rb +0 -1
- data/lib/axlsx/workbook/worksheet/icon_set.rb +2 -3
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +8 -8
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +0 -1
- data/lib/axlsx/workbook/worksheet/page_margins.rb +2 -2
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +1 -3
- data/lib/axlsx/workbook/worksheet/page_setup.rb +117 -120
- data/lib/axlsx/workbook/worksheet/pane.rb +16 -17
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +8 -11
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +3 -4
- data/lib/axlsx/workbook/worksheet/print_options.rb +0 -1
- data/lib/axlsx/workbook/worksheet/protected_range.rb +4 -5
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +9 -9
- data/lib/axlsx/workbook/worksheet/rich_text.rb +4 -6
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +21 -5
- data/lib/axlsx/workbook/worksheet/row.rb +24 -15
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +3 -4
- data/lib/axlsx/workbook/worksheet/selection.rb +7 -9
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +5 -6
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +4 -6
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +4 -4
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +12 -13
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +35 -42
- data/lib/axlsx/workbook/worksheet/table.rb +7 -9
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +2 -3
- data/lib/axlsx/workbook/worksheet/tables.rb +4 -4
- data/lib/axlsx/workbook/worksheet/worksheet.rb +63 -35
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +6 -6
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +3 -2
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +5 -6
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +4 -4
- data/lib/axlsx.rb +23 -9
- data/lib/caxlsx.rb +0 -1
- metadata +3 -3
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module Axlsx
|
|
2
|
-
|
|
3
2
|
# A worksheet hyperlink object. Note that this is not the same as a drawing hyperlink object.
|
|
4
3
|
class WorksheetHyperlink
|
|
5
|
-
|
|
6
4
|
include Axlsx::OptionsParser
|
|
7
5
|
include Axlsx::Accessors
|
|
8
6
|
include Axlsx::SerializedAttributes
|
|
@@ -15,7 +13,7 @@ module Axlsx
|
|
|
15
13
|
# @option [String] tooltip The tip to display when the user positions the mouse cursor over this hyperlink
|
|
16
14
|
# @option [Symbol] target This is :external by default. If you set it to anything else, the location is interpreted to be the current workbook.
|
|
17
15
|
# @option [String|Cell] ref The location of this hyperlink in the worksheet
|
|
18
|
-
def initialize(worksheet, options={})
|
|
16
|
+
def initialize(worksheet, options = {})
|
|
19
17
|
DataTypeValidator.validate "Hyperlink.worksheet", [Worksheet], worksheet
|
|
20
18
|
@worksheet = worksheet
|
|
21
19
|
@target = :external
|
|
@@ -27,7 +25,7 @@ module Axlsx
|
|
|
27
25
|
|
|
28
26
|
serializable_attributes :display, :tooltip, :ref
|
|
29
27
|
|
|
30
|
-
#Cell location of hyperlink on worksheet.
|
|
28
|
+
# Cell location of hyperlink on worksheet.
|
|
31
29
|
# @return [String]
|
|
32
30
|
attr_reader :ref
|
|
33
31
|
|
|
@@ -51,13 +49,14 @@ module Axlsx
|
|
|
51
49
|
# @return [Relationship]
|
|
52
50
|
def relationship
|
|
53
51
|
return unless @target == :external
|
|
52
|
+
|
|
54
53
|
Relationship.new(self, HYPERLINK_R, location, :target_mode => :External)
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
# Seralize the object
|
|
58
57
|
# @param [String] str
|
|
59
58
|
# @return [String]
|
|
60
|
-
def to_xml_string(str='')
|
|
59
|
+
def to_xml_string(str = '')
|
|
61
60
|
str << '<hyperlink '
|
|
62
61
|
serialized_attributes str, location_or_id
|
|
63
62
|
str << '/>'
|
|
@@ -68,7 +67,7 @@ module Axlsx
|
|
|
68
67
|
# r:id should only be specified for external targets.
|
|
69
68
|
# @return [Hash]
|
|
70
69
|
def location_or_id
|
|
71
|
-
@target == :external ?
|
|
70
|
+
@target == :external ? { :"r:id" => relationship.Id } : { :location => Axlsx::coder.encode(location) }
|
|
72
71
|
end
|
|
73
72
|
end
|
|
74
73
|
end
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
module Axlsx
|
|
2
|
-
|
|
3
|
-
#A collection of hyperlink objects for a worksheet
|
|
2
|
+
# A collection of hyperlink objects for a worksheet
|
|
4
3
|
class WorksheetHyperlinks < SimpleTypedList
|
|
5
|
-
|
|
6
4
|
# Creates a new Hyperlinks collection
|
|
7
5
|
# @param [Worksheet] worksheet the worksheet that owns these hyperlinks
|
|
8
6
|
def initialize(worksheet)
|
|
@@ -23,13 +21,15 @@ module Axlsx
|
|
|
23
21
|
# @return Array
|
|
24
22
|
def relationships
|
|
25
23
|
return [] if empty?
|
|
24
|
+
|
|
26
25
|
map { |hyperlink| hyperlink.relationship }
|
|
27
26
|
end
|
|
28
27
|
|
|
29
28
|
# seralize the collection of hyperlinks
|
|
30
29
|
# @return [String]
|
|
31
|
-
def to_xml_string(str='')
|
|
30
|
+
def to_xml_string(str = '')
|
|
32
31
|
return if empty?
|
|
32
|
+
|
|
33
33
|
str << '<hyperlinks>'
|
|
34
34
|
each { |hyperlink| hyperlink.to_xml_string(str) }
|
|
35
35
|
str << '</hyperlinks>'
|
data/lib/axlsx.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
1
|
require 'htmlentities'
|
|
3
2
|
require 'axlsx/version.rb'
|
|
4
3
|
require 'marcel'
|
|
@@ -22,11 +21,11 @@ require 'axlsx/rels/relationships.rb'
|
|
|
22
21
|
require 'axlsx/drawing/drawing.rb'
|
|
23
22
|
require 'axlsx/workbook/workbook.rb'
|
|
24
23
|
require 'axlsx/package.rb'
|
|
25
|
-
#required gems
|
|
24
|
+
# required gems
|
|
26
25
|
require 'nokogiri'
|
|
27
26
|
require 'zip'
|
|
28
27
|
|
|
29
|
-
#core dependencies
|
|
28
|
+
# core dependencies
|
|
30
29
|
require 'bigdecimal'
|
|
31
30
|
require 'set'
|
|
32
31
|
require 'time'
|
|
@@ -55,7 +54,7 @@ module Axlsx
|
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
# determines the cell range for the items provided
|
|
58
|
-
def self.cell_range(cells, absolute=true)
|
|
57
|
+
def self.cell_range(cells, absolute = true)
|
|
59
58
|
return "" unless cells.first.is_a? Cell
|
|
60
59
|
|
|
61
60
|
first_cell, last_cell = cells.minmax_by(&:pos)
|
|
@@ -76,7 +75,7 @@ module Axlsx
|
|
|
76
75
|
cells.sort_by(&:pos)
|
|
77
76
|
end
|
|
78
77
|
|
|
79
|
-
#global reference html entity encoding
|
|
78
|
+
# global reference html entity encoding
|
|
80
79
|
# @return [HtmlEntities]
|
|
81
80
|
def self.coder
|
|
82
81
|
@@coder ||= ::HTMLEntities.new
|
|
@@ -89,7 +88,7 @@ module Axlsx
|
|
|
89
88
|
letters_str = name[/[A-Z]+/]
|
|
90
89
|
|
|
91
90
|
# capitalization?!?
|
|
92
|
-
v = letters_str.reverse.chars.reduce({:base=>1, :i=>0}) do
|
|
91
|
+
v = letters_str.reverse.chars.reduce({ :base => 1, :i => 0 }) do |val, c|
|
|
93
92
|
val[:i] += ((c.bytes.first - 64) * val[:base])
|
|
94
93
|
|
|
95
94
|
val[:base] *= 26
|
|
@@ -124,7 +123,7 @@ module Axlsx
|
|
|
124
123
|
# @example Relative Cell Reference
|
|
125
124
|
# ws.rows.first.cells.first.r #=> "A1"
|
|
126
125
|
def self.cell_r(c_index, r_index)
|
|
127
|
-
col_ref(c_index) << (r_index+1).to_s
|
|
126
|
+
col_ref(c_index) << (r_index + 1).to_s
|
|
128
127
|
end
|
|
129
128
|
|
|
130
129
|
# Creates an array of individual cell references based on an excel reference range.
|
|
@@ -144,10 +143,10 @@ module Axlsx
|
|
|
144
143
|
# performs the increadible feat of changing snake_case to CamelCase
|
|
145
144
|
# @param [String] s The snake case string to camelize
|
|
146
145
|
# @return [String]
|
|
147
|
-
def self.camel(s="", all_caps = true)
|
|
146
|
+
def self.camel(s = "", all_caps = true)
|
|
148
147
|
s = s.to_s
|
|
149
148
|
s = s.capitalize if all_caps
|
|
150
|
-
s.gsub(/_(.)/){ $1.upcase }
|
|
149
|
+
s.gsub(/_(.)/) { $1.upcase }
|
|
151
150
|
end
|
|
152
151
|
|
|
153
152
|
# returns the provided string with all invalid control charaters
|
|
@@ -201,4 +200,19 @@ module Axlsx
|
|
|
201
200
|
def self.trust_input=(trust_me)
|
|
202
201
|
@trust_input = trust_me
|
|
203
202
|
end
|
|
203
|
+
|
|
204
|
+
# Whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
205
|
+
# Allowing user-generated data to be interpreted as formulas is a security risk.
|
|
206
|
+
# See https://www.owasp.org/index.php/CSV_Injection for details.
|
|
207
|
+
# @return [Boolean]
|
|
208
|
+
def self.escape_formulas
|
|
209
|
+
!defined?(@escape_formulas) || @escape_formulas.nil? ? false : @escape_formulas
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# Sets whether to treat values starting with an equals sign as formulas or as literal strings.
|
|
213
|
+
# @param [Boolean] value The value to set.
|
|
214
|
+
def self.escape_formulas=(value)
|
|
215
|
+
Axlsx.validate_boolean(value)
|
|
216
|
+
@escape_formulas = value
|
|
217
|
+
end
|
|
204
218
|
end
|
data/lib/caxlsx.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: caxlsx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Randy Morgan
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2023-04-12 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: nokogiri
|
|
@@ -344,7 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
344
344
|
- !ruby/object:Gem::Version
|
|
345
345
|
version: '0'
|
|
346
346
|
requirements: []
|
|
347
|
-
rubygems_version: 3.
|
|
347
|
+
rubygems_version: 3.2.3
|
|
348
348
|
signing_key:
|
|
349
349
|
specification_version: 4
|
|
350
350
|
summary: Excel OOXML (xlsx) with charts, styles, images and autowidth columns.
|