Gem axlsx如何设置字体font_name?

时间:2013-04-09 12:14:50

标签: ruby axlsx

我使用axlsx gem来处理xlsx文件。 请帮我在工作表单元格中设置字体。

item_style = s.add_style :b => false, :sz => 9,  :font_name => 'courier',
      :alignment => { :horizontal => :left, :vertical => :center, :wrap_text => true}
row = sheet.add_row [item.name, item.price], :style => item_style

但是单元格中的字体仍然是'Arial'。 我需要任何'单声道宽度'字体。 我知道'courier'不是单宽字体,仅举例来说。

因为我有固定的列宽。 我想知道单元格中的文本何时需要2行。 设置适当的行高。

感谢。

3 个答案:

答案 0 :(得分:7)

看看你的风格宣言,对我来说似乎是合适的。冒着迂腐的风险,你应该把字体名称大写。

结合你的位和来自acsmith的好例子,以下代码在excel中应该可以正常工作。您使用哪些软件来查看Axlsx文件?并非所有电子表格软件都完全/实现了OOXML规范。

require 'axlsx'
p = Axlsx::Package.new
wb = p.workbook
item_style = wb.styles.add_style :b => false, :sz => 9,  :font_name => 'Courier',
  :alignment => { :horizontal => :left, :vertical => :center, :wrap_text => true}
wb.add_worksheet(:title => "Worksheet 1") do |sheet|
  sheet.add_row(["text in Courier"], :style => item_style)
end
p.serialize("courier.xlsx")

最好的

randym

答案 1 :(得分:2)

我建议尝试以下迷你示例并确保其有效。你需要在样式块中包含所有内容。

p = Axlsx::Package.new
  wb = p.workbook
  wb.styles do |s|
    courier = s.add_style :font_name => "Courier"
    wb.add_worksheet(:title => "Worksheet 1") do |sheet|
      sheet.add_row(["text in Courier"], :style => courier)
    end
  end
p.serialize("Courier.xlsx")

我没有使用过axlsx,但我相信所使用的任何样式都必须在样式块中声明,并在该块中使用。

答案 2 :(得分:1)

由我们Axlsx gem,font_name可以设置为这么多方式,这对我有用:

sheet.add_row ["some data", "","","", "", "","",""], :sz => 9,:height => 16,:font_name => "Arial"   -------------> first way

sheet.rows.last.cells[0].font_name = "Arial"  ----------> second way

sheet["A10"].font_name = "Arial"  -----------> third way

表示多行:

sheet["A1:E1"].each { |c| c.font_name = "Arial" } -------> fourth way

@arial_fontfamily = s.add_style :b => 'true', :sz => 10,  :font_name =>   'Arial'  --> small css definition  -------> fifth way

sheet["A1:E1"].each { |c| c.style = @arial_fontfamily  } -------> sixth way

sheet.add_row ["some data", "","","", "", "","",""], :sz => 9,:height => 16,:style => @arial_fontfamily   -------------> seventh way