2

我正在使用 Ruby 版本 1.9.3 和 Rails 版本 3.0.20 和axlsxruby​​ gem 来生成一个结构相当复杂的文件,涉及细胞合并。宝石很棒,但是当我试图在一张纸上合并更多的一组单元格时,我碰壁了。

经验:

调用后:

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

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

4

3 回答 3

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'

最好的

随机的

于 2013-09-23T00:06:05.387 回答
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 组坐标,结果每次只合并最后一组。

于 2013-09-23T11:38:38.543 回答
0

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

很抱歉浪费了时间。

于 2013-09-24T08:09:52.730 回答