我使用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行。 设置适当的行高。
感谢。
答案 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