voici mon code:
import openpyxl, pprint
wb = openpyxl.load_workbook('/Users/sarahporgess/Desktop/SSA1.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
data = {}
for row in range(1,sheet.max_row+1):
date = sheet['A' +str(row)].value
gamma = sheet['B' +str(row)].value
theta = sheet['C' +str(row)].value
ratio = float(gamma)/float(theta)
resultFile = open('SSA2.csv' , 'w')
resultFile.write( pprint.pformat(date))
resultFile.write( pprint.pformat(gamma))
resultFile.write( pprint.pformat(theta))
resultFile.write( pprint.pformat(ratio))
print(ratio)
sheet['D1']=ratio
resultFile.close()
print('Done.')
mon fichier Excel existant comporte actuellement trois colonnes: "date, gamma, thêta". Je veux ajouter une quatrième colonne appelée "ratio" qui est le rapport gamma/thêta. Comment ajouter une autre colonne à un document Excel existant à l'aide de python? Ce code crée un document Excel avec les 4 éléments imprimés dans une cellule
Il est plus facile d'utiliser le package Pandas
import pandas as pd
file_name = #Path to your file
df = pd.read_Excel(file_name) #Read Excel file as a DataFrame
df['Ratio'] = df['Gamma']/df['Theta']
#Display top 5 rows to check if everything looks good
df.head(5)
#To save it back as Excel
df.to_Excel("path to save") #Write DateFrame back as Excel file
À partir de votre question mise à jour, j'ai réécrit ma réponse.
Vous n'avez pas besoin d'utiliser une autre bibliothèque pour accomplir ce que vous essayez de faire. Voici une autre option pour accomplir ce que vous voulez.
import openpyxl
import pprint
wb = openpyxl.load_workbook('/Users/sarahporgess/Desktop/SSA1.xlsx')
sheet = wb.active
# you may also use the wb.get_sheet_by_name('Sheet1') method here.
data = {}
for row in range(1,sheet.max_row+1):
date = sheet.cell(row = row, column = 1) # use .cell() to get values of cells
gamma = sheet.cell(row = row, column = 2)
theta = sheet.cell(row = row, column = 3)
print(date, gamma, theta)
ratio = float(gamma)/float(theta)
new_wb = openpyxl.Workbook() # creates new workbook to be saved as results
# you can also open a wookbook here instead but I wrote it to create a results workbook as I didnt already have one.
new_sheet = new_wb.active
new_sheet['A1'] = pprint.pformat(date)
new_sheet['B1'] = pprint.pformat(gamma)
new_sheet['C1'] = pprint.pformat(theta)
new_sheet['D1'] = pprint.pformat(ratio)
print(ratio)
# save new workbook as SSA2
new_wb.save('/Users/sarahporgess/Desktop/SSA2.xlsx')
print('Done.')
Votre code ne précise pas si vous souhaitez imprimer le résultat ou modifier le fichier existant. Si vous modifiez un fichier Excel, vous souhaiterez peut-être créer une formule et laisser Excel faire le calcul pour vous.
import openpyxl
wb = openpyxl.load_workbook('/Users/sarahporgess/Desktop/SSA1.xlsx')
sheet = wb['Sheet1']
for row in sheet:
date, gamma, theta = row
ratio = theta.offset(column=1)
ratio.value = "=B{0}/C{0}".format(theta.row) # if you want the formula
# ratio.value = gamma/theta # if you just want the calculation
wb.save(…)