在写小程序时,业务比较喜欢用excel作为设置和数据存储的介质。每次启动小程序时,都是先打开excel,然后根据excel中的不同sheet中的数据来执行不同程序。在这个过程中,针对不同的节点有不同的处理方法,这边做一个简单总结。
1、用xlwings打开时应该不影响当前的业务操作,出现异常也要让文件正常
用以下代码可以确保文件是单独打开一个wps或者excel实现的,而不是和原来的wps或者excel有关联,并且确保出现异常情况不会导致文件异常
import xlwings as xw
import pandas as pd
from settings import excelFile
# excelFile 是一个excel文件的路径
# 用with 语句来新建一个app可以确保万一出现异常情况,也会把app退出
with xw.App(visible=False,add_book=False) as app:
# 用with 语句打开文件,可以确保万一出现异常情况,也能把文件关闭
with app.books.open(excelFile) as wb:
try:
# 读取excel中的数据时,我喜欢用df实现,df的数据操作比较方便
df:pd.DataFrame = wb.sheets('sheet1').range('A1').options(pd.DataFrame,expand='table',index=False).value
pass
# 用try 和 finally 可以确保万一出现异常情况,也会把文件保存
finally:
wb.save()
1、用xlwings打开excel时要确保文件没有被其他程序打开
try:
with open(excelFile,mode='a+',buffering=1,newline="")
pass
except PermissionError:
raise PermissionError(f"检测到【{execelFile}】已被打开,请关闭后重新运行程序")