Class: Writexlsx::Sheets
Constant Summary
collapse
- BASE_NAME =
{ sheet: 'Sheet', chart: 'Chart' }
Utility::Common::PERL_TRUE_VALUES
Constants included
from Constants
Constants::COL_MAX, Constants::ROW_MAX, Constants::SHEETNAME_MAX, Constants::STR_MAX
Instance Method Summary
collapse
#r_id_attributes, #write_color, #write_xml_declaration, #xml_str
#absolute_char, #check_parameter, #float_to_str, #ptrue?, #put_deprecate_message
Constructor Details
#initialize ⇒ Sheets
Returns a new instance of Sheets.
18
19
20
|
# File 'lib/write_xlsx/sheets.rb', line 18
def initialize
super([])
end
|
Instance Method Details
#chartname_count ⇒ Object
30
31
32
|
# File 'lib/write_xlsx/sheets.rb', line 30
def chartname_count
chartsheet_count
end
|
#chartsheet_count ⇒ Object
22
23
24
|
# File 'lib/write_xlsx/sheets.rb', line 22
def chartsheet_count
chartsheets.count
end
|
#chartsheets ⇒ Object
206
207
208
|
# File 'lib/write_xlsx/sheets.rb', line 206
def chartsheets
self.select { |worksheet| worksheet.is_chartsheet? }
end
|
#index_by_name(sheetname) ⇒ Object
197
198
199
200
|
# File 'lib/write_xlsx/sheets.rb', line 197
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
34
35
36
37
38
39
40
|
# File 'lib/write_xlsx/sheets.rb', line 34
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
26
27
28
|
# File 'lib/write_xlsx/sheets.rb', line 26
def sheetname_count
count - chartname_count
end
|
#tables ⇒ Object
189
190
191
|
# File 'lib/write_xlsx/sheets.rb', line 189
def tables
inject([]) { |tables, sheet| tables + sheet.tables }.flatten
end
|
#tables_count ⇒ Object
193
194
195
|
# File 'lib/write_xlsx/sheets.rb', line 193
def tables_count
tables.count
end
|
#visible_first ⇒ Object
210
211
212
|
# File 'lib/write_xlsx/sheets.rb', line 210
def visible_first
reject { |worksheet| worksheet.hidden? }.first
end
|
#worksheets ⇒ Object
202
203
204
|
# File 'lib/write_xlsx/sheets.rb', line 202
def worksheets
reject { |worksheet| worksheet.is_chartsheet? }
end
|
#write_chartsheet_files(package_dir) ⇒ Object
59
60
61
62
63
64
|
# File 'lib/write_xlsx/sheets.rb', line 59
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
116
117
118
119
120
|
# File 'lib/write_xlsx/sheets.rb', line 116
def write_chartsheet_rels_files(package_dir)
write_sheet_rels_files_base(
chartsheets, "#{package_dir}/xl/chartsheets/_rels", 'sheet'
)
end
|
96
97
98
99
100
101
102
103
|
# File 'lib/write_xlsx/sheets.rb', line 96
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
# File 'lib/write_xlsx/sheets.rb', line 122
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
# File 'lib/write_xlsx/sheets.rb', line 169
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
42
43
44
45
46
47
48
49
50
|
# File 'lib/write_xlsx/sheets.rb', line 42
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
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/write_xlsx/sheets.rb', line 105
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
# File 'lib/write_xlsx/sheets.rb', line 147
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/write_xlsx/sheets.rb', line 66
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
52
53
54
55
56
57
|
# File 'lib/write_xlsx/sheets.rb', line 52
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
163
164
165
166
167
|
# File 'lib/write_xlsx/sheets.rb', line 163
def write_worksheet_rels_files(package_dir)
write_sheet_rels_files_base(
worksheets, "#{package_dir}/xl/worksheets/_rels", 'sheet'
)
end
|