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

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

 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: есть ли способ проверить, существует ли в рабочей тетради конкретный лист?(поиск по названию листа)

1 Ответ

0 голосов
/ 07 декабря 2018

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

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
...