Python 将文本输入到多个工作簿的 Excel 工作表列的下一个空单元格中

问题描述 投票:0回答:1

我有 30 个具有命名约定的工作簿(

myfile1.xlsm
myfile2.xlsm
myfile3.xlsm
、.. 等)。我想在所有 30 个工作簿的特定工作表
Q
的特定列
sheet1
的下一个空单元格中输入文本。下面的代码非常适合一个工作簿,但我需要对所有 30 个工作簿做同样的事情,所以我尝试将其放入 python 函数中,如何将下面的代码放入函数中,以便我可以将其应用于所有 30 个文件同时?

import openpyxl
from openpyxl import Workbook, load_workbook
from openpyxl.cell import Cell

wb = openpyxl.load_workbook('C:/Users/me/randomfolder/myfile1.xlsm',  keep_vba=True)
ws = wb["Sheet1"]

#insert text in the first empty cell in column Q starting from cell Q5
for row in ws['Q5:Q1000']:
cell = row[0]
if cell.value is None:
    cell.value = 'random text'
    break

#save file
wb.save(r'C:/Users/me/randomfolder/myfile1.xlsm')
python excel openpyxl
1个回答
1
投票

如果您的

.xlsm
文件位于同一目录中(在您的情况下为
"C:/Users/me/randomfolder"
),则可以使用
Path.glob
返回它们的路径并将它们作为
openpyxl.load_workbook
的参数传递
在 for 循环中一一进行。

试试这个:

from pathlib import Path
import openpyxl
from openpyxl import Workbook, load_workbook
from openpyxl.cell import Cell


files_directory = "C:/Users/me/randomfolder"

for file in Path(files_directory).glob("*.xlsm"):
    
    wb = openpyxl.load_workbook(file,  keep_vba=True)
    ws = wb["Sheet1"]

    #insert text in the first empty cell in column Q starting from cell Q5
    for row in ws['Q5:Q1000']:
        cell = row[0]
        if cell.value is None:
            cell.value = 'random text'
            break

    #save file
    wb.save(file)
© www.soinside.com 2019 - 2024. All rights reserved.