如何使用python将列添加到现有的excel文件?

这里是我的代码:

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

我现有的excel文件目前有三栏:“date,伽玛,theta”。 我想添加一个名为“ratio”的第四列,即gamma / theta的比率。 如何使用python添加另一列到现有的Excel文档? 这段代码创build一个excel文档,其中4个元素打印到一个单元格中

使用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 

从你更新的问题,我已经改写了我的答案。

你不需要使用另一个库来完成你正在做的事情。 这是另一个完成你想要的select。

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

从代码中不清楚您是要打印结果还是编辑现有文件。 如果您正在编辑一个Excel文件,那么您可能需要创build一个公式,让Excel为您做计算。

 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(…)