Rails Axlsx Gem: Как переключаться между рабочими листами в рабочей книге

Я пишу в рабочую книгу, где на каждой итерации по массиву я добавляю новую рабочую таблицу в рабочую книгу.

 a = [1,2,3,4]
    p = Axlsx::Package.new
    a.each do |arr|        
        p.workbook.add_worksheet(:name => "Name Sheet_#{arr}") do |sheet|
         sheet.add_row(["#","Name", "Status"]
         sheet.add_row(["1","ABC", 1]
         sheet.add_row(["2","XYZ", 0]
        end
        p.workbook.add_worksheet(:name => "Address Sheet_#{arr}") do |sheet|
         sheet.add_row(["#","Address", "Status"]
         sheet.add_row(["1","NYC", 0]
         sheet.add_row(["2","LA", 1]
        end
#add a summary worksheet

    end

Теперь я хочу добавить сводный лист, в котором будут записи о статусе 1 со всех листов. Сводная таблица будет добавлена ​​только один раз (Axlsx все равно выдаст ошибку дубликата)

1: Может ли Axlsx открыть рабочий лист в рабочей книге и добавить к нему строки? 2: есть ли способ проверить, существует ли в рабочей тетради конкретный лист? (поиск по названию листа)

0 ответов

Вы можете открыть существующий лист, выбрав его по имени листа (которое должно быть уникальным).

1. Может ли Axlsx открыть рабочий лист в рабочей книге и добавить к нему строки?

p = Axlsx::Package.new

# Create the worksheet
p.workbook.add_worksheet(:name => "Name Sheet_1") do |sheet|
    sheet.add_row ["#","Name", "Status"]
    sheet.add_row ["1","ABC", 1]
    sheet.add_row ["2","XYZ", 0]
end

# Select the worksheet
sheet = p.workbook.worksheets.select {|w| w.name == "Name Sheet_1"}.first
sheet.add_row [1, 2, 3]

2. Могу ли я проверить, существует ли в рабочей тетради конкретный лист? (поиск по названию листа)

p = Axlsx::Package.new 

# Create the worksheet
p.workbook.add_worksheet(:name => "Name Sheet_1") do |sheet|
    sheet.add_row ["#","Name", "Status"]
    sheet.add_row ["1","ABC", 1]
    sheet.add_row ["2","XYZ", 0]
end

# Search for the worksheet by name   
p.workbook.worksheets.any? {|worksheet| worksheet.name == "Name Sheet_1"} # true
p.workbook.worksheets.any? {|worksheet| worksheet.name == "Name Sheet_2"} # false
Другие вопросы по тегам