Пример кода python для замены значения подстроки в ячейке xlsx - PullRequest
0 голосов
/ 01 апреля 2020

Пробный фрагмент кода примера:

for row in range(1,sheet.max_row+1):
    for col in range(1, sheet.max_column+1):
        temp = None
        cell_obj = sheet.cell(row=row,column=col)
        temp = re.search(r"requestor", str(cell_obj.value))
        if temp:
            if 'requestor' in cell_obj.value:
                cell_obj.value.replace('requestor',
                                       'ABC')

Попытка заменить ячейку xlsx, содержащую значение «Имя клиента: запросчик», значением «Имя клиента: AB C». Как это можно легко достичь?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Просто будь проще. Вместо re и replace ищите заданное значение и переопределите ячейку.

В приведенном ниже примере вы также можете изменить «имя клиента»:

wb = openpyxl.load_workbook("example.xlsx")
sheet = wb["Sheet1"]

customer_name = "requestor"
replace_with = "ABC"

search_string = f"Customer name: {customer_name}"
replace_string = f"Customer name: {replace_with}"

for row in range(1, sheet.max_row + 1):
    for col in range(1, sheet.max_column + 1):
        cell_obj = sheet.cell(row=row, column=col)
        if cell_obj.value == search_string:
            cell_obj.value = replace_string

wb.save("example_copy.xlsx")  # remember that you need to save the results to the file
0 голосов
/ 06 апреля 2020

Я нашел свой ответ в этом сообщении: https://www.edureka.co/community/42935/python-string-replace-not-working

Функция замены не сохраняет результат в той же переменной. Отсюда и решение выше:

mvar = None
for row in range(1,sheet.max_row+1):
    for col in range(1, sheet.max_column+1):
        temp = None
        cell_obj = sheet.cell(row=row,column=col)
        temp = re.search(r"requestor", str(cell_obj.value))
        if temp:
            if 'requestor' in cell_obj.value:
                mvar = cell_obj.value.replace('requestor',
                                       'ABC')
                cell_obj.value = mvar
...