Python openpyxl循环遍历文件夹

时间:2016-09-09 22:02:42

标签: python excel openpyxl smtplib

我有工作代码,但需要永远循环浏览大约35个.xlsx文件,读取J列中的值(包括将单元格值与字典进行比较),然后进行一些比较。

基本上,它是一个电子邮件通知系统,a)在J列的某个单元格中找到一个人的姓名,然后检查其在A列中的偏移日期。如果A列中的日期是将来某天(明天)它向该人发送提醒电子邮件。

想知道是否有人愿意提供一些反馈!我有一种感觉,即多个fors和if正在减慢速度,但没有经验足以知道如何改进它。

感谢任何输入!有时即使是一点点暗示通常也会给我足够的信息来自行解决问题。

try:                                                    
for i in os.listdir(os.chdir(thisdir)):
    if i.endswith(".xlsx"):
        workbook = load_workbook(i, data_only=True)
        try:
            ws = workbook[wsvar]
            cell_range = ws['j3':'j110']
            for row in cell_range: # This is iterating through rows 1-7
                for cell in row: # This iterates through the columns(cells) in that row
                    if cell.value:
                        if cell.offset(row=0, column =-9).value.date() == (datetime.now().date() + timedelta(days=1)):

                            for name, email in sublist.items():
                                #send the emails
                                if cell.value == name:
                                    email = sublist[cell.value]
                                    datconv = str(cell.offset(row=0, column=-9).value.date().strftime("%m/%d/%Y"))
                                    program = cell.offset(row=0, column=-7).value
                                    #if there are hours in the "hours worked column, use those"
                                    if cell.offset(row=0, column=-5).value:
                                        hours = cell.offset(row=0, column=-5).value
                                    #else, pick up the scheudled hours
                                    else:
                                        hours = cell.offset(row=0, column=-6).value
                                    #SMTP code for email goes here, but it doesn't seem to be the culprit

1 个答案:

答案 0 :(得分:0)

我不知道这是否有帮助,它在类似的情况下适用于我,首先我红色并将我拥有的所有文件(3600)附加到List,然后我将它们循环通过列表,它运行得更快。

祝你好运