write_xlsx 0.64.1 → 0.65.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +10 -1
- data/examples/conditional_format.rb +251 -18
- data/examples/demo.rb +2 -3
- data/examples/macros.rb +42 -0
- data/examples/outline_collapsed.rb +160 -0
- data/examples/republic.png +0 -0
- data/examples/shape3.rb +2 -2
- data/examples/shape4.rb +5 -5
- data/examples/shape5.rb +6 -6
- data/examples/shape6.rb +6 -6
- data/examples/shape7.rb +11 -11
- data/examples/shape8.rb +10 -10
- data/examples/shape_all.rb +0 -0
- data/examples/vbaProject.bin +0 -0
- data/lib/write_xlsx/chart.rb +656 -56
- data/lib/write_xlsx/chartsheet.rb +26 -2
- data/lib/write_xlsx/format.rb +50 -27
- data/lib/write_xlsx/formats.rb +32 -0
- data/lib/write_xlsx/package/packager.rb +45 -238
- data/lib/write_xlsx/package/table.rb +9 -18
- data/lib/write_xlsx/package/xml_writer_simple.rb +26 -9
- data/lib/write_xlsx/sheets.rb +223 -0
- data/lib/write_xlsx/sparkline.rb +140 -4
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +34 -121
- data/lib/write_xlsx/worksheet/data_validation.rb +291 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +111 -0
- data/lib/write_xlsx/worksheet/page_setup.rb +170 -0
- data/lib/write_xlsx/worksheet.rb +1112 -1334
- data/test/helper.rb +1 -1
- data/test/package/styles/test_styles_01.rb +1 -10
- data/test/package/styles/test_styles_02.rb +1 -10
- data/test/package/styles/test_styles_03.rb +1 -10
- data/test/package/styles/test_styles_04.rb +1 -10
- data/test/package/styles/test_styles_05.rb +1 -10
- data/test/package/styles/test_styles_06.rb +1 -10
- data/test/package/styles/test_styles_07.rb +1 -10
- data/test/package/styles/test_styles_08.rb +1 -10
- data/test/package/styles/test_styles_09.rb +1 -10
- data/test/perl_output/conditional_format.xlsx +0 -0
- data/test/perl_output/outline_collapsed.xlsx +0 -0
- data/test/perl_output/protection.xlsx +0 -0
- data/test/regression/test_chart_gap01.rb +47 -0
- data/test/regression/test_chart_gap02.rb +47 -0
- data/test/regression/test_chart_gap03.rb +47 -0
- data/test/regression/test_format05.rb +26 -0
- data/test/regression/test_rich_string12.rb +32 -0
- data/test/regression/xlsx_files/chart_gap01.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap02.xlsx +0 -0
- data/test/regression/xlsx_files/chart_gap03.xlsx +0 -0
- data/test/regression/xlsx_files/format05.xlsx +0 -0
- data/test/regression/xlsx_files/rich_string12.xlsx +0 -0
- data/test/test_example_match.rb +253 -20
- data/test/worksheet/test_set_column.rb +25 -0
- data/test/worksheet/test_worksheet_03.rb +1 -1
- data/test/worksheet/test_worksheet_04.rb +1 -1
- data/test/worksheet/test_write_array_formula_01.rb +7 -0
- data/test/worksheet/test_write_col_breaks.rb +2 -2
- data/test/worksheet/test_write_col_info.rb +8 -8
- data/test/worksheet/test_write_conditional_formatting.rb +4 -4
- data/test/worksheet/test_write_formula_does_not_change_formula_string.rb +18 -0
- data/test/worksheet/test_write_header_footer.rb +8 -3
- data/test/worksheet/test_write_hyperlink.rb +10 -5
- data/test/worksheet/test_write_merge_cells.rb +6 -6
- data/test/worksheet/test_write_page_set_up_pr.rb +1 -1
- data/test/worksheet/test_write_page_setup.rb +1 -1
- data/test/worksheet/test_write_row_breaks.rb +2 -2
- data/test/worksheet/test_write_row_element.rb +1 -1
- data/test/worksheet/test_write_sheet_pr.rb +2 -2
- data/test/worksheet/test_write_sheet_view.rb +0 -9
- data/test/worksheet/test_write_url.rb +19 -0
- data/test/worksheet/test_write_worksheet_attributes.rb +21 -0
- metadata +38 -5
- data/lib/write_xlsx/worksheet/print_style.rb +0 -51
- data/test/worksheet/test_write_worksheet.rb +0 -19
@@ -0,0 +1,170 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
module Writexlsx
|
4
|
+
class Worksheet
|
5
|
+
class PageSetup # :nodoc:
|
6
|
+
attr_accessor :margin_left, :margin_right, :margin_top, :margin_bottom # :nodoc:
|
7
|
+
attr_accessor :margin_header, :margin_footer # :nodoc:
|
8
|
+
attr_accessor :repeat_rows, :repeat_cols, :print_area # :nodoc:
|
9
|
+
attr_accessor :hbreaks, :vbreaks, :scale # :nodoc:
|
10
|
+
attr_accessor :fit_page, :fit_width, :fit_height, :page_setup_changed # :nodoc:
|
11
|
+
attr_writer :across # :nodoc:
|
12
|
+
attr_accessor :orientation, :print_options_changed # :nodoc:
|
13
|
+
attr_accessor :header, :footer, :header_footer_changed
|
14
|
+
|
15
|
+
def initialize # :nodoc:
|
16
|
+
@margin_left = 0.7
|
17
|
+
@margin_right = 0.7
|
18
|
+
@margin_top = 0.75
|
19
|
+
@margin_bottom = 0.75
|
20
|
+
@margin_header = 0.3
|
21
|
+
@margin_footer = 0.3
|
22
|
+
@repeat_rows = ''
|
23
|
+
@repeat_cols = ''
|
24
|
+
@print_area = ''
|
25
|
+
@hbreaks = []
|
26
|
+
@vbreaks = []
|
27
|
+
@scale = 100
|
28
|
+
@fit_page = false
|
29
|
+
@fit_width = nil
|
30
|
+
@fit_height = nil
|
31
|
+
@page_setup_changed = false
|
32
|
+
@across = false
|
33
|
+
@orientation = true
|
34
|
+
end
|
35
|
+
|
36
|
+
def paper=(paper_size)
|
37
|
+
if paper_size
|
38
|
+
@paper_size = paper_size
|
39
|
+
@page_setup_changed = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def center_horizontally
|
44
|
+
@print_options_changed = true
|
45
|
+
@hcenter = true
|
46
|
+
end
|
47
|
+
|
48
|
+
def center_vertically
|
49
|
+
@print_options_changed = true
|
50
|
+
@vcenter = true
|
51
|
+
end
|
52
|
+
|
53
|
+
def print_row_col_headers(headers)
|
54
|
+
if headers
|
55
|
+
@print_headers = true
|
56
|
+
@print_options_changed = true
|
57
|
+
else
|
58
|
+
@print_headers = false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def hide_gridlines(option)
|
63
|
+
if option == 0 || !option
|
64
|
+
@print_gridlines = true
|
65
|
+
@print_options_changed = true
|
66
|
+
else
|
67
|
+
@print_gridlines = false
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
#
|
72
|
+
# Write the <pageSetup> element.
|
73
|
+
#
|
74
|
+
# The following is an example taken from Excel.
|
75
|
+
#
|
76
|
+
# <pageSetup
|
77
|
+
# paperSize="9"
|
78
|
+
# scale="110"
|
79
|
+
# fitToWidth="2"
|
80
|
+
# fitToHeight="2"
|
81
|
+
# pageOrder="overThenDown"
|
82
|
+
# orientation="portrait"
|
83
|
+
# blackAndWhite="1"
|
84
|
+
# draft="1"
|
85
|
+
# horizontalDpi="200"
|
86
|
+
# verticalDpi="200"
|
87
|
+
# r:id="rId1"
|
88
|
+
# />
|
89
|
+
#
|
90
|
+
def write_page_setup(writer) #:nodoc:
|
91
|
+
return unless @page_setup_changed
|
92
|
+
|
93
|
+
attributes = []
|
94
|
+
attributes << 'paperSize' << @paper_size if @paper_size
|
95
|
+
attributes << 'scale' << @scale if @scale != 100
|
96
|
+
attributes << 'fitToWidth' << @fit_width if @fit_page && @fit_width != 1
|
97
|
+
attributes << 'fitToHeight' << @fit_height if @fit_page && @fit_height != 1
|
98
|
+
attributes << 'pageOrder' << "overThenDown" if @across
|
99
|
+
attributes << 'orientation'
|
100
|
+
if @orientation
|
101
|
+
attributes << 'portrait'
|
102
|
+
else
|
103
|
+
attributes << 'landscape'
|
104
|
+
end
|
105
|
+
|
106
|
+
writer.empty_tag('pageSetup', attributes)
|
107
|
+
end
|
108
|
+
|
109
|
+
#
|
110
|
+
# Write the <pageMargins> element.
|
111
|
+
#
|
112
|
+
def write_page_margins(writer) #:nodoc:
|
113
|
+
writer.empty_tag('pageMargins', margin_attributes)
|
114
|
+
end
|
115
|
+
|
116
|
+
#
|
117
|
+
# Write the <printOptions> element.
|
118
|
+
#
|
119
|
+
def write_print_options(writer) #:nodoc:
|
120
|
+
return unless @print_options_changed
|
121
|
+
|
122
|
+
attributes = []
|
123
|
+
attributes << 'horizontalCentered' << 1 if @hcenter
|
124
|
+
attributes << 'verticalCentered' << 1 if @vcenter
|
125
|
+
attributes << 'headings' << 1 if @print_headers
|
126
|
+
attributes << 'gridLines' << 1 if @print_gridlines
|
127
|
+
writer.empty_tag('printOptions', attributes)
|
128
|
+
end
|
129
|
+
|
130
|
+
#
|
131
|
+
# Write the <headerFooter> element.
|
132
|
+
#
|
133
|
+
def write_header_footer(writer) #:nodoc:
|
134
|
+
return unless @header_footer_changed
|
135
|
+
|
136
|
+
writer.tag_elements('headerFooter') do
|
137
|
+
write_odd_header(writer) if @header && @header != ''
|
138
|
+
write_odd_footer(writer) if @footer && @footer != ''
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
private
|
143
|
+
|
144
|
+
#
|
145
|
+
# Write the <oddHeader> element.
|
146
|
+
#
|
147
|
+
def write_odd_header(writer) #:nodoc:
|
148
|
+
writer.data_element('oddHeader', @header)
|
149
|
+
end
|
150
|
+
|
151
|
+
#
|
152
|
+
# Write the <oddFooter> element.
|
153
|
+
#
|
154
|
+
def write_odd_footer(writer) #:nodoc:
|
155
|
+
writer.data_element('oddFooter', @footer)
|
156
|
+
end
|
157
|
+
|
158
|
+
def margin_attributes # :nodoc:
|
159
|
+
[
|
160
|
+
'left', @margin_left,
|
161
|
+
'right', @margin_right,
|
162
|
+
'top', @margin_top,
|
163
|
+
'bottom', @margin_bottom,
|
164
|
+
'header', @margin_header,
|
165
|
+
'footer', @margin_footer
|
166
|
+
]
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|