Class: Writexlsx::Sheets
- Inherits:
-
Array
- Object
- Array
- Writexlsx::Sheets
show all
- Includes:
- Utility
- Defined in:
- lib/write_xlsx/sheets.rb
Constant Summary
collapse
- BASE_NAME =
{ sheet: 'Sheet', chart: 'Chart' }
Constants included
from Utility
Utility::CHAR_WIDTHS, Utility::COL_MAX, Utility::PERL_TRUE_VALUES, Utility::ROW_MAX, Utility::SHEETNAME_MAX, Utility::STR_MAX
Instance Method Summary
collapse
Methods included from Utility
#absolute_char, #check_dimensions, #check_dimensions_and_update_max_min_values, #check_parameter, #color, #convert_date_time, #convert_font_args, #dash_types, delete_files, #escape_url, #fill_properties, #float_to_str, #get_font_latin_attributes, #get_font_style_attributes, #get_image_properties, #layout_properties, #legend_properties, #line_fill_properties, #line_properties, #palette_color, #params_to_font, #pattern_properties, #pixels_to_points, #process_bmp, #process_gif, #process_jpg, #process_png, #process_workbook_options, #ptrue?, #put_deprecate_message, #quote_sheetname, #r_id_attributes, #row_col_notation, #shape_style_base, #store_col_max_min_values, #store_row_max_min_values, #substitute_cellref, #underline_attributes, #v_shape_attributes_base, #v_shape_style_base, #value_or_raise, #write_a_body_pr, #write_a_def_rpr, #write_a_end_para_rpr, #write_a_lst_style, #write_a_p_formula, #write_a_p_pr_formula, #write_a_solid_fill, #write_a_srgb_clr, #write_anchor, #write_auto_fill, #write_color, #write_comment_path, #write_def_rpr_r_pr_common, #write_div, #write_fill, #write_font, #write_stroke, #write_tx_pr, #write_xml_declaration, #xl_cell_to_rowcol, #xl_col_to_name, #xl_range, #xl_range_formula, #xl_rowcol_to_cell, #xl_string_pixel_width, #xml_str
Constructor Details
#initialize ⇒ Sheets
Returns a new instance of Sheets.
13
14
15
|
# File 'lib/write_xlsx/sheets.rb', line 13
def initialize
super([])
end
|
Instance Method Details
#chartname_count ⇒ Object
25
26
27
|
# File 'lib/write_xlsx/sheets.rb', line 25
def chartname_count
chartsheet_count
end
|
#chartsheet_count ⇒ Object
17
18
19
|
# File 'lib/write_xlsx/sheets.rb', line 17
def chartsheet_count
chartsheets.count
end
|
#chartsheets ⇒ Object
201
202
203
|
# File 'lib/write_xlsx/sheets.rb', line 201
def chartsheets
self.select { |worksheet| worksheet.is_chartsheet? }
end
|
#index_by_name(sheetname) ⇒ Object
192
193
194
195
|
# File 'lib/write_xlsx/sheets.rb', line 192
def index_by_name(sheetname)
name = sheetname.sub(/^'/, '').sub(/'$/, '')
collect { |sheet| sheet.name }.index(name)
end
|
#make_and_check_sheet_chart_name(type, name) ⇒ Object
29
30
31
32
33
34
35
|
# File 'lib/write_xlsx/sheets.rb', line 29
def make_and_check_sheet_chart_name(type, name)
count = sheet_chart_count(type)
name = "#{BASE_NAME[type]}#{count + 1}" unless ptrue?(name)
check_valid_sheetname(name)
name
end
|
#sheetname_count ⇒ Object
21
22
23
|
# File 'lib/write_xlsx/sheets.rb', line 21
def sheetname_count
count - chartname_count
end
|
#tables ⇒ Object
184
185
186
|
# File 'lib/write_xlsx/sheets.rb', line 184
def tables
inject([]) { |tables, sheet| tables + sheet.tables }.flatten
end
|
#tables_count ⇒ Object
188
189
190
|
# File 'lib/write_xlsx/sheets.rb', line 188
def tables_count
tables.count
end
|
#visible_first ⇒ Object
205
206
207
|
# File 'lib/write_xlsx/sheets.rb', line 205
def visible_first
reject { |worksheet| worksheet.hidden? }.first
end
|
#worksheets ⇒ Object
197
198
199
|
# File 'lib/write_xlsx/sheets.rb', line 197
def worksheets
reject { |worksheet| worksheet.is_chartsheet? }
end
|
#write_chartsheet_files(package_dir) ⇒ Object
54
55
56
57
58
59
|
# File 'lib/write_xlsx/sheets.rb', line 54
def write_chartsheet_files(package_dir)
dir = "#{package_dir}/xl/chartsheets"
chartsheets.each_with_index do |sheet, index|
write_sheet_files(dir, sheet, index)
end
end
|
#write_chartsheet_rels_files(package_dir) ⇒ Object
111
112
113
114
115
|
# File 'lib/write_xlsx/sheets.rb', line 111
def write_chartsheet_rels_files(package_dir)
write_sheet_rels_files_base(
chartsheets, "#{package_dir}/xl/chartsheets/_rels", 'sheet'
)
end
|
91
92
93
94
95
96
97
98
|
# File 'lib/write_xlsx/sheets.rb', line 91
def (package_dir)
self.select { |sheet| sheet. }
.each_with_index do |sheet, index|
FileUtils.mkdir_p("#{package_dir}/xl/drawings")
sheet..set_xml_writer("#{package_dir}/xl/comments#{index + 1}.xml")
sheet..assemble_xml_file
end
end
|
#write_drawing_rels_files(package_dir) ⇒ Object
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'lib/write_xlsx/sheets.rb', line 117
def write_drawing_rels_files(package_dir)
dir = "#{package_dir}/xl/drawings/_rels"
index = 0
each do |sheet|
index += 1 if !sheet.drawing_links[0].empty? || sheet.has_shapes?
next if sheet.drawing_links[0].empty?
FileUtils.mkdir_p(dir)
rels = Package::Relationships.new
sheet.drawing_links.each do |drawing_datas|
drawing_datas.each do |drawing_data|
rels.add_document_relationship(*drawing_data)
end
end
rels.set_xml_writer("#{dir}/drawing#{index}.xml.rels")
rels.assemble_xml_file
end
end
|
#write_sheet_rels_files_base(sheets, dir, body) ⇒ Object
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
# File 'lib/write_xlsx/sheets.rb', line 164
def write_sheet_rels_files_base(sheets, dir, body)
sheets.each_with_index do |sheet, index|
next if sheet.external_links.empty?
FileUtils.mkdir_p(dir)
rels = Package::Relationships.new
sheet.external_links.each do |link_datas|
link_datas.each do |link_data|
rels.add_worksheet_relationship(*link_data)
end
end
rels.set_xml_writer("#{dir}/#{body}#{index + 1}.xml.rels")
rels.assemble_xml_file
end
end
|
#write_sheets(writer) ⇒ Object
37
38
39
40
41
42
43
44
45
|
# File 'lib/write_xlsx/sheets.rb', line 37
def write_sheets(writer)
writer.tag_elements('sheets') do
id_num = 1
each do |sheet|
write_sheet(writer, sheet, id_num)
id_num += 1
end
end
end
|
#write_table_files(package_dir) ⇒ Object
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/write_xlsx/sheets.rb', line 100
def write_table_files(package_dir)
unless tables.empty?
dir = "#{package_dir}/xl/tables"
FileUtils.mkdir_p(dir)
tables.each_with_index do |table, index|
table.set_xml_writer("#{dir}/table#{index + 1}.xml")
table.assemble_xml_file
end
end
end
|
#write_vml_drawing_rels_files(package_dir, worksheet, index) ⇒ Object
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
# File 'lib/write_xlsx/sheets.rb', line 142
def write_vml_drawing_rels_files(package_dir, worksheet, index)
dir = "#{package_dir}/xl/drawings/_rels"
FileUtils.mkdir_p(dir)
rels = Package::Relationships.new
worksheet.vml_drawing_links.each do |drawing_data|
rels.add_document_relationship(*drawing_data)
end
rels.set_xml_writer("#{dir}/vmlDrawing#{index}.vml.rels")
rels.assemble_xml_file
end
|
#write_vml_files(package_dir) ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/write_xlsx/sheets.rb', line 61
def write_vml_files(package_dir)
dir = "#{package_dir}/xl/drawings"
index = 1
each do |sheet|
next if !sheet.has_vml? and !sheet.
FileUtils.mkdir_p(dir)
if sheet.has_vml?
vml = Package::Vml.new
vml.set_xml_writer("#{dir}/vmlDrawing#{index}.vml")
vml.assemble_xml_file(
sheet.vml_data_id, sheet.vml_shape_id,
sheet., sheet.buttons_data
)
index += 1
end
next unless sheet.
vml = Package::Vml.new
vml.set_xml_writer("#{dir}/vmlDrawing#{index}.vml")
vml.assemble_xml_file(
sheet., sheet. * 1024,
[], [], sheet.
)
write_vml_drawing_rels_files(package_dir, sheet, index)
index += 1
end
end
|
#write_worksheet_files(package_dir) ⇒ Object
47
48
49
50
51
52
|
# File 'lib/write_xlsx/sheets.rb', line 47
def write_worksheet_files(package_dir)
dir = "#{package_dir}/xl/worksheets"
worksheets.each_with_index do |sheet, index|
write_sheet_files(dir, sheet, index)
end
end
|
#write_worksheet_rels_files(package_dir) ⇒ Object
158
159
160
161
162
|
# File 'lib/write_xlsx/sheets.rb', line 158
def write_worksheet_rels_files(package_dir)
write_sheet_rels_files_base(
worksheets, "#{package_dir}/xl/worksheets/_rels", 'sheet'
)
end
|