ruby - 在 axlsx 中设置超链接文本颜色

标签 ruby colors hyperlink axlsx

我试图在超链接单元格中设置文本的前景色,但它似乎不起作用。

使用类似:sheet["A1"].color = "0000FF" 对普通单元格有效,但对超链接单元格无效

此代码只是在“日志”工作表上创建了一个指向单元格 D1 的链接(工作正常),但 A1 永远不会变成蓝色!

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

谢谢!

最佳答案

在将颜色应用到链接之前有两件重要的事情要做:

  1. 您必须在样式中定义颜色,并且
  2. 您必须知道相关单元格的确切地址。

样式通常应用于行,但在本例中,您希望将其应用于特定的单元格。这是可能的,但您需要通过工作表对象直接对单元格进行寻址。此外,有点违反直觉的是,'add_hyperlink' 方法可用于 Sheet 对象,而不是 Cell。所以也要注意这一点。

下面是如何将样式应用于包含链接的单元格的示例:

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

有证据显示on the Axlsx Github Issues Page 这表明这种写出文件的方式明显快于

p.serialize

只是认为在 StackOverflow 的某个地方值得一提!

关于ruby - 在 axlsx 中设置超链接文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12711274/

相关文章:

python - 最简单的反向代理

ruby - IRB 历史不适用于 Ruby 2.3.0

javascript - HEX 到 HSL 转换 javascript

matlab - Matlab 中的二维线渐变颜色

r - R中不同绘图具有相同色标的色带

button - Bootstrap : unable/disable <a> link bootstrap using javascript

ruby-on-rails - 获取字段最大值的对象[Mongoid]

ruby - 你能在 Ruby 中定义 <=> 然后自动定义 ==、>、<、>= 和 <= 吗?

javascript - 在 jxbrowser 上消费链接事件

css - TinyMCE 链接按钮和弹出窗口 : get rid of items in class dropdown list