【问题标题】:Axlsx - Formatting text within a cellAxlsx - 格式化单元格内的文本
【发布时间】:2015-11-24 14:33:16
【问题描述】:

我似乎找不到任何关于是否可以用多个格式选项填充单个单元格的信息。

例如,我希望单元格 A1 填充文本: “你好世界,这是excel

这可能吗?如果可以,我用什么语法来做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby axlsx


    【解决方案1】:

    对于内联样式,请使用富文本。 Here is an example from the axlsx page:

      p = Axlsx::Package.new
      p.use_shared_strings = true
      wb = p.workbook
      wrap_text = wb.styles.add_style({:alignment => {:horizontal => :center, :vertical => :center, :wrap_text => true}}  )
      rt = Axlsx::RichText.new
      rt.add_run('I\'m bold, ', :b => true)
      rt.add_run('I\'m italic, ', :i => true)
      rt.add_run('I\'m strike' + "\n", :strike => true)
      rt.add_run('I\'m bold, italic and strike' + "\n", :b => true, :i => true, :strike => true)
      rt.add_run('I\'m style-less :D')
      wb.add_worksheet(:name => "RichText") do | sheet |
        sheet.add_row [rt], :style => wrap_text
      end
      p.serialize 'rich_text.xlsx'
    

    如果您只想对一个单元格应用多种样式,则需要不同的样式。有两种选择:

    首先,手动进行。基本上你说你的风格类型是:dxf。默认值为:xf。其他一切都是一样的。 From the docs on styles.rb:

    p = Axlsx::Package.new
    wb = p.workbook
    ws = wb.add_worksheet
    
    # define your styles
    profitable = wb.styles.add_style(:bg_color => "FFFF0000",
                               :fg_color=>"#FF000000",
                               :type => :dxf)
    
    ws.add_row ["Genreated At:", Time.now], :styles=>[nil, date_time]
    ws.add_row ["Previous Year Quarterly Profits (JPY)"], :style=>title
    ws.add_row ["Quarter", "Profit", "% of Total"], :style=>title
    ws.add_row ["Q1", 4000, 40], :style=>[title, currency, percent]
    ws.add_row ["Q2", 3000, 30], :style=>[title, currency, percent]
    ws.add_row ["Q3", 1000, 10], :style=>[title, currency, percent]
    ws.add_row ["Q4", 2000, 20], :style=>[title, currency, percent]
    
    ws.add_conditional_formatting("A1:A7", { :type => :cellIs, :operator => :greaterThan, :formula => "2000", :dxfId => profitable, :priority => 1 })
    f = File.open('example_differential_styling', 'w')
    p.serialize(f)
    

    其次,使用axlsx_styler gem。它使应用多种样式变得非常容易。

    【讨论】:

      【解决方案2】:

      我猜你说的是这个宝石?

      https://github.com/randym/axlsx

      看来你不能:

      https://github.com/randym/axlsx/issues/134

      但是,这是一个旧线程,也许从那以后就已经实现了。尝试该页面上第一篇文章中的方法:发帖人抱怨它不起作用,但值得一试。

      实际上,进一步阅读,似乎有人添加了 RichText 格式选项,应该允许这样做。不过我不确定如何执行此操作,请查看相关文档。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-30
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多