2
我一直在使用电子表格宝石编写xls文件。 与电子表格宝石,合并的细胞可以被动态地进行基于这样Axlsx根据行列号合并单元格,就像在电子表格中一样gem
merge_cells(start_row, start_col, end_row, end_col)
我的代码的行号和列号片断
excel_file = Spreadsheet::Workbook.new
sheet1 = excel_file.create_worksheet :name => 'Example'
.
.#code blocks
.
.
start_col = 4
end_col = 0
wk_array_size.each_with_index do |v,i|
end_col = start_col+((v.to_i*2)-1)
sheet1.merge_cells(0, start_col, 0, end_col)
start_col = (end_col+3)
end
.
.#code blocks
.
sheet1.insert_row(0,week_names)
凡week_array_size是保持的尺寸的阵列散列基于哪些单元格被合并。
[11, 10, 3]
的合并将被动态地迭代阵列上完成week_array_size
start_col = 4
end_col = (4+(11*2)-1) = 25
(0, 4, 0, 25)
sheet1.merge_cells(0, 4, 0, 25)
.
.
(0, 28, 0, 47)
sheet1.merge_cells(0, 28, 0, 47)
.
.
(0, 50, 0, 55)
sheet1.merge_cells(0, 50, 0, 55)
一旦细胞已经被合并,则数据被写入到合并单元
sheet1.insert_row(0,week_names)
sheet1.row(0).height = 30
但对于xlsx文件,同样的方法似乎不适用于AXLSX gem,因为它使用字母 - 数字行列名称这个“A1:A2”。并且数据必须被合并,如下面的例子
p = Axlsx::Package.new
p.workbook.add_worksheet(:name => 'Example') do |sheet|
sheet.add_row ["Class Name", "", "", "Time"]
merge_cells "A1:A2"
merge_cells "A3:A4"
end
有没有办法合并基础上的行数和列数喜欢它是如何在电子表格宝石做过Axlsx细胞之前,空字符串值写的?也可以在合并单元格后写入数据?
第一种方法马上工作,我必须构建一个初始和最终列单元格值的数组,像这样* sheet.merge_cells sheet.rows [0] .cells [(4 ..(v-1))] * (((tmp_arry4 [i-1] + 3)-1)...(v-1))] *。也会尝试第二种方法。 – Yuge
关于初始化字符串,我无法合并空单元格,除非使用空字符串值填充它。我不得不建立一个数组,其行构成了axlsx表的行,这些行有空字符串值。 – Yuge