Изменить формат даты в одном столбце (заменить, вставить столбец, добавить), есть ли способ обновить? ..это должно быть просто - PullRequest
0 голосов
/ 15 июня 2019

Необходимо изменить формат даты в столбце Excel.

Я могу попасть в одну ячейку, но в случае обновления целого столбца с помощью «правильного_дата» я застрял

wb = load_workbook(...)
ws = wb['Lista']
daty_wystawienia = ws['G']

# This solution works but assigning values to first column under the chart

for daty in daty_wystawienia:
    date_string = daty.value
    if re.search('[0-9-]', str(date_string)):
        proper_date = datetime.datetime.strptime(date_string, '%d-%m-%Y').strftime('%y.%m.%d')
        for row in range(1): 
            ws.append([proper_date])  

#tried to make last line: daty_wystawienia.append([proper_date]) but got:
AttributeError: 'tuple' object has no attribute 'append'

wb.save(...)



# Also tried this, and only this seems to work. Meaning replacing values with other correctly formatted, but I need this applied to whole column at once:


wb = load_workbook(...)
ws = wb['Lista polis']
daty_wystawienia = ws['G']


ws['G6'] = "19.05.06"
ws['G7'] = "19.05.06"
ws['G8'] = "19.05.06"

ws['G10'] = "19.05.07"
ws['G11'] = "19.05.07"

# or replace

for i in ws['G']:
        ws['G9'] = ws['G9'].value.replace('06-05-2019', '10000000000')


wb.save(...)

Есть ли способ заменить, добавить, переопределить существующие значения в Excel, используяopenpyxl.Я застрял на этом.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

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

def date_of_issuance():
    for i in ws.iter_rows():
        for cell in i:
            d_w = 'Date of issuance'
            if cell.value == d_w:
                c = cell.column
                col = column_index_from_string(c)
                r = cell.row
                for daty in ws[c]:
                    date_string = daty.value
                    if re.search('[0-9]', str(date_string)):
                        proper_date = datetime.datetime.strptime(date_string, '%d-%m-%Y').strftime('%y-%m-%d')
                        date = datetime.datetime.strptime(proper_date, '%y-%m-%d').date()
                        for j in range(1):
                            ws.cell(row=r+1, column=col, value=date)
                            r += 1
0 голосов
/ 04 июля 2019

Если вы хотите, чтобы Excel изменил формат ячейки, чтобы отображать дату так, как вам нравится, я сделал это для столбца:

from openpyxl import load_workbook

book = load_workbook('Example.xlsx')
ws = book['Sheet1']

for x in range (1, 500):
    _cell = ws.cell(x,1)
    _cell.number_format = '[$-en-GB]dd-mmm-yyyy' 

book.save("Dates.xlsx")
...