Как вернуть первое и последнее значения в столбце с помощью openpyxl и изменить заголовок файла Excel на них? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь изменить заголовок пяти файлов, чтобы отображать первое и последнее значения в столбце в этом файле, разделенные знаком "_"

Например, в столбце, если у меня есть значения 0001, 0002,0003,0004, я хочу найти первое и последнее значение и изменить заголовок файла на 0001_0004

files=os.listdir(os.getcwd())
for file in files:
if file.endswith('.xlsx'):
    print(file)
    try: 
        wb=openpyxl.load_workbook(os.path.join(os.getcwd(),file))
        print('reading workbook'+file)
        ws=wb['Sheet1'] 
        for row in range(7, ws.max_row+1):
            cell = ws.cell(row = row, column = 7)
            #code to change name
            wb.save(os.path.join(os.getcwd(),file))
        print('file title changed') 
    except Exception as e:
        print(e)

Ответы [ 2 ]

2 голосов
/ 20 июня 2019
files=os.listdir(os.getcwd())
all_xls = []
for f in files:
   if f.endswith('.xlsx'):
       all_xls.append(f.replace('.xls', '')

all_xls.sort()
first_file = all_xls[0]
last_file = all_xls[-1]
#Do your renaming using os.rename('src', 'dest')

Это просто быстрое решение, о котором я мог подумать, и это не оптимальное решение, его можно настроить, чтобы получить желаемые результаты быстрее.

надеюсь, это поможет.

0 голосов
/ 26 июня 2019
path = os.getcwd()
files = os.listdir(os.getcwd())
for filename in files:
    if filename.endswith('.xlsx'):
        print(filename)
        wb = openpyxl.load_workbook(os.path.join(os.getcwd(),filename), data_only = True)
        ws = wb['Sheet1']
        final = ws.max_row
        original_file = str(filename)
        cell = ws['G7'].value
        filenamep1 = cell
        cell = ws.cell(row = final, column = 7).value
        filenamep2 = cell
        os.rename(original_file, path + '\\' + filenamep1 + '_' + filenamep2 + '_' + 
        original_file)
print("All files renamed")

Это то, что я использовал для переименования файла

...