簡體   English   中英

如何使用 rubyXL 3.4.0 或更高版本隱藏列?

[英]How do I hide columns using rubyXL 3.4.0 or later?

如何使用 rubyXL 3.4.0 或更高版本隱藏列?

此處的示例 ( https://github.com/weshatheleopard/rubyXL/issues/145 ) 似乎已過時。 sheet.cols.find現在返回一個Enumerator ,因此沒有hidden方法。)

來自 rubyXL 問題 #145 的代碼:

# Assuming that the cells/rows/cols are respectively locked in the test file:
doc = RubyXL::Parser.parse('test.xlsx')
sheet = doc.worksheets[0]
sheet.sheet_data.rows[0].hidden
=> nil
sheet.sheet_data.rows[1].hidden
=> true
(c = sheet.cols.find(0)) && c.hidden
=> nil
(c = sheet.cols.find(1)) && c.hidden
=> true

xf = doc.workbook.cell_xfs[c.style_index || 0]
xf.apply_protection && xf.protection.locked
=> true
xf.apply_protection && xf.protection.hidden
=> true

您提供的示例是不隱藏列
但要獲得列的隱藏狀態

看起來 rubyXL 沒有隱藏列的功能
它的主要目的是解析xlsx文件
隱藏屬性只供閱讀,你不能用 rubyXL 改變它
我發現這個 gem, write_xlsx能夠隱藏列/行
但相比之下,它是用於創建 xlsx
他們在 github repo 中有關於如何隱藏的示例
我沒有找到任何其他可以輕松實現此目標的 gem(隱藏現有 xlsx 文件中的特定列)
也許你可以

  1. 使用 rubyXL 讀取原始 xlsx 文件
  2. 使用從 rubyXL 解析的數據並使用 write_xlsx gem 制作一個全新的 xlsx 文件(在此步驟中隱藏目標列)
  3. 替換原來的 xlsx 文件

我想到了:

以下代碼確實生成了一個隱藏了 B 列的新工作簿:

require "rubyXL"
require "rubyXL/convenience_methods"

workbook = RubyXL::Workbook.new
sheet = workbook.worksheets.first

sheet.add_cell(0,0, "Sam")
sheet.add_cell(0,1, "George")
sheet.add_cell(0,2, "John")

sheet.cols.get_range(1).hidden = true

workbook.write('hide_b.xlsx')

(我還在此處放置了此代碼的副本: https ://github.com/kurmasz/rubyXL-recipes)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM