我想打开excel文件,取一个范围并将其复制到文件中,新范围在prevision下。下面的代码是python,但是对于每个文件我都会收到一个对话框窗口,在这个窗口中我必须授予对文件的访问权限。我应该怎么做才能避免呢?
我允许磁盘应用程序(水蟒,Python,Excel,XlWings),这没有帮助。
import os
import xlwings as xw
import pandas as pd
def main():
source = ['/Users/username/Documents/work/out/out']
target_wb = xw.Book('/Volumes/Transend_Mac/Coding/Py/ Скрипты/Work_UZ/Target/Target.xlsx')
target_sh = target_wb.sheets[0]
iRow = 1
for root, dirs, files in os.walk(source[0]): # Список всех файлов и папок в директории folder
for file in files:
if (os.path.splitext(file)[1]=='.xlsx' or os.path.splitext(file)[1]=='.xls'):
source_wb = xw.Book(root+'/'+file,read_only=True,ignore_read_only_recommended=True)
source_sh = source_wb.sheets.active
sheet_name=source_sh.name
source_wb.close()
pdd=pd.read_excel(root+'/'+file, sheet_name)
#вычсляем кол-во строк в таблице
lenPdd = len(pdd.index)+1
#получаем id заявки
sRoot=str(root)
sIdPi=sRoot[sRoot.rfind('/')+1:]
#создаем столбец с номером id заявки
list_IdPi = [sIdPi for i in range(0,lenPdd-1)]
pdd['Pi_id']=list_IdPi
#pdd1=pdd.append(list_IdPi)
print('A'+str(iRow))
target_sh.range('A'+str(iRow)).options(index = False).value = pdd
iRow=iRow+lenPdd
else:
print (root+'/'+file)
target_wb.save()
target_wb.close()
if __name__ == '__main__':
main()
1条答案
按热度按时间qlfbtfca1#
当我试图使用xlwings打开Excel文件时,我似乎也遇到了这个问题,而我已经授权我的python IDE、Excel、Anaconda和终端完全访问磁盘。由于我使用Mac OS,这里我提供了一个替代解决方案:更改Excel文件的权限设置。
由于系统要求对Excel文件授权,我想可能是Excel文件没有授权给其他人直接编辑;我只是试图右键单击Excel文件(在您的情况下为
Target.xlsx
),转到信息,然后将“每个人”的权限更改为“读写”。不确定我的猜测是否正确,即使我这样做了,似乎“有时”系统仍然要求我授予对Excel文件的访问权限,但至少有时没有。
希望这能有所帮助&其他面临这个问题的人可以分享你的想法。