使用openpyxl保存已编辑的.xslx工作表



我一直在尝试使用python编辑.xslx工作表,并成功地更改了单元格值,但当我使用openpyxl中的save命令,关闭程序并打开excel电子表格时,没有保存任何更改。我已经附上了下面的代码,如果你能帮助我,我将不胜感激。我曾尝试阅读其他stackoverflow帖子,但当我尝试他们的建议时,它仍然不起作用,所以我转向在这里创建我的第一篇帖子。

def editStock(choice, edit, stockSymbol):
sheet = setup()
stockRow = getStockRow(stockSymbol)
if choice == 7 or choice == 3 or choice == 2 or choice == 1:
print("Before")
print(sheet.cell(row = stockRow, column = choice).value)
sheet.cell(row = stockRow, column = choice).value = edit
print("After")
print(sheet.cell(row = stockRow, column = choice).value)
else:
sheet.cell(row = stockRow, column = choice).value = float(edit)
workbook = getWorkBook()
workbook.save(filename="Stocks.xlsx")

这是我的setup():

def setup():
directory = "C:\Users\shrey\Desktop"
directory = directory.lower()
os.chdir(directory)
spreadname = "Stocks.xlsx"
workbook = openpyxl.load_workbook(spreadname)
sheet = workbook["Sheet1"]
return sheet

这是我的getWorkBook()供参考:

def getWorkBook():
directory = "C:\Users\shrey\Desktop"
directory = directory.lower()
os.chdir(directory)
spreadname = "Stocks.xlsx"
workbook = openpyxl.load_workbook(spreadname)
return workbook

这是我调用editStock():时的输出

Before
None
After
Dec-21-2021

证明它不起作用:日期没有改变

抱歉,图像不是很清楚,但2021年12月21日应该在"TSLA"之后

你可能真的应该制作一个单独的测试脚本并共享整个过程,因为你可能发布了工作完全正确的方法,人们通常会在堆栈溢出时要求这样做(我不能只获取你的代码并运行它;通常应该是这样(

我写了这个小剧本来看看事情是怎么回事,对我来说效果很好。但我注意到有两张的纸,叫做Sheet1。因此,请确保您正在查看不同的表格(选项卡(。一旦我发现了这一点,数据显示得很好。

当我运行它时,这段代码有效(包括如果文件已经存在(:

import os
import openpyxl
spreadname = "Stocks.xlsx"
sheetname = "THISONE"
if not os.path.exists(spreadname):
workbook = openpyxl.Workbook()
workbook.create_sheet(title=sheetname)
else:
workbook = openpyxl.load_workbook(spreadname)
sheet = workbook[sheetname]
c1 = sheet.cell(row=3, column=6)
c1.value = 123.456
c2 = sheet['B9']
c2.value = 456.321
workbook.save(spreadname)

具体地说,它创建一个称为";THSONE";数据就在那里。

最新更新