我正在使用 Ruby 版本 1.9.3 和 Rails 版本 3.0.20 和axlsx
ruby gem 来生成一个结构相当复杂的文件,涉及细胞合并。宝石很棒,但是当我试图在一张纸上合并更多的一组单元格时,我碰壁了。
经验:
调用后:
sheet.merge_cells("A1:A2")
sheet.merge_cells("B1:B2")
只有最后 2 个单元格(b1, b2
)被合并(a1, a2
保持不变)。
我正在使用 Ruby 版本 1.9.3 和 Rails 版本 3.0.20 和axlsx
ruby gem 来生成一个结构相当复杂的文件,涉及细胞合并。宝石很棒,但是当我试图在一张纸上合并更多的一组单元格时,我碰壁了。
经验:
调用后:
sheet.merge_cells("A1:A2")
sheet.merge_cells("B1:B2")
只有最后 2 个单元格(b1, b2
)被合并(a1, a2
保持不变)。
这是一个使用最新 2.0.1 版本的 axlsx gem 合并两个单元格范围的示例。这里要了解关于 axlsx 的重要一点是它是一个稀疏生成器。只有您专门添加到工作表中的单元格可以合并、设置样式、编辑等。在您的示例中,您只添加一行单元格,因此只能合并这些单元格。
如果您添加另一行
sheet.add_row [nil, nil, nil, nil]
我希望您在打开 excel 时会发现单元格按预期合并。
https://github.com/randym/axlsx/
require 'axlsx'
package = Axlsx::Package.new
package.workbook do |workbook|
workbook.add_worksheet name: 'merged_cells' do |sheet|
4.times do
sheet.add_row %w(a b c d e f g)
end
sheet.merge_cells "A1:A2"
sheet.merge_cells "B1:B2"
end
end
package.serialize 'merged_cells.xlsx'
最好的
随机的
这是我想要做的一个简单的例子:
合并坐标为“A1:A2”和“B1:2”的单元格
我使用的代码如下:
4.times do
sheet.add_row %w[a b c d e]
end
sheet.merge_cells "A1:A2"
sheet.merge_cells "B1:B2"
这是我得到的结果(在左侧)和我想要得到的结果(在右侧)的图像:
https://docs.google.com/file/d/0B9eWbU2sLebWdEIya1B5cUpya2c/edit?usp=sharing
如您所见,只有最后一组坐标(“B1:B2”)被合并,而前一组坐标(“A1:A2”)保持不变。我尝试合并超过 2 组坐标,结果每次只合并最后一组。
好的,我解决了我的问题。这是 gem 版本的问题。我用的是 axlsx 1.10。更新 gem 和所有依赖项后,它就像一个魅力。
很抱歉浪费了时间。