gpt4 book ai didi

excel - 如何使用 Axlsx 将每列不同样式的数组写入 Excel

转载 作者:行者123 更新时间:2023-12-04 18:00:10 24 4
gpt4 key购买 nike

我希望能够使用 Axlsx gem 写出一个 Excel 电子表格,其中不同的样式应用于不同的列。

我一次写一整行的哈希数组,因此,我似乎无法根据需要对列进行不同的格式化。

我不知道怎么说,“对于 A-D 列使用默认样式,但是对于 E 和 F 列,使用水平居中对齐”。

require 'axlsx'

p = Axlsx::Package.new
wb = p.workbook

# Default Style for all cells
standard_text = wb.styles.add_style( :alignment => {:vertical=>:center, :wrap_text=>true} )

# Custom styling to be applied to cells in rows E and F only
custom_text = wb.styles.add_style( :alignment => {:horizontal=>:center} )

assessment_technology_hashes.each do |rows|
sheet.add_row(rows.values, :height => 35, :style => standard_text)
end

这是用 add_row 编写的 rows 哈希数组的结构:

{:vendor_name=>"vendor", :link=>"Link\n", :importance=>"Low Priority", :score=>"5", :overall_score=>"4.5", :match=>"Yes", :access=>"Anywhere", :title=>"Full Title"}
{:vendor_name=>"vendor2", :link=>"Link2\n", :importance=>"Medium Priority", :score=>"7", :overall_score=>"8.5", :match=>"Yes", :access=>"Typical", :title=>"Full Title"}
...
...

在这种情况下,正确的方法是使用所需的主要格式 standard_text 写入所有数据,然后在写入所有数据后应用自定义格式吗?

我认为这可能在循环中起作用,只在条件为真时才写出行,但它总是返回假:

sheet.add_row(rows.values, :height => 35, :style => custom_text) if rows.key?(:overall_score) || rows.key?(:match)

有人能指出正确的方向吗?

最佳答案

这是我的做法。

首先,我生成这样的样式:

p  = Axlsx::Package.new
wb = p.workbook
# styles
style_1 = wb.styles.add_style bg_color: '3492ff', font_name: 'Calibri'
style_2 = wb.styles.add_style bg_color: 'ff8800', font_name: 'Arial'

阅读我的样式后,我创建了一个工作表:

wb.add_worksheet(name: 'Example') do |sheet|

创建工作表后,我可以通过调用 add_row 添加数据。作为最后一个参数,我传递了样式数组。示例:

sheet.add_row ['Column 1', 'Column2'], style: [style_1, style_2]

通过这种方式,我可以为单个列的单元格设置样式。如果您不想应用 style_2,只需键入 [style_1, nil]

这是合并后的代码

p  = Axlsx::Package.new
wb = p.workbook
# styles
style_1 = wb.styles.add_style bg_color: '3492ff', font_name: 'Calibri'
style_2 = wb.styles.add_style bg_color: 'ff8800', font_name: 'Arial'
# worksheet
wb.add_worksheet(name: 'Example') do |sheet|
sheet.add_row ['Column 1', 'Column2'], style: [style_1, style_2]
end
end

关于excel - 如何使用 Axlsx 将每列不同样式的数组写入 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com