首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用openpyxl引用excel公式中的for循环中的当前迭代器?

如何使用openpyxl引用excel公式中的for循环中的当前迭代器?
EN

Stack Overflow用户
提问于 2022-08-30 12:07:37
回答 2查看 73关注 0票数 0

我有一个文件列表和一个工作簿模板,它将用于生成具有特定内容的其他工作簿。

我想在模板文件的第14列上引用for循环中每个文件的单元格N2的值。

我的代码当前抛出错误:

SyntaxError:(unicode错误)‘独角形转义’编解码器无法解码位置5-6的字节:截断\UXXXXXXXX转义。

在过去,我使用原始字符串格式,但是由于f字符串格式和公式语法,它引发了上述错误。

代码语言:javascript
复制
wb = load_workbook(os.path.join(r"C:\Users\pallist\AROTRON_OUT","template.xlsx"))
sheet = wb.worksheets[0]
files = glob.glob(".xlsx")

for f in files :
    for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=14, max_col=14):
        for cell in row :
            partner    = f"=r'C:\Users\pallist\AROTRON_IN\{f}Sheet1'!$N$2)"
            cell.value = partner
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-08-31 05:06:41

我把你的问题读了好几遍。根据我的理解,下面是你想要做的事情。如果要求是别的什么,请纠正..。

C:\Users\pallist\AROTRON_IN\

  • You希望在每个XLSX文件中输入多个xlsx文件,并读取Sheet1 1-Cell N2 -> N_row

  • 的内容,您有另一个文件C:\Users\pallist\AROTRON_OUT\template.xlsx -工作表。以上步骤读取的N2->N_max_row数据(对于每个输入文件)应添加到单元格A2、A3、A4中的该文件中。更新的行数将等于输入文件中的行数。

  • 将模板文件保存为C:\Users\pallist\AROTRON_OUT\文件夹中的新文件,其名称等于输入文件名。

  • 对AROTRON_IN文件夹

中的每个excel文件重复步骤2-4。

看看能不能..。如果有任何问题,请告诉我

代码语言:javascript
复制
outpath = "C:\Users\pallist\AROTRON_OUT" ## Output path
inpath = "C:\Users\pallist\AROTRON_IN" ## Input path

files = glob.glob(os.path.join(inpath, "*.xlsx")) ## All INPUT files

for f in files :  ## For each input file
    fwb=load_workbook(f)  ## Open each input file
    fsheet=fwb['Sheet1']
    i=2
    wb = load_workbook(os.path.join(inpath, "template.xlsx"))
    sheet = wb.worksheets[0]
    for row in fsheet.iter_rows(min_row=2, max_row=fsheet.max_row, min_col=14, max_col=14): ##Read N2 - last row in INPUT file
        for cell in row :
            sheet.cell(row=i,column=1).value = cell.value
            i=i+1
    wb.save(os.path.join(outpath,os.path.basename(f)))
票数 1
EN

Stack Overflow用户

发布于 2022-08-30 14:43:24

我认为导致问题的是在f-字符串中没有被识别的r'。尝试下面的代码,看看它是否有用

代码语言:javascript
复制
vrb = pathlib.Path(r'C:\Users\pallist\AROTRON_IN')
for f in files:
    new_vrb = pathlib.Path.joinpath(vrb, f"{f}Sheet1!$N$2)")
    entry = "=" + str(new_vrb)
    print(entry)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73542212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档