我正在尝试在超链接单元格中设置文本的前景色,但它似乎不起作用。
使用类似:sheet["A1"].color = "0000FF"
的方法适用于普通单元格,但不适用于超链接单元格
此代码只是在“Log”表单上创建了一个指向单元格D1的链接(工作正常)但是A1永远不会变成蓝色!
sheet.add_hyperlink :location => "'Log'!D1", :target => :sheet, :ref => "A1"
sheet["A1"].color = "0000FF"
谢谢!
答案 0 :(得分:6)
在将颜色应用于链接之前,有两件重要的事情要做:
样式通常应用于行,但在这种情况下,您希望将其应用于特定单元格。这是可能的,但您需要直接通过到工作表对象来处理单元格。此外,有点直觉,'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上值得一提!
答案 1 :(得分:0)
这似乎有效:
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'
你能发布一个没有设置颜色的代码的更大例子吗?
答案 2 :(得分:0)
显然,Axlsx仅将自定义样式应用于String数据类型。修复此问题,方法是将每列设置为:string,如下所示:
Sheet.add_row [ "1", "2", "3" ], :types => [:string, :string, :string]
谢谢兰迪!