7

私はxlsxファイルを操作するためにaxlsx gemを使用しています。シートのセルにフォントを設定するのを手伝ってください。

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行になるかを知りたいです。適切な行の高さを設定します。

ありがとう。

4

3 に答える 3

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")

一番

ランダム

于 2013-04-10T11:06:29.747 に答える
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 をあまり使用していませんが、使用するすべてのスタイルはスタイル ブロックで宣言し、そのブロック内で使用する必要があると考えています。

于 2013-04-09T18:30:48.490 に答える
2

私たち 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
于 2015-12-03T12:05:13.257 に答える