Ruby AXLSX gem合并了一组以上的单元格

时间:2013-09-19 13:25:07

标签: ruby-on-rails ruby excel xlsx axlsx

我使用Ruby版本1.9.3和Rails版本3.0.20与axlsx ruby​​ gem生成一个文件,其结构相当复杂,涉及cellmerging。宝石很棒,但是当我试图在一张纸上合并更多的1套单元时,我碰到了墙。

经验:

致电:

sheet.merge_cells("A1:A2")
sheet.merge_cells("B1:B2")

只有最后2个单元格(b1, b2)合并(a1, a2保持不变)。

3 个答案:

答案 0 :(得分:5)

这是一个使用最新的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'

最好的

randym

答案 1 :(得分:1)

这是我想要做的一个简单示例:

合并坐标为“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组坐标,结果每次只合并最后一组。

答案 2 :(得分:0)

好的我解决了我的问题。这是宝石版的一个问题。我使用了axlsx 1.10。 在更新了gem和所有依赖项后,它们就像一个魅力。

抱歉浪费时间。