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::COL_MAX, 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, #convert_date_time, delete_files, #float_to_str, #pixels_to_points, #ptrue?, #put_deprecate_message, #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, #write_anchor, #write_auto_fill, #write_color, #write_comment_path, #write_div, #write_fill, #write_font, #write_stroke, #xl_cell_to_rowcol, #xl_col_to_name, #xl_range, #xl_range_formula, #xl_rowcol_to_cell, #xml_str
Constructor Details
#initialize ⇒ Sheets
Returns a new instance of Sheets.
11
12
13
|
# File 'lib/write_xlsx/sheets.rb', line 11
def initialize
super([])
end
|
Instance Method Details
#chartname_count ⇒ Object
23
24
25
|
# File 'lib/write_xlsx/sheets.rb', line 23
def chartname_count
chartsheet_count
end
|
#chartsheet_count ⇒ Object
15
16
17
|
# File 'lib/write_xlsx/sheets.rb', line 15
def chartsheet_count
chartsheets.count
end
|
#index_by_name(sheetname) ⇒ Object
156
157
158
159
|
# File 'lib/write_xlsx/sheets.rb', line 156
def index_by_name(sheetname)
name = sheetname.sub(/^'/,'').sub(/'$/,'')
self.collect { |sheet| sheet.name }.index(name)
end
|
#make_and_check_sheet_chart_name(type, name) ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/write_xlsx/sheets.rb', line 27
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
19
20
21
|
# File 'lib/write_xlsx/sheets.rb', line 19
def sheetname_count
self.count - chartname_count
end
|
#tables ⇒ Object
148
149
150
|
# File 'lib/write_xlsx/sheets.rb', line 148
def tables
self.inject([]) { |tables, sheet| tables + sheet.tables }.flatten
end
|
#tables_count ⇒ Object
152
153
154
|
# File 'lib/write_xlsx/sheets.rb', line 152
def tables_count
tables.count
end
|
#write_chartsheet_files(package_dir) ⇒ Object
52
53
54
55
56
57
|
# File 'lib/write_xlsx/sheets.rb', line 52
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
91
92
93
94
|
# File 'lib/write_xlsx/sheets.rb', line 91
def write_chartsheet_rels_files(package_dir)
write_sheet_rels_files_base(chartsheets, "#{package_dir}/xl/chartsheets/_rels",
'sheet')
end
|
71
72
73
74
75
76
77
78
|
# File 'lib/write_xlsx/sheets.rb', line 71
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/write_xlsx/sheets.rb', line 96
def write_drawing_rels_files(package_dir)
dir = "#{package_dir}/xl/drawings/_rels"
self.reject { |sheet| sheet.drawing_links[0].empty? }.
each_with_index do |sheet, index|
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+1}.xml.rels")
rels.assemble_xml_file
end
end
|
#write_sheet_rels_files_base(sheets, dir, body) ⇒ Object
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'lib/write_xlsx/sheets.rb', line 127
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
35
36
37
38
39
40
41
42
43
|
# File 'lib/write_xlsx/sheets.rb', line 35
def write_sheets(writer)
writer.tag_elements('sheets') do
id_num = 1
self.each do |sheet|
write_sheet(writer, sheet, id_num)
id_num += 1
end
end
end
|
#write_table_files(package_dir) ⇒ Object
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/write_xlsx/sheets.rb', line 80
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_files(package_dir) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/write_xlsx/sheets.rb', line 59
def write_vml_files(package_dir)
dir = "#{package_dir}/xl/drawings"
self.select { |sheet| sheet.has_vml? }.
each_with_index do |sheet, index|
FileUtils.mkdir_p(dir)
vml = Package::Vml.new
vml.set_xml_writer("#{dir}/vmlDrawing#{index+1}.vml")
vml.assemble_xml_file(sheet)
end
end
|
#write_worksheet_files(package_dir) ⇒ Object
45
46
47
48
49
50
|
# File 'lib/write_xlsx/sheets.rb', line 45
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
122
123
124
125
|
# File 'lib/write_xlsx/sheets.rb', line 122
def write_worksheet_rels_files(package_dir)
write_sheet_rels_files_base(worksheets, "#{package_dir}/xl/worksheets/_rels",
'sheet')
end
|