2017-06-14 7 views

Répondre

0

Voici un exemple d'ajout d'une formule à une cellule existante.

pk = Axlsx::Package.new 
wb = pk.workbook 
sheet = wb.add_worksheet(name: 'Test') 
sheet.add_row(['First', 'Second', 'Third']) 
sheet.add_row([1, 1, 1]) 
sheet.add_row([2, 2, 2]) 
sheet.add_row([3, 3, 0]) # we will be updating the last cell in this row (C4) 
sheet.add_row([4, 4, 4]) 

cell = sheet['C4'] 
cell.type = :string   # it is important to ensure the type of the cell is set before adding the formula 
cell.value = '=A3+A4' 

pk.serialize("example.xlsx") 

Voici un exemple de mettre à jour dynamiquement la formule cellulaire:

pk = Axlsx::Package.new 
wb = pk.workbook 
sheet = wb.add_worksheet(name: 'Test') 
sheet.add_row(['First', 'Second', 'Third']) 
sheet.add_row([1, 1, 1]) 
sheet.add_row([2, 2, 2]) 
sheet.add_row([3, 3, 3]) 
sheet.add_row([4, 4, 4]) 

cells = sheet["C2:C5"] # select an array of cells 

cells.each do |cell| 
    row_index = cell.row.index + 1 
    cell.type = :string 
    cell.value = "=SUM(A#{row_index}:B#{row_index})" 
end 

pk.serialize("example2.xlsx") 
+0

Merci pour cela. Savez-vous s'il est possible d'affecter les formules à la colonne entière. Donc dans votre cas, toutes les colonnes C seront l'addition des colonnes A et B correspondantes – singard

+0

J'ai mis à jour la réponse avec un exemple supplémentaire. –