write_xlsx 1.12.3 → 1.15.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/.rubocop.yml +22 -0
- data/Changes +23 -0
- data/README.md +1 -1
- data/lib/write_xlsx/chart/area.rb +2 -2
- data/lib/write_xlsx/chart/axis.rb +55 -32
- data/lib/write_xlsx/chart/axis_writer.rb +528 -0
- data/lib/write_xlsx/chart/bar.rb +2 -2
- data/lib/write_xlsx/chart/caption.rb +16 -9
- data/lib/write_xlsx/chart/chart_area.rb +121 -0
- data/lib/write_xlsx/chart/column.rb +2 -2
- data/lib/write_xlsx/chart/d_pt_point_writer.rb +14 -0
- data/lib/write_xlsx/chart/doughnut.rb +0 -3
- data/lib/write_xlsx/chart/formatting_writer.rb +652 -0
- data/lib/write_xlsx/chart/initialization.rb +100 -0
- data/lib/write_xlsx/chart/line.rb +4 -3
- data/lib/write_xlsx/chart/pie.rb +6 -2
- data/lib/write_xlsx/chart/radar.rb +2 -2
- data/lib/write_xlsx/chart/scatter.rb +4 -3
- data/lib/write_xlsx/chart/series.rb +35 -15
- data/lib/write_xlsx/chart/series_data.rb +132 -0
- data/lib/write_xlsx/chart/series_writer.rb +318 -0
- data/lib/write_xlsx/chart/settings.rb +226 -0
- data/lib/write_xlsx/chart/stock.rb +2 -2
- data/lib/write_xlsx/chart/table.rb +50 -0
- data/lib/write_xlsx/chart/xml_writer.rb +305 -0
- data/lib/write_xlsx/chart.rb +286 -2477
- data/lib/write_xlsx/chartsheet.rb +35 -83
- data/lib/write_xlsx/constants.rb +11 -0
- data/lib/write_xlsx/drawing.rb +5 -3
- data/lib/write_xlsx/format/alignment_state.rb +39 -0
- data/lib/write_xlsx/format/alignment_style.rb +92 -0
- data/lib/write_xlsx/format/border_state.rb +47 -0
- data/lib/write_xlsx/format/border_style.rb +116 -0
- data/lib/write_xlsx/format/fill_state.rb +26 -0
- data/lib/write_xlsx/format/fill_style.rb +52 -0
- data/lib/write_xlsx/format/font_state.rb +74 -0
- data/lib/write_xlsx/format/font_style.rb +172 -0
- data/lib/write_xlsx/format/format_state.rb +65 -0
- data/lib/write_xlsx/format/number_format_state.rb +20 -0
- data/lib/write_xlsx/format/number_format_style.rb +28 -0
- data/lib/write_xlsx/format/protection_state.rb +20 -0
- data/lib/write_xlsx/format/protection_style.rb +28 -0
- data/lib/write_xlsx/format.rb +1093 -426
- data/lib/write_xlsx/formats.rb +0 -2
- data/lib/write_xlsx/image_property.rb +4 -1
- data/lib/write_xlsx/inserted_chart.rb +1 -1
- data/lib/write_xlsx/object_positioning.rb +203 -0
- data/lib/write_xlsx/package/app.rb +3 -3
- data/lib/write_xlsx/package/button.rb +6 -2
- data/lib/write_xlsx/package/comments.rb +11 -3
- data/lib/write_xlsx/package/conditional_format.rb +7 -3
- data/lib/write_xlsx/package/content_types.rb +2 -2
- data/lib/write_xlsx/package/core.rb +2 -2
- data/lib/write_xlsx/package/custom.rb +3 -2
- data/lib/write_xlsx/package/metadata.rb +2 -2
- data/lib/write_xlsx/package/packager.rb +0 -3
- data/lib/write_xlsx/package/relationships.rb +2 -2
- data/lib/write_xlsx/package/rich_value.rb +4 -2
- data/lib/write_xlsx/package/rich_value_rel.rb +2 -2
- data/lib/write_xlsx/package/rich_value_structure.rb +2 -2
- data/lib/write_xlsx/package/rich_value_types.rb +3 -3
- data/lib/write_xlsx/package/shared_strings.rb +2 -2
- data/lib/write_xlsx/package/styles.rb +13 -9
- data/lib/write_xlsx/package/table.rb +8 -2
- data/lib/write_xlsx/package/theme.rb +0 -3
- data/lib/write_xlsx/package/vml.rb +2 -2
- data/lib/write_xlsx/page_setup.rb +192 -0
- data/lib/write_xlsx/shape.rb +97 -100
- data/lib/write_xlsx/sheets.rb +9 -4
- data/lib/write_xlsx/sparkline.rb +2 -2
- data/lib/write_xlsx/utility/cell_reference.rb +124 -0
- data/lib/write_xlsx/utility/chart_formatting.rb +262 -0
- data/lib/write_xlsx/utility/common.rb +44 -0
- data/lib/write_xlsx/utility/date_time.rb +113 -0
- data/lib/write_xlsx/utility/dimensions.rb +40 -0
- data/lib/write_xlsx/utility/drawing.rb +136 -0
- data/lib/write_xlsx/utility/rich_text.rb +184 -0
- data/lib/write_xlsx/utility/sheetname_quoting.rb +73 -0
- data/lib/write_xlsx/utility/string_width.rb +45 -0
- data/lib/write_xlsx/utility/url.rb +27 -0
- data/lib/write_xlsx/utility/xml_primitives.rb +32 -0
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook/chart_data.rb +188 -0
- data/lib/write_xlsx/workbook/format_preparation.rb +199 -0
- data/lib/write_xlsx/workbook/initialization.rb +223 -0
- data/lib/write_xlsx/workbook/package_preparation.rb +231 -0
- data/lib/write_xlsx/workbook/workbook_writer.rb +164 -0
- data/lib/write_xlsx/workbook.rb +143 -981
- data/lib/write_xlsx/worksheet/asset_manager.rb +60 -0
- data/lib/write_xlsx/worksheet/autofilter.rb +390 -0
- data/lib/write_xlsx/worksheet/cell_data.rb +13 -6
- data/lib/write_xlsx/worksheet/cell_data_manager.rb +47 -0
- data/lib/write_xlsx/worksheet/cell_data_store.rb +61 -0
- data/lib/write_xlsx/worksheet/columns.rb +204 -0
- data/lib/write_xlsx/worksheet/comments_support.rb +61 -0
- data/lib/write_xlsx/worksheet/conditional_formats.rb +30 -0
- data/lib/write_xlsx/worksheet/data_validation.rb +9 -1
- data/lib/write_xlsx/worksheet/data_writing.rb +1017 -0
- data/lib/write_xlsx/worksheet/drawing_methods.rb +308 -0
- data/lib/write_xlsx/worksheet/drawing_preparation.rb +290 -0
- data/lib/write_xlsx/worksheet/drawing_relations.rb +76 -0
- data/lib/write_xlsx/worksheet/drawing_xml_writer.rb +50 -0
- data/lib/write_xlsx/worksheet/formatting.rb +418 -0
- data/lib/write_xlsx/worksheet/hyperlink.rb +9 -1
- data/lib/write_xlsx/worksheet/initialization.rb +146 -0
- data/lib/write_xlsx/worksheet/panes.rb +64 -0
- data/lib/write_xlsx/worksheet/print_options.rb +72 -0
- data/lib/write_xlsx/worksheet/protection.rb +65 -0
- data/lib/write_xlsx/worksheet/rich_text_helpers.rb +78 -0
- data/lib/write_xlsx/worksheet/row_col_sizing.rb +69 -0
- data/lib/write_xlsx/worksheet/rows.rb +84 -0
- data/lib/write_xlsx/worksheet/selection.rb +41 -0
- data/lib/write_xlsx/worksheet/xml_writer.rb +1246 -0
- data/lib/write_xlsx/worksheet.rb +376 -4530
- metadata +66 -4
- data/lib/write_xlsx/utility.rb +0 -986
- data/lib/write_xlsx/worksheet/page_setup.rb +0 -192
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Writexlsx
|
|
5
|
+
class Workbook
|
|
6
|
+
module Initialization
|
|
7
|
+
#
|
|
8
|
+
# user must not use. it is internal method.
|
|
9
|
+
#
|
|
10
|
+
def assemble_xml_file # :nodoc:
|
|
11
|
+
return unless @writer
|
|
12
|
+
|
|
13
|
+
# Prepare format object for passing to Style.rb.
|
|
14
|
+
prepare_format_properties
|
|
15
|
+
|
|
16
|
+
write_xml_declaration do
|
|
17
|
+
# Write the root workbook element.
|
|
18
|
+
write_workbook do
|
|
19
|
+
# Write the XLSX file version.
|
|
20
|
+
write_file_version
|
|
21
|
+
|
|
22
|
+
# Write the fileSharing element.
|
|
23
|
+
write_file_sharing
|
|
24
|
+
|
|
25
|
+
# Write the workbook properties.
|
|
26
|
+
write_workbook_pr
|
|
27
|
+
|
|
28
|
+
# Write the workbook view properties.
|
|
29
|
+
write_book_views
|
|
30
|
+
|
|
31
|
+
# Write the worksheet names and ids.
|
|
32
|
+
@worksheets.write_sheets(@writer)
|
|
33
|
+
|
|
34
|
+
# Write the workbook defined names.
|
|
35
|
+
write_defined_names
|
|
36
|
+
|
|
37
|
+
# Write the workbook calculation properties.
|
|
38
|
+
write_calc_pr
|
|
39
|
+
|
|
40
|
+
# Write the workbook extension storage.
|
|
41
|
+
# write_ext_lst
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def write_workbook(&block) # :nodoc:
|
|
49
|
+
schema = 'http://schemas.openxmlformats.org'
|
|
50
|
+
attributes = [
|
|
51
|
+
['xmlns',
|
|
52
|
+
schema + '/spreadsheetml/2006/main'],
|
|
53
|
+
['xmlns:r',
|
|
54
|
+
schema + '/officeDocument/2006/relationships']
|
|
55
|
+
]
|
|
56
|
+
@writer.tag_elements('workbook', attributes, &block)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def write_file_version # :nodoc:
|
|
60
|
+
attributes = [
|
|
61
|
+
%w[appName xl],
|
|
62
|
+
['lastEdited', 4],
|
|
63
|
+
['lowestEdited', 4],
|
|
64
|
+
['rupBuild', 4505]
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
attributes << [:codeName, '{37E998C4-C9E5-D4B9-71C8-EB1FF731991C}'] if @vba_project
|
|
68
|
+
|
|
69
|
+
@writer.empty_tag('fileVersion', attributes)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
#
|
|
73
|
+
# Write the <fileSharing> element.
|
|
74
|
+
#
|
|
75
|
+
def write_file_sharing
|
|
76
|
+
return unless ptrue?(@read_only)
|
|
77
|
+
|
|
78
|
+
attributes = []
|
|
79
|
+
attributes << ['readOnlyRecommended', 1]
|
|
80
|
+
@writer.empty_tag('fileSharing', attributes)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def write_workbook_pr # :nodoc:
|
|
84
|
+
attributes = []
|
|
85
|
+
attributes << ['codeName', @vba_codename] if ptrue?(@vba_codename)
|
|
86
|
+
attributes << ['date1904', 1] if date_1904?
|
|
87
|
+
attributes << ['defaultThemeVersion', 124226]
|
|
88
|
+
@writer.empty_tag('workbookPr', attributes)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def write_book_views # :nodoc:
|
|
92
|
+
@writer.tag_elements('bookViews') { write_workbook_view }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def write_workbook_view # :nodoc:
|
|
96
|
+
attributes = [
|
|
97
|
+
['xWindow', @x_window],
|
|
98
|
+
['yWindow', @y_window],
|
|
99
|
+
['windowWidth', @window_width],
|
|
100
|
+
['windowHeight', @window_height]
|
|
101
|
+
]
|
|
102
|
+
attributes << ['tabRatio', @tab_ratio] if @tab_ratio != 600
|
|
103
|
+
attributes << ['firstSheet', @firstsheet + 1] if @firstsheet > 0
|
|
104
|
+
attributes << ['activeTab', @activesheet] if @activesheet > 0
|
|
105
|
+
@writer.empty_tag('workbookView', attributes)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def write_calc_pr # :nodoc:
|
|
109
|
+
attributes = [['calcId', @calc_id]]
|
|
110
|
+
|
|
111
|
+
case @calc_mode
|
|
112
|
+
when 'manual'
|
|
113
|
+
attributes << %w[calcMode manual]
|
|
114
|
+
attributes << ['calcOnSave', 0]
|
|
115
|
+
when 'autoNoTable'
|
|
116
|
+
attributes << %w[calcMode autoNoTable]
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
attributes << ['fullCalcOnLoad', 1] if @calc_on_load
|
|
120
|
+
|
|
121
|
+
@writer.empty_tag('calcPr', attributes)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def write_ext_lst # :nodoc:
|
|
125
|
+
@writer.tag_elements('extLst') { write_ext }
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def write_ext # :nodoc:
|
|
129
|
+
attributes = [
|
|
130
|
+
['xmlns:mx', "#{OFFICE_URL}mac/excel/2008/main"],
|
|
131
|
+
['uri', uri]
|
|
132
|
+
]
|
|
133
|
+
@writer.tag_elements('ext', attributes) { write_mx_arch_id }
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def write_mx_arch_id # :nodoc:
|
|
137
|
+
@writer.empty_tag('mx:ArchID', ['Flags', 2])
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def write_defined_names # :nodoc:
|
|
141
|
+
return unless ptrue?(@defined_names)
|
|
142
|
+
|
|
143
|
+
@writer.tag_elements('definedNames') do
|
|
144
|
+
@defined_names.each { |defined_name| write_defined_name(defined_name) }
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def write_defined_name(defined_name) # :nodoc:
|
|
149
|
+
name, id, range, hidden = defined_name
|
|
150
|
+
|
|
151
|
+
attributes = [['name', name]]
|
|
152
|
+
attributes << ['localSheetId', id.to_s] unless id == -1
|
|
153
|
+
attributes << %w[hidden 1] if hidden
|
|
154
|
+
|
|
155
|
+
@writer.data_element('definedName', range, attributes)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def write_io(str) # :nodoc:
|
|
159
|
+
@writer << str
|
|
160
|
+
str
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|