axlsx 1.0.15 → 1.1.1
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.
- data/.yardopts +1 -0
- data/CHANGELOG.md +58 -2
- data/README.md +425 -207
- data/Rakefile +6 -2
- data/examples/axlsx.xlsx +0 -0
- data/examples/example.csv +1000 -0
- data/examples/example.rb +266 -132
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/real_example.rb +63 -0
- data/examples/sample.png +0 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/lib/axlsx/content_type/content_type.rb +13 -12
- data/lib/axlsx/content_type/default.rb +10 -6
- data/lib/axlsx/content_type/override.rb +13 -8
- data/lib/axlsx/doc_props/app.rb +38 -41
- data/lib/axlsx/doc_props/core.rb +13 -17
- data/lib/axlsx/drawing/axis.rb +39 -19
- data/lib/axlsx/drawing/bar_3D_chart.rb +34 -32
- data/lib/axlsx/drawing/bar_series.rb +14 -14
- data/lib/axlsx/drawing/cat_axis.rb +16 -14
- data/lib/axlsx/drawing/cat_axis_data.rb +17 -18
- data/lib/axlsx/drawing/chart.rb +40 -41
- data/lib/axlsx/drawing/drawing.rb +27 -12
- data/lib/axlsx/drawing/graphic_frame.rb +22 -21
- data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
- data/lib/axlsx/drawing/hyperlink.rb +96 -0
- data/lib/axlsx/drawing/hyperlink.rb~ +64 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +31 -28
- data/lib/axlsx/drawing/line_series.rb +12 -11
- data/lib/axlsx/drawing/marker.rb +11 -8
- data/lib/axlsx/drawing/named_axis_data.rb +36 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +18 -16
- data/lib/axlsx/drawing/pic.rb +47 -33
- data/lib/axlsx/drawing/picture_locking.rb +22 -18
- data/lib/axlsx/drawing/pie_3D_chart.rb +11 -8
- data/lib/axlsx/drawing/pie_series.rb +16 -12
- data/lib/axlsx/drawing/scaling.rb +11 -10
- data/lib/axlsx/drawing/scatter_chart.rb +69 -0
- data/lib/axlsx/drawing/scatter_series.rb +39 -0
- data/lib/axlsx/drawing/ser_axis.rb +11 -10
- data/lib/axlsx/drawing/series.rb +16 -15
- data/lib/axlsx/drawing/series_title.rb +15 -14
- data/lib/axlsx/drawing/title.rb +27 -26
- data/lib/axlsx/drawing/two_cell_anchor.rb +19 -20
- data/lib/axlsx/drawing/val_axis.rb +9 -7
- data/lib/axlsx/drawing/val_axis_data.rb +18 -17
- data/lib/axlsx/drawing/view_3D.rb +23 -20
- data/lib/axlsx/package.rb +117 -52
- data/lib/axlsx/rels/relationship.rb +27 -8
- data/lib/axlsx/rels/relationships.rb +9 -2
- data/lib/axlsx/stylesheet/border.rb +28 -23
- data/lib/axlsx/stylesheet/border_pr.rb +17 -15
- data/lib/axlsx/stylesheet/cell_alignment.rb +24 -21
- data/lib/axlsx/stylesheet/cell_protection.rb +11 -7
- data/lib/axlsx/stylesheet/cell_style.rb +9 -5
- data/lib/axlsx/stylesheet/color.rb +20 -14
- data/lib/axlsx/stylesheet/fill.rb +8 -5
- data/lib/axlsx/stylesheet/font.rb +22 -14
- data/lib/axlsx/stylesheet/gradient_fill.rb +20 -17
- data/lib/axlsx/stylesheet/gradient_stop.rb +10 -6
- data/lib/axlsx/stylesheet/num_fmt.rb +13 -6
- data/lib/axlsx/stylesheet/pattern_fill.rb +26 -10
- data/lib/axlsx/stylesheet/styles.rb +55 -41
- data/lib/axlsx/stylesheet/table_style.rb +10 -4
- data/lib/axlsx/stylesheet/table_style_element.rb +11 -7
- data/lib/axlsx/stylesheet/table_styles.rb +12 -8
- data/lib/axlsx/stylesheet/xf.rb +30 -25
- data/lib/axlsx/util/cbf.rb +69 -33
- data/lib/axlsx/util/constants.rb +39 -20
- data/lib/axlsx/util/doc/_index.html +84 -0
- data/lib/axlsx/util/doc/class_list.html +47 -0
- data/lib/axlsx/util/doc/css/common.css +1 -0
- data/lib/axlsx/util/doc/css/full_list.css +55 -0
- data/lib/axlsx/util/doc/css/style.css +322 -0
- data/lib/axlsx/util/doc/file_list.html +46 -0
- data/lib/axlsx/util/doc/frames.html +13 -0
- data/lib/axlsx/util/doc/index.html +84 -0
- data/lib/axlsx/util/doc/js/app.js +205 -0
- data/lib/axlsx/util/doc/js/full_list.js +173 -0
- data/lib/axlsx/util/doc/js/jquery.js +16 -0
- data/lib/axlsx/util/doc/method_list.html +46 -0
- data/lib/axlsx/util/doc/top-level-namespace.html +95 -0
- data/lib/axlsx/util/font_tables.rb~ +0 -0
- data/lib/axlsx/util/ms_off_crypto.rb +10 -10
- data/lib/axlsx/util/parser.rb +1 -0
- data/lib/axlsx/util/simple_typed_list.rb +20 -10
- data/lib/axlsx/util/storage.rb +1 -1
- data/lib/axlsx/util/validators.rb +23 -7
- data/lib/axlsx/version.rb +5 -2
- data/lib/axlsx/workbook/shared_strings_table.rb +68 -0
- data/lib/axlsx/workbook/shared_strings_table.rb~ +69 -0
- data/lib/axlsx/workbook/workbook.rb +82 -26
- data/lib/axlsx/workbook/worksheet/cell.rb +166 -130
- data/lib/axlsx/workbook/worksheet/col.rb +114 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +29 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/row.rb +53 -21
- data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/table.rb +96 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +97 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +275 -124
- data/lib/axlsx.rb +41 -14
- data/lib/schema/dc.xsd +5 -5
- data/lib/schema/dcmitype.xsd +5 -3
- data/lib/schema/dcterms.xsd +15 -15
- data/lib/schema/opc-coreProperties.xsd +6 -2
- data/lib/schema/xml.xsd +7 -8
- data/test/benchmark.rb +73 -0
- data/test/content_type/tc_content_type.rb +31 -31
- data/test/content_type/tc_default.rb +9 -22
- data/test/content_type/tc_override.rb +8 -21
- data/test/doc_props/tc_app.rb +2 -8
- data/test/doc_props/tc_core.rb +6 -7
- data/test/drawing/tc_axis.rb +7 -3
- data/test/drawing/tc_bar_3D_chart.rb +6 -7
- data/test/drawing/tc_bar_series.rb +4 -5
- data/test/drawing/tc_cat_axis.rb +2 -3
- data/test/drawing/tc_cat_axis_data.rb +2 -3
- data/test/drawing/tc_chart.rb +13 -14
- data/test/drawing/tc_drawing.rb +7 -8
- data/test/drawing/tc_graphic_frame.rb +3 -4
- data/test/drawing/tc_hyperlink.rb +69 -0
- data/test/drawing/tc_line_3d_chart.rb +5 -6
- data/test/drawing/tc_line_series.rb +3 -4
- data/test/drawing/tc_marker.rb +3 -4
- data/test/drawing/tc_one_cell_anchor.rb +6 -7
- data/test/drawing/tc_pic.rb +13 -8
- data/test/drawing/tc_picture_locking.rb +2 -3
- data/test/drawing/tc_pie_3D_chart.rb +5 -6
- data/test/drawing/tc_pie_series.rb +4 -5
- data/test/drawing/tc_scaling.rb +3 -4
- data/test/drawing/tc_scatter_chart.rb +43 -0
- data/test/drawing/tc_scatter_series.rb +20 -0
- data/test/drawing/tc_ser_axis.rb +2 -3
- data/test/drawing/tc_series.rb +4 -5
- data/test/drawing/tc_series_title.rb +4 -5
- data/test/drawing/tc_title.rb +4 -5
- data/test/drawing/tc_two_cell_anchor.rb +4 -5
- data/test/drawing/tc_val_axis.rb +2 -3
- data/test/drawing/tc_val_axis_data.rb +2 -3
- data/test/drawing/tc_view_3D.rb +6 -7
- data/test/profile.rb +34 -0
- data/test/rels/tc_relationship.rb +10 -6
- data/test/rels/tc_relationships.rb +4 -5
- data/test/stylesheet/tc_border.rb +3 -4
- data/test/stylesheet/tc_border_pr.rb +3 -4
- data/test/stylesheet/tc_cell_alignment.rb +10 -6
- data/test/stylesheet/tc_cell_protection.rb +2 -3
- data/test/stylesheet/tc_cell_style.rb +2 -3
- data/test/stylesheet/tc_color.rb +2 -3
- data/test/stylesheet/tc_fill.rb +1 -2
- data/test/stylesheet/tc_font.rb +12 -5
- data/test/stylesheet/tc_gradient_fill.rb +1 -2
- data/test/stylesheet/tc_gradient_stop.rb +1 -2
- data/test/stylesheet/tc_num_fmt.rb +1 -2
- data/test/stylesheet/tc_pattern_fill.rb +3 -4
- data/test/stylesheet/tc_styles.rb +31 -6
- data/test/stylesheet/tc_table_style.rb +2 -3
- data/test/stylesheet/tc_table_style_element.rb +2 -3
- data/test/stylesheet/tc_table_styles.rb +3 -4
- data/test/stylesheet/tc_xf.rb +16 -17
- data/test/tc_axlsx.rb +39 -0
- data/test/tc_helper.rb +3 -0
- data/test/tc_package.rb +43 -9
- data/test/util/tc_simple_typed_list.rb +8 -9
- data/test/util/tc_validators.rb +7 -8
- data/test/workbook/tc_shared_strings_table.rb +38 -0
- data/test/workbook/tc_workbook.rb +32 -6
- data/test/workbook/worksheet/table/tc_table.rb +71 -0
- data/test/workbook/worksheet/table/tc_table.rb~ +72 -0
- data/test/workbook/worksheet/tc_cell.rb +80 -13
- data/test/workbook/worksheet/tc_col.rb +59 -0
- data/test/workbook/worksheet/tc_col.rb~ +10 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +132 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_row.rb +54 -4
- data/test/workbook/worksheet/tc_worksheet.rb +205 -31
- metadata +78 -84
- data/examples/example.rb~ +0 -112
- data/test/drawing/tc_line_series.tc~ +0 -34
- data/test/drawing/tc_picture_locking.rb~ +0 -77
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# A relationship defines a reference between package parts.
|
|
3
|
-
# @note Packages
|
|
4
|
+
# @note Packages automatically manage relationships.
|
|
4
5
|
class Relationship
|
|
5
6
|
|
|
6
7
|
# The location of the relationship target
|
|
@@ -21,9 +22,21 @@ module Axlsx
|
|
|
21
22
|
# @see DRAWING_R
|
|
22
23
|
# @return [String]
|
|
23
24
|
attr_reader :Type
|
|
24
|
-
|
|
25
|
+
|
|
26
|
+
# The target mode of the relationship
|
|
27
|
+
# used for hyperlink type relationships to mark the relationship to an external resource
|
|
28
|
+
# TargetMode can be specified during initialization by passing in a :target_mode option
|
|
29
|
+
# Target mode must be :external for now.
|
|
30
|
+
attr_reader :TargetMode
|
|
31
|
+
|
|
32
|
+
# creates a new relationship
|
|
33
|
+
# @param [String] Type The type of the relationship
|
|
34
|
+
# @param [String] Target The target for the relationship
|
|
35
|
+
# @option [Symbol] target_mode only accepts :external.
|
|
36
|
+
def initialize(type, target, options={})
|
|
25
37
|
self.Target=target
|
|
26
38
|
self.Type=type
|
|
39
|
+
self.TargetMode = options.delete(:target_mode) if options[:target_mode]
|
|
27
40
|
end
|
|
28
41
|
|
|
29
42
|
# @see Target
|
|
@@ -31,14 +44,20 @@ module Axlsx
|
|
|
31
44
|
# @see Type
|
|
32
45
|
def Type=(v) Axlsx::validate_relationship_type v; @Type = v end
|
|
33
46
|
|
|
34
|
-
#
|
|
35
|
-
|
|
36
|
-
|
|
47
|
+
# @see TargetMode
|
|
48
|
+
def TargetMode=(v) RestrictionValidator.validate 'Relationship.TargetMode', [:External, :Internal], v; @TargetMode = v; end
|
|
49
|
+
|
|
50
|
+
# serialize relationship
|
|
51
|
+
# @param [String] str
|
|
52
|
+
# @param [Integer] rId the id for this relationship
|
|
37
53
|
# @return [String]
|
|
38
|
-
def
|
|
54
|
+
def to_xml_string(rId, str = '')
|
|
39
55
|
h = self.instance_values
|
|
40
|
-
h[:Id] = rId
|
|
41
|
-
|
|
56
|
+
h[:Id] = 'rId' << rId.to_s
|
|
57
|
+
str << '<Relationship '
|
|
58
|
+
str << h.map { |key, value| '' << key.to_s << '="' << value.to_s << '"'}.join(' ')
|
|
59
|
+
str << '/>'
|
|
42
60
|
end
|
|
61
|
+
|
|
43
62
|
end
|
|
44
63
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
require 'axlsx/rels/relationship.rb'
|
|
3
4
|
|
|
@@ -10,6 +11,12 @@ require 'axlsx/rels/relationship.rb'
|
|
|
10
11
|
super Relationship
|
|
11
12
|
end
|
|
12
13
|
|
|
14
|
+
def to_xml_string(str = '')
|
|
15
|
+
str << '<?xml version="1.0" encoding="UTF-8"?>'
|
|
16
|
+
str << '<Relationships xmlns="' << RELS_R << '">'
|
|
17
|
+
each_with_index { |rel, index| rel.to_xml_string(index+1, str) }
|
|
18
|
+
str << '</Relationships>'
|
|
19
|
+
end
|
|
13
20
|
# Serializes the relationships document.
|
|
14
21
|
# @return [String]
|
|
15
22
|
def to_xml()
|
|
@@ -18,8 +25,8 @@ require 'axlsx/rels/relationship.rb'
|
|
|
18
25
|
each_with_index { |rel, index| rel.to_xml(xml, "rId#{index+1}") }
|
|
19
26
|
}
|
|
20
27
|
end
|
|
21
|
-
builder.to_xml
|
|
28
|
+
builder.to_xml(:save_with => 0)
|
|
22
29
|
end
|
|
23
|
-
|
|
30
|
+
|
|
24
31
|
end
|
|
25
32
|
end
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# This class details a border used in Office Open XML spreadsheet styles.
|
|
3
4
|
class Border
|
|
4
5
|
|
|
5
|
-
# @return [Boolean] The diagonal up property for the border that indicates if the border should include a diagonal line from the bottom left to the top right of the cell.
|
|
6
|
+
# @return [Boolean] The diagonal up property for the border that indicates if the border should include a diagonal line from the bottom left to the top right of the cell.
|
|
6
7
|
attr_reader :diagonalUp
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
# @return [Boolean] The diagonal down property for the border that indicates if the border should include a diagonal line from the top left to the top right of the cell.
|
|
9
10
|
attr_reader :diagonalDown
|
|
10
11
|
|
|
11
12
|
# @return [Boolean] The outline property for the border indicating that top, left, right and bottom borders should only be applied to the outside border of a range of cells.
|
|
12
13
|
attr_reader :outline
|
|
13
14
|
|
|
14
|
-
# @return [SimpleTypedList] A list of BorderPr objects for this border.
|
|
15
|
+
# @return [SimpleTypedList] A list of BorderPr objects for this border.
|
|
15
16
|
attr_reader :prs
|
|
16
17
|
|
|
17
18
|
# Creates a new Border object
|
|
18
19
|
# @option options [Boolean] diagonalUp
|
|
19
20
|
# @option options [Boolean] diagonalDown
|
|
20
21
|
# @option options [Boolean] outline
|
|
21
|
-
# @example Making a border
|
|
22
|
-
# p = Package.new
|
|
23
|
-
# red_border =
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
#
|
|
30
|
-
# p.workbook.add_worksheet.rows << :values=>[1,2,3] :style=>red_border
|
|
22
|
+
# @example - Making a border
|
|
23
|
+
# p = Axlsx::Package.new
|
|
24
|
+
# red_border = p.workbook.styles.add_style :border => { :style => :thin, :color => "FFFF0000" }
|
|
25
|
+
# ws = p.workbook.add_worksheet
|
|
26
|
+
# ws.add_row [1,2,3], :style => red_border
|
|
27
|
+
# p.serialize('red_border.xlsx')
|
|
28
|
+
#
|
|
29
|
+
# @note The recommended way to manage borders is with Style#add_style
|
|
30
|
+
# @see Style#add_style
|
|
31
31
|
def initialize(options={})
|
|
32
32
|
@prs = SimpleTypedList.new BorderPr
|
|
33
33
|
options.each do |o|
|
|
34
34
|
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
35
35
|
end
|
|
36
|
-
end
|
|
36
|
+
end
|
|
37
37
|
|
|
38
38
|
# @see diagonalUp
|
|
39
39
|
def diagonalUp=(v) Axlsx::validate_boolean v; @diagonalUp = v end
|
|
@@ -42,16 +42,21 @@ module Axlsx
|
|
|
42
42
|
# @see outline
|
|
43
43
|
def outline=(v) Axlsx::validate_boolean v; @outline = v end
|
|
44
44
|
|
|
45
|
-
# Serializes the
|
|
46
|
-
# @param [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
# Serializes the object
|
|
46
|
+
# @param [String] str
|
|
47
|
+
# @return [String]
|
|
48
|
+
def to_xml_string(str = '')
|
|
49
|
+
str << '<border '
|
|
50
|
+
h = self.instance_values.select{ |k,v| [:diagonalUp, :diagonalDown, :outline].include? k }
|
|
51
|
+
str << h.map { |key, value| '' << key.to_s << '="' << value.to_s << '"' }.join(' ')
|
|
52
|
+
str << '>'
|
|
53
|
+
[:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal].each do |k|
|
|
54
|
+
@prs.select { |pr| pr.name == k }.each do |part|
|
|
55
|
+
part.to_xml_string(str)
|
|
53
56
|
end
|
|
54
|
-
|
|
57
|
+
end
|
|
58
|
+
str << '</border>'
|
|
55
59
|
end
|
|
60
|
+
|
|
56
61
|
end
|
|
57
62
|
end
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
|
-
# A border part.
|
|
3
|
+
# A border part.
|
|
3
4
|
class BorderPr
|
|
4
|
-
|
|
5
|
+
|
|
5
6
|
# @return [Color] The color of this border part.
|
|
6
7
|
attr_reader :color
|
|
7
8
|
|
|
8
|
-
# @return [Symbol] The syle of this border part.
|
|
9
|
-
# @note
|
|
9
|
+
# @return [Symbol] The syle of this border part.
|
|
10
|
+
# @note
|
|
10
11
|
# The following are allowed
|
|
11
|
-
# :none
|
|
12
|
+
# :none
|
|
12
13
|
# :thin
|
|
13
14
|
# :medium
|
|
14
15
|
# :dashed
|
|
15
16
|
# :dotted
|
|
16
17
|
# :thick
|
|
17
18
|
# :double
|
|
18
|
-
# :hair
|
|
19
|
+
# :hair
|
|
19
20
|
# :mediumDashed
|
|
20
21
|
# :dashDot
|
|
21
22
|
# :mediumDashDot
|
|
@@ -25,7 +26,7 @@ module Axlsx
|
|
|
25
26
|
attr_reader :style
|
|
26
27
|
|
|
27
28
|
# @return [Symbol] The name of this border part
|
|
28
|
-
# @note
|
|
29
|
+
# @note
|
|
29
30
|
# The following are allowed
|
|
30
31
|
# :start
|
|
31
32
|
# :end
|
|
@@ -37,7 +38,7 @@ module Axlsx
|
|
|
37
38
|
# :vertical
|
|
38
39
|
# :horizontal
|
|
39
40
|
attr_reader :name
|
|
40
|
-
|
|
41
|
+
|
|
41
42
|
# Creates a new Border Part Object
|
|
42
43
|
# @option options [Color] color
|
|
43
44
|
# @option options [Symbol] name
|
|
@@ -52,17 +53,18 @@ module Axlsx
|
|
|
52
53
|
# @see name
|
|
53
54
|
def name=(v) RestrictionValidator.validate "BorderPr.name", [:start, :end, :left, :right, :top, :bottom, :diagonal, :vertical, :horizontal], v; @name = v end
|
|
54
55
|
# @see color
|
|
55
|
-
def color=(v) DataTypeValidator.validate(:color, Color, v); @color = v end
|
|
56
|
+
def color=(v) DataTypeValidator.validate(:color, Color, v); @color = v end
|
|
56
57
|
# @see style
|
|
57
58
|
def style=(v) RestrictionValidator.validate "BorderPr.style", [:none, :thin, :medium, :dashed, :dotted, :thick, :double, :hair, :mediumDashed, :dashDot, :mediumDashDot, :dashDotDot, :mediumDashDotDot, :slantDashDot], v; @style = v end
|
|
58
59
|
|
|
59
|
-
# Serializes the
|
|
60
|
-
# @param [
|
|
60
|
+
# Serializes the object
|
|
61
|
+
# @param [String] str
|
|
61
62
|
# @return [String]
|
|
62
|
-
def
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
def to_xml_string(str = '')
|
|
64
|
+
str << '<' << @name.to_s << ' style="' << @style.to_s << '">'
|
|
65
|
+
@color.to_xml_string(str) if @color.is_a?(Color)
|
|
66
|
+
str << '</' << @name.to_s << '>'
|
|
66
67
|
end
|
|
68
|
+
|
|
67
69
|
end
|
|
68
70
|
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# CellAlignment stores information about the cell alignment of a style Xf Object.
|
|
3
|
-
# @note Using Styles#add_style is the recommended way to manage cell alignment.
|
|
4
|
+
# @note Using Styles#add_style is the recommended way to manage cell alignment.
|
|
4
5
|
# @see Styles#add_style
|
|
5
6
|
class CellAlignment
|
|
6
7
|
# The horizontal alignment of the cell.
|
|
7
|
-
# @note
|
|
8
|
+
# @note
|
|
8
9
|
# The horizontal cell alignement style must be one of
|
|
9
10
|
# :general
|
|
10
11
|
# :left
|
|
@@ -35,7 +36,7 @@ module Axlsx
|
|
|
35
36
|
# Indicate if the text of the cell should wrap
|
|
36
37
|
# @return [Boolean]
|
|
37
38
|
attr_reader :wrapText
|
|
38
|
-
|
|
39
|
+
|
|
39
40
|
# The amount of indent
|
|
40
41
|
# @return [Integer]
|
|
41
42
|
attr_reader :indent
|
|
@@ -53,12 +54,12 @@ module Axlsx
|
|
|
53
54
|
attr_reader :shrinkToFit
|
|
54
55
|
|
|
55
56
|
# The reading order of the text
|
|
56
|
-
# 0 Context Dependent
|
|
57
|
+
# 0 Context Dependent
|
|
57
58
|
# 1 Left-to-Right
|
|
58
59
|
# 2 Right-to-Left
|
|
59
60
|
# @return [Integer]
|
|
60
61
|
attr_reader :readingOrder
|
|
61
|
-
|
|
62
|
+
|
|
62
63
|
# Create a new cell_alignment object
|
|
63
64
|
# @option options [Symbol] horizontal
|
|
64
65
|
# @option options [Symbol] vertical
|
|
@@ -73,33 +74,35 @@ module Axlsx
|
|
|
73
74
|
options.each do |o|
|
|
74
75
|
self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
|
|
75
76
|
end
|
|
76
|
-
end
|
|
77
|
-
|
|
77
|
+
end
|
|
78
|
+
|
|
78
79
|
# @see horizontal
|
|
79
|
-
def horizontal=(v) Axlsx::validate_horizontal_alignment v; @horizontal = v end
|
|
80
|
+
def horizontal=(v) Axlsx::validate_horizontal_alignment v; @horizontal = v end
|
|
80
81
|
# @see vertical
|
|
81
|
-
def vertical=(v) Axlsx::validate_vertical_alignment v; @vertical = v end
|
|
82
|
+
def vertical=(v) Axlsx::validate_vertical_alignment v; @vertical = v end
|
|
82
83
|
# @see textRotation
|
|
83
|
-
def textRotation=(v) Axlsx::validate_unsigned_int v; @textRotation = v end
|
|
84
|
+
def textRotation=(v) Axlsx::validate_unsigned_int v; @textRotation = v end
|
|
84
85
|
# @see wrapText
|
|
85
|
-
def wrapText=(v) Axlsx::validate_boolean v; @wrapText = v end
|
|
86
|
+
def wrapText=(v) Axlsx::validate_boolean v; @wrapText = v end
|
|
86
87
|
# @see indent
|
|
87
|
-
def indent=(v) Axlsx::validate_unsigned_int v; @indent = v end
|
|
88
|
+
def indent=(v) Axlsx::validate_unsigned_int v; @indent = v end
|
|
88
89
|
# @see relativeIndent
|
|
89
|
-
def relativeIndent=(v) Axlsx::validate_int v; @relativeIndent = v end
|
|
90
|
+
def relativeIndent=(v) Axlsx::validate_int v; @relativeIndent = v end
|
|
90
91
|
# @see justifyLastLine
|
|
91
|
-
def justifyLastLine=(v) Axlsx::validate_boolean v; @justifyLastLine = v end
|
|
92
|
+
def justifyLastLine=(v) Axlsx::validate_boolean v; @justifyLastLine = v end
|
|
92
93
|
# @see shrinkToFit
|
|
93
|
-
def shrinkToFit=(v) Axlsx::validate_boolean v; @shrinkToFit = v end
|
|
94
|
+
def shrinkToFit=(v) Axlsx::validate_boolean v; @shrinkToFit = v end
|
|
94
95
|
# @see readingOrder
|
|
95
|
-
def readingOrder=(v) Axlsx::validate_unsigned_int v; @readingOrder = v end
|
|
96
|
+
def readingOrder=(v) Axlsx::validate_unsigned_int v; @readingOrder = v end
|
|
96
97
|
|
|
97
|
-
# Serializes the
|
|
98
|
-
# @param [
|
|
98
|
+
# Serializes the object
|
|
99
|
+
# @param [String] str
|
|
99
100
|
# @return [String]
|
|
100
|
-
def
|
|
101
|
-
|
|
101
|
+
def to_xml_string(str = '')
|
|
102
|
+
str << '<alignment '
|
|
103
|
+
str << instance_values.map { |key, value| '' << key.to_s << '="' << value.to_s << '"' }.join(' ')
|
|
104
|
+
str << '/>'
|
|
102
105
|
end
|
|
103
|
-
|
|
106
|
+
|
|
104
107
|
end
|
|
105
108
|
end
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# CellProtection stores information about locking or hiding cells in spreadsheet.
|
|
3
4
|
# @note Using Styles#add_style is the recommended way to manage cell protection.
|
|
4
5
|
# @see Styles#add_style
|
|
5
6
|
class CellProtection
|
|
6
|
-
|
|
7
|
+
|
|
7
8
|
# specifies locking for cells that have the style containing this protection
|
|
8
9
|
# @return [Boolean]
|
|
9
10
|
attr_reader :hidden
|
|
@@ -22,15 +23,18 @@ module Axlsx
|
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
# @see hidden
|
|
25
|
-
def hidden=(v) Axlsx::validate_boolean v; @hidden = v end
|
|
26
|
+
def hidden=(v) Axlsx::validate_boolean v; @hidden = v end
|
|
26
27
|
# @see locked
|
|
27
|
-
def locked=(v) Axlsx::validate_boolean v; @locked = v end
|
|
28
|
+
def locked=(v) Axlsx::validate_boolean v; @locked = v end
|
|
28
29
|
|
|
29
|
-
# Serializes the
|
|
30
|
-
# @param [
|
|
30
|
+
# Serializes the object
|
|
31
|
+
# @param [String] str
|
|
31
32
|
# @return [String]
|
|
32
|
-
def
|
|
33
|
-
|
|
33
|
+
def to_xml_string(str = '')
|
|
34
|
+
str << '<protection '
|
|
35
|
+
str << instance_values.map { |key, value| '' << key.to_s << '="' << value.to_s << '"' }.join(' ')
|
|
36
|
+
str << '/>'
|
|
34
37
|
end
|
|
38
|
+
|
|
35
39
|
end
|
|
36
40
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# CellStyle defines named styles that reference defined formatting records and can be used in your worksheet.
|
|
3
4
|
# @note Using Styles#add_style is the recommended way to manage cell styling.
|
|
@@ -6,7 +7,7 @@ module Axlsx
|
|
|
6
7
|
# The name of this cell style
|
|
7
8
|
# @return [String]
|
|
8
9
|
attr_reader :name
|
|
9
|
-
|
|
10
|
+
|
|
10
11
|
# The formatting record id this named style utilizes
|
|
11
12
|
# @return [Integer]
|
|
12
13
|
# @see Axlsx::Xf
|
|
@@ -54,12 +55,15 @@ module Axlsx
|
|
|
54
55
|
# @see customBuiltin
|
|
55
56
|
def customBuiltin=(v) Axlsx::validate_boolean v; @customBuiltin = v end
|
|
56
57
|
|
|
57
|
-
# Serializes the
|
|
58
|
-
# @param [
|
|
58
|
+
# Serializes the object
|
|
59
|
+
# @param [String] str
|
|
59
60
|
# @return [String]
|
|
60
|
-
def
|
|
61
|
-
|
|
61
|
+
def to_xml_string(str = '')
|
|
62
|
+
str << '<cellStyle '
|
|
63
|
+
str << instance_values.map { |key, value| '' << key.to_s << '="' << value.to_s << '"' }.join(' ')
|
|
64
|
+
str << '/>'
|
|
62
65
|
end
|
|
66
|
+
|
|
63
67
|
end
|
|
64
68
|
|
|
65
69
|
end
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# The color class represents a color used for borders, fills an fonts
|
|
3
4
|
class Color
|
|
4
5
|
# Determines if the color is system color dependant
|
|
5
6
|
# @return [Boolean]
|
|
6
7
|
attr_reader :auto
|
|
7
|
-
|
|
8
|
-
# The color as defined in rgb terms.
|
|
9
|
-
# @note
|
|
8
|
+
|
|
9
|
+
# The color as defined in rgb terms.
|
|
10
|
+
# @note
|
|
10
11
|
# rgb colors need to conform to ST_UnsignedIntHex. That basically means put 'FF' before you color
|
|
11
12
|
# When assigning the rgb value the behavior is much like CSS selectors and can use shorthand versions as follows:
|
|
12
13
|
# If you provide a two character value it will be repeated for each r, g, b assignment
|
|
@@ -24,16 +25,16 @@ module Axlsx
|
|
|
24
25
|
# no support for theme just yet
|
|
25
26
|
# @return [Integer]
|
|
26
27
|
#attr_reader :theme
|
|
27
|
-
|
|
28
|
+
|
|
28
29
|
# The tint value.
|
|
29
30
|
# @note valid values are between -1.0 and 1.0
|
|
30
31
|
# @return [Float]
|
|
31
32
|
attr_reader :tint
|
|
32
|
-
|
|
33
|
+
|
|
33
34
|
# Creates a new Color object
|
|
34
35
|
# @option options [Boolean] auto
|
|
35
36
|
# @option options [String] rgb
|
|
36
|
-
# @option options [Float] tint
|
|
37
|
+
# @option options [Float] tint
|
|
37
38
|
def initialize(options={})
|
|
38
39
|
@rgb = "FF000000"
|
|
39
40
|
options.each do |o|
|
|
@@ -41,7 +42,7 @@ module Axlsx
|
|
|
41
42
|
end
|
|
42
43
|
end
|
|
43
44
|
# @see auto
|
|
44
|
-
def auto=(v) Axlsx::validate_boolean v; @auto = v end
|
|
45
|
+
def auto=(v) Axlsx::validate_boolean v; @auto = v end
|
|
45
46
|
# @see color
|
|
46
47
|
def rgb=(v)
|
|
47
48
|
Axlsx::validate_string(v)
|
|
@@ -55,15 +56,20 @@ module Axlsx
|
|
|
55
56
|
def tint=(v) Axlsx::validate_float v; @tint = v end
|
|
56
57
|
|
|
57
58
|
# This version does not support themes
|
|
58
|
-
# def theme=(v) Axlsx::validate_unsigned_integer v; @theme = v end
|
|
59
|
-
|
|
60
|
-
# Indexed colors are for backward compatability which I am choosing not to support
|
|
61
|
-
# def indexed=(v) Axlsx::validate_unsigned_integer v; @indexed = v end
|
|
59
|
+
# def theme=(v) Axlsx::validate_unsigned_integer v; @theme = v end
|
|
62
60
|
|
|
61
|
+
# Indexed colors are for backward compatability which I am choosing not to support
|
|
62
|
+
# def indexed=(v) Axlsx::validate_unsigned_integer v; @indexed = v end
|
|
63
63
|
|
|
64
|
-
# Serializes the
|
|
65
|
-
# @param [
|
|
64
|
+
# Serializes the object
|
|
65
|
+
# @param [String] str
|
|
66
66
|
# @return [String]
|
|
67
|
-
def
|
|
67
|
+
def to_xml_string(str = '')
|
|
68
|
+
str << "<color "
|
|
69
|
+
self.instance_values.each do |key, value|
|
|
70
|
+
str << key.to_s << '="' << value.to_s << '" '
|
|
71
|
+
end
|
|
72
|
+
str << "/>"
|
|
73
|
+
end
|
|
68
74
|
end
|
|
69
75
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# The Fill is a formatting object that manages the background color, and pattern for cells.
|
|
3
4
|
# @note The recommended way to manage styles in your workbook is to use Styles#add_style.
|
|
@@ -11,17 +12,19 @@ module Axlsx
|
|
|
11
12
|
attr_reader :fill_type
|
|
12
13
|
|
|
13
14
|
# Creates a new Fill object
|
|
14
|
-
# @param [PatternFill, GradientFill] fill_type
|
|
15
|
+
# @param [PatternFill, GradientFill] fill_type
|
|
15
16
|
# @raise [ArgumentError] if the fill_type parameter is not a PatternFill or a GradientFill instance
|
|
16
17
|
def initialize(fill_type)
|
|
17
18
|
self.fill_type = fill_type
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
# Serializes the
|
|
21
|
-
# @param [
|
|
21
|
+
# Serializes the object
|
|
22
|
+
# @param [String] str
|
|
22
23
|
# @return [String]
|
|
23
|
-
def
|
|
24
|
-
|
|
24
|
+
def to_xml_string(str = '')
|
|
25
|
+
str << '<fill>'
|
|
26
|
+
@fill_type.to_xml_string(str)
|
|
27
|
+
str << '</fill>'
|
|
25
28
|
end
|
|
26
29
|
|
|
27
30
|
# @see fill_type
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
# The Font class details a font instance for use in styling cells.
|
|
3
4
|
# @note The recommended way to manage fonts, and other styles is Styles#add_style
|
|
@@ -6,7 +7,7 @@ module Axlsx
|
|
|
6
7
|
# The name of the font
|
|
7
8
|
# @return [String]
|
|
8
9
|
attr_reader :name
|
|
9
|
-
|
|
10
|
+
|
|
10
11
|
# The charset of the font
|
|
11
12
|
# @return [Integer]
|
|
12
13
|
# @note
|
|
@@ -31,9 +32,9 @@ module Axlsx
|
|
|
31
32
|
# 238 EASTEUROPE_CHARSET
|
|
32
33
|
# 255 OEM_CHARSET
|
|
33
34
|
attr_reader :charset
|
|
34
|
-
|
|
35
|
+
|
|
35
36
|
# The font's family
|
|
36
|
-
# @note
|
|
37
|
+
# @note
|
|
37
38
|
# The following are defined OOXML specification
|
|
38
39
|
# 0 Not applicable.
|
|
39
40
|
# 1 Roman
|
|
@@ -53,6 +54,10 @@ module Axlsx
|
|
|
53
54
|
# @return [Boolean]
|
|
54
55
|
attr_reader :i
|
|
55
56
|
|
|
57
|
+
# Indicates if the font should be rendered underlined
|
|
58
|
+
# @return [Boolean]
|
|
59
|
+
attr_reader :u
|
|
60
|
+
|
|
56
61
|
# Indicates if the font should be rendered with a strikthrough
|
|
57
62
|
# @return [Boolean]
|
|
58
63
|
attr_reader :strike
|
|
@@ -88,6 +93,7 @@ module Axlsx
|
|
|
88
93
|
# @option options [Integer] family
|
|
89
94
|
# @option options [Boolean] b
|
|
90
95
|
# @option options [Boolean] i
|
|
96
|
+
# @option options [Boolean] u
|
|
91
97
|
# @option options [Boolean] strike
|
|
92
98
|
# @option options [Boolean] outline
|
|
93
99
|
# @option options [Boolean] shadow
|
|
@@ -101,21 +107,23 @@ module Axlsx
|
|
|
101
107
|
end
|
|
102
108
|
end
|
|
103
109
|
# @see name
|
|
104
|
-
def name=(v) Axlsx::validate_string v; @name = v end
|
|
110
|
+
def name=(v) Axlsx::validate_string v; @name = v end
|
|
105
111
|
# @see charset
|
|
106
112
|
def charset=(v) Axlsx::validate_unsigned_int v; @charset = v end
|
|
107
113
|
# @see family
|
|
108
114
|
def family=(v) Axlsx::validate_unsigned_int v; @family = v end
|
|
109
115
|
# @see b
|
|
110
|
-
def b=(v) Axlsx::validate_boolean v; @b = v end
|
|
116
|
+
def b=(v) Axlsx::validate_boolean v; @b = v end
|
|
111
117
|
# @see i
|
|
112
118
|
def i=(v) Axlsx::validate_boolean v; @i = v end
|
|
119
|
+
# @see u
|
|
120
|
+
def u=(v) Axlsx::validate_boolean v; @u = v end
|
|
113
121
|
# @see strike
|
|
114
122
|
def strike=(v) Axlsx::validate_boolean v; @strike = v end
|
|
115
123
|
# @see outline
|
|
116
124
|
def outline=(v) Axlsx::validate_boolean v; @outline = v end
|
|
117
125
|
# @see shadow
|
|
118
|
-
def shadow=(v) Axlsx::validate_boolean v; @shadow = v end
|
|
126
|
+
def shadow=(v) Axlsx::validate_boolean v; @shadow = v end
|
|
119
127
|
# @see condense
|
|
120
128
|
def condense=(v) Axlsx::validate_boolean v; @condense = v end
|
|
121
129
|
# @see extend
|
|
@@ -125,15 +133,15 @@ module Axlsx
|
|
|
125
133
|
# @see sz
|
|
126
134
|
def sz=(v) Axlsx::validate_unsigned_int v; @sz=v end
|
|
127
135
|
|
|
128
|
-
# Serializes the
|
|
129
|
-
# @param [
|
|
136
|
+
# Serializes the object
|
|
137
|
+
# @param [String] str
|
|
130
138
|
# @return [String]
|
|
131
|
-
def
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
139
|
+
def to_xml_string(str = '')
|
|
140
|
+
str << '<font>'
|
|
141
|
+
instance_values.each do |k, v|
|
|
142
|
+
v.is_a?(Color) ? v.to_xml_string(str) : (str << '<' << k.to_s << ' val="' << v.to_s << '"/>')
|
|
143
|
+
end
|
|
144
|
+
str << '</font>'
|
|
137
145
|
end
|
|
138
146
|
end
|
|
139
147
|
end
|