[英]openpyxl, how to close/shutdown .xlsx file/session after saving/using it?
据我了解,openpyxl中没有这样的功能: del ,清除缓存或垃圾,也许我错了。 我面临的问题:当我想保存第二个 generate.xlsx 文件时出现问题。 它以某种方式使用 previous.xlsx 文件(以及它的数据)并且无法合并某些单元格(来自 prev xlsx),因为它没有写入属性。
那么我如何关闭/关闭以前的 xlsx。 我什至尝试在生成新文件之前删除 xlsx 文件,但它也没有帮助
代码:(我无权发布仅图片链接):图片 1: src(代码,树)我如何保存:
wb.save(filename=self.fileName)
wb.close()
对于您不能重复使用同一个工作簿 object 来保存具有其他名称的文件,我并不感到惊讶。 如果需要重用这个 object,可以使用workbook_obj.save(...);workbook_obj.close();workbook_obj=openpyxl.load_workbook(...)
。 我没有测试过这段代码,但这是我最好的猜测。
我终于解决了我的问题。 我听从了@Michael Sohnen 的建议,但是,我仍然不确定 openpyxl 是否具有垃圾清理功能。 但没关系
解决方案:我没有创建新的 xlsx 文件,而是使用现有文件(如果存在),否则我生成一个新文件。 就这样。
探索:据我了解,他会下载这个特定的文件.xlsx,openpyxl 会知道要使用哪个文件,所以我们可以确定我们已经避免了数据冲突。
最终代码:
from openpyxl import Workbook, load_workbook
from django.conf import settings
from os import path, walk
class Base:
def __init__(self,filename:str):
self.fileName=filename
self.filePath=path.join(settings.BASE_DIR,'xlsxFiles',filename)
self.folderDir=path.join(settings.BASE_DIR,'xlsxFiles')
self.workBook=None
def getWorkSheet(self):
files=[]
for (dPath,dNames,dFiles) in walk(self.folderDir):
files.extend(dFiles)
if self.fileName in files:
with open(self.filePath, 'rb') as xlsx:
self.workBook=load_workbook(xlsx)
workSheet=self.workBook[self.workBook.sheetnames[0]]
return workSheet
else:
self.workBook=Workbook()
workSheet=self.workBook.active
return workSheet
def saveXlsx(self):
self.workBook.save(filename=self.filePath)
self.workBook.close()
老一:
class Base:
wb=Workbook()
sheet=wb.active
此外,我将 generated.xlsx 保存在另一个 code.py 中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.