4

ハイパーリンクセルにテキストの前景色を設定しようとしていますが、機能しないようです。

次のようなものを使用するsheet["A1"].color = "0000FF"と、通常のセルでは正常に機能しますが、ハイパーリンクされたセルでは機能しません

このコードは、「ログ」シートにセルD1へのリンクを作成するだけです(これは正常に機能します)が、A1が青色になることはありません。

sheet.add_hyperlink :location => "'Log'!D1", :target => :sheet, :ref => "A1" sheet["A1"].color = "0000FF"

ありがとう!

4

3 に答える 3

8

リンクに色を適用する前に、次の 2 つの重要な作業を行う必要があります。

  1. スタイル内で色を定義する必要があり、
  2. 問題のセルの正確なアドレスを知っている必要があります。

スタイルは通常行に適用されますが、今回は特定のセルに適用したいと考えています。これは可能ですが、シート オブジェクトを介してセルを直接アドレス指定する必要があります。また、直観に反して、「add_hyperlink」メソッドは、Cell ではなく Sheet オブジェクトで使用できます。ということで、こちらも気をつけてください。

リンクを含むセルにスタイルを適用する方法の例を次に示します。

p = Axlsx::Package.new
p.workbook do |wb|
  wb.styles do |s|
    blue_link = s.add_style :fg_color => '0000FF'
    wb.add_worksheet(:name => "Anchor Link Test") do |sheet|
      sheet.add_row ['Title', 'Link']

      # Define the row here, we will use that later
      row = sheet.add_row ['Google', 'Click to go']

      # Add the hyperlink by addressing the column you have used and add 1 to the row's index value.
      sheet.add_hyperlink :location => "http://www.google.com", :ref => "B#{row.index + 1}"
      sheet["B#{row.index + 1}"].style = blue_link
    end
    s = p.to_stream()
    File.open("anchor_link_test.xlsx", 'w') { |f| f.write(s.read) }
  end
end  

最後の注意: このスプレッドシートは、メソッドを使用して作成したことに注意してください。

s = p.to_stream()
File.open("anchor_link_test.xlsx", 'w') { |f| f.write(s.read) }

Axlsx Github Issues Pageに提示された証拠があり、ファイルを書き出すこの方法は、

p.serialize

StackOverflow のどこかで言及するに値すると思いました!

于 2013-01-11T05:10:16.193 に答える
1

これはうまくいくようです:

require 'axlsx'
p = Axlsx::Package.new
ws = p.workbook.add_worksheet
ws.add_row ['hoge-hoge']
ws['A1'].color = '0000FF'
ws.add_hyperlink :location => 'F6', :target => :sheet, :ref => 'A1'
p.serialize 'where_is_my_color.xlsx'

色を設定しないコードのより大きな例を投稿できますか?

于 2012-10-04T01:23:05.977 に答える
0

どうやら Axlsx はカスタム スタイルを String データ型にのみ適用しているようです。次のように、各列をタイプ :string に設定することでこれを修正しました。

Sheet.add_row [ "1", "2", "3" ], :types => [:string, :string, :string]

ありがとうランディ!

于 2012-10-05T12:52:51.577 に答える