Как написать скрипт, который редактирует каждый файл Excel внутри папки - PullRequest
0 голосов
/ 05 февраля 2019

Я хочу создать скрипт, который записывает определенный текст в ячейку А1 каждого файла Excel внутри папки.Я не уверен, как заставить Python открывать каждый файл один за другим, вносить изменения в A1, а затем перезаписывать и сохранять исходный файл.

import os
import openpyxl

os.chdir('C:/Users/jdal/Downloads/excelWorkdir')
folderList = os.listdir()
for file in in os.walk():
    for name in file:
        if name.endswith(".xlsx" and ".xls")
        wb = openpyxl.load_workbook()
        sheet = wb.get_sheet_by_name('Sheet1')

sheet['A1'] = 'input whatever here!'
sheet['A1'].value
wb.save()

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я бы перебрал всю папку и использовал панды для чтения файлов как временных фреймов данных.Оттуда ими легко манипулировать.

Если вы находитесь в соответствующем каталоге:

import pandas as pd
import os

files = os.listdir()

for i in range(len(files)):
    if files[i].endswith('.csv'):

        # Store file name for future replacement
        name = str(files[i])

        # Save file as dataframe and edit cell
        df = pd.read_csv(files[i])
        df.iloc[0,0] = 'changed value'

        # Replace file with df
        df.to_csv(name, index=False)
0 голосов
/ 05 февраля 2019

Я вижу следующие ошибки в вашем коде:

У вас есть ошибка в .endswith, она должна быть

name.endswith((".xlsx",".xls"))

т.е. ее нужно кормитьс tuple разрешенных окончаний.

В вашем if отсутствует : в конце, и ваш отступ кажется сломанным.

Вы должны передать один аргумент .load_workbook и один аргумент.save, т.е. имя файла для чтения / записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...