ruby-on-rails - Ruby:axlsx:如何为选定的单元格加粗并更改 BG 颜色?
问题描述
我正在使用 axlsx ruby gem 创建一个 Excel 文件,但我不知道如何将粗体和背景样式仅应用于选定的单元格(此处为 State Cells)
我通过了 col_style 和 row_style 以及 add_conditional_formatting 等方法,但无法完全解决,如何在我的代码中使用它,或者它是否真的对我的要求有帮助。
当前数据结构:
work = [ {:state=>"Texas", :details=>{}}
{:city=>"LasVegas", :details=>{"Rob"=>"Doctor", "Dino"=>"Artist"}}
{:city=>"El paso", :details=>{"Jer"=>"Journalist", "Milo"=>"Vet"}}
{:state=>"Florida", :details=>{}}
{:city=>"Miami", :details=>{"Jake"=>"Army", "Steve"=>"Retired"}}
{:city=>"Tampa", :details=>{"Cohen"=>"Teacher", "Mike"=>""}} ]
我的代码片段:
只有 Excel 部分
require 'axlsx'
p = Axlsx::Package.new
p.workbook.add_worksheet(:name => "Data") do |sheet|
style1 = sheet.styles.add_style(:bg_color => "EF0920", :fg_color => "FFFFFF", b:true)
style2 = sheet.styles.add_style(:bg_color => "00FF00", :fg_color => "FFFFFF", b:true)
sheet.add_row ["State", "City", "Name", "Profession"], :style => style1
work.each do |val|
sheet.add_row [ val[:state], val[:city] ]
val[:details].each do |k, v|
sheet << ["", "", k, v]
end
end
sheet.add_row
end
p.serialize 'Data.xlsx
我试图在每次
state
使用之间添加一个空行,sheet.add_row
但它不起作用。(为了易读性)想要加粗并将格力背景仅应用于州的单元格
最后是格式不匹配。
我希望我已经清楚地传达了我的问题,并提前感谢您的帮助
当前格式
预期格式
解决方案
style 方法为每个单元格获取一个数组,因此如果您执行以下操作,您将有一个粗体“状态”字段,该行中的其他单元格缺少样式,除非特别添加:
embolden_style = style.add_style(b: true,bg_color: '78F2FF')
sheet.add_row ["State", "City", "Name", "Profession"], style: [embolden_style, nil, nil, nil]
推荐阅读
- postgresql - 将列乘以一的不同值
- unix - 如何记录我的 SFTP 命令的输出
- mysql - 从另一个表中选择每个组和关联行的最高值,按最高值排序
- ios - SwiftUI DatePicker 绑定可选日期,有效 nil
- android - mp4parser - 如何开始使用?
- timeout - 使用 puppeteer,在 TimeoutError 上截取当前状态
- c# - 错误 CS0246:找不到类型或命名空间名称“IApplicationBuilderExtensions”
- python - 为什么BST(二叉搜索树)这么慢
- java - 在通用 Cplex 回调中访问分支和切割节点 ID
- graphql - `Cannot use e "__Schema" from another module or realm.` 和 `使用 ApolloClient 复制 "graphql" 模块