• Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    o5a,
    Создает в файле новый Лист2 и в нем пусто все равно. Не могу понять почему не сохраняет ?


    import openpyxl
    import re

    wb = openpyxl.load_workbook('C:\\Users\\OD\\Desktop\\python_scripts\\book1.xlsx')
    sheet = wb['Лист1']

    log = dict()
    # перебираем ячейки 1-го столбца и группируем по времени лога
    for c in sheet['A']:
    key = c.value[:8]
    val = c.value[10:]
    log[key] = log.get(key,'') + val
    print(log)
    rc = re.compile(r"(\d+-\d+-\d+) (\d+:\d+:\d+).*?Flow (\d+).*?POS:.*?(\d+)")
    print(rc)
    new_data = []
    for key, val in log.items():
    m = rc.search(val)
    if m:
    new_data.append(m.groups())

    # наши разбитые данные
    print('new data:', new_data)

    # и записываем результат на новый лист (для простоты через добавление новых строк)

    sheet_name = 'Лист2'
    if sheet_name not in wb.sheetnames:
    wb.create_sheet(sheet_name)
    sheet = wb[sheet_name]

    for row in new_data:
    sheet.append(row)
    wb.save('C:\\Users\\OD\\Desktop\\python_scripts\\book1.xlsx')

    Получаем:

    {'15:32:50': '19-10-08 14:48:58Flow 0 m3/hPOS: +4x m', '15:33:03': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +4x m', '15:33:16': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +6x m', '15:33:45': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +9x m'}
    re.compile('(\\d+-\\d+-\\d+) (\\d+:\\d+:\\d+).*?Flow (\\d+).*?POS:.*?(\\d+)')
    new data: []
  • Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    o5a,
    1. Лист прописал.

    2. print (log) выдал:

    {'15:32:50': '19-10-08 14:48:58Flow 0 m3/hPOS: +4x m', '15:33:03': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +4x m', '15:33:16': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +6x m', '15:33:45': '_x001A_19-10-08 14:48:58Flow 0 m3/hPOS: +9x m'}
  • Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    o5a, на скриншоте лист1 с первоначальными данными.
    Строку "sheet = wb['Лист2']" убрал
    Лист2 создается, но на нем пусто.
    печатает:
    new data = [ ]
  • Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    o5a, открывает файл, создает в нем Лист2, но результатов нет.
    5da031273348b989864773.png

    import openpyxl
    import re

    wb = openpyxl.load_workbook('C:\\Users\\OD\\Desktop\\python_scripts\\book1.xlsx')
    sheet = wb.active

    log = dict()
    # перебираем ячейки 1-го столбца и группируем по времени лога
    for c in sheet['A']:
    key = c.value[:8]
    val = c.value[10:]
    log[key] = log.get(key,'') + val

    rc = re.compile(r"(\d+-\d+-\d+) (\d+:\d+:\d+).*?Flow (\d+).*?POS:.*?(\d+)")
    new_data = []
    for key, val in log.items():
    m = rc.search(val)
    if m:
    new_data.append(m.groups())

    # наши разбитые данные
    print('new data:', new_data)

    # и записываем результат на новый лист (для простоты через добавление новых строк)

    sheet_name = 'Лист2'
    if sheet_name not in wb.sheetnames:
    wb.create_sheet(sheet_name)
    sheet = wb[sheet_name]

    sheet = wb['Лист2']
    for row in new_data:
    sheet.append(row)
    wb.save('C:\\Users\\OD\\Desktop\\python_scripts\\book1.xlsx')
  • Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    o5a, прописал "лист2"

    и снова...

    new data: []
    ---------------------------------------------------------------------------
    KeyError Traceback (most recent call last)
    in
    23
    24 # и записываем результат на новый лист (для простоты через добавление новых строк)
    ---> 25 sheet = wb['Лист2']
    26 for row in new_data:
    27 sheet.append(row)

    ~\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py in __getitem__(self, key)
    275 if sheet.title == key:
    276 return sheet
    --> 277 raise KeyError("Worksheet {0} does not exist.".format(key))
    278
    279 def __delitem__(self, key):

    KeyError: 'Worksheet Лист2 does not exist.'
  • Как читать данные в таблице xlsx? построчно форматировать данные вставляя в столбцы?

    @dimorexa Автор вопроса
    Что я делаю не так ? Добавил адрес файла и ....

    import openpyxl
    import re

    wb = openpyxl.load_workbook('C:\\Users\\OD\\Desktop\\python_scripts\\Book1.xlsx')
    sheet = wb.active

    log = dict()
    # перебираем ячейки 1-го столбца и группируем по времени лога
    for c in sheet['A']:
    key = c.value[:8]
    val = c.value[10:]
    log[key] = log.get(key,'') + val

    rc = re.compile(r"(\d+-\d+-\d+) (\d+:\d+:\d+).*?Flow (\d+).*?POS:.*?(\d+)")
    new_data = []
    for key, val in log.items():
    m = rc.search(val)
    if m:
    new_data.append(m.groups())

    # наши разбитые данные
    print('new data:', new_data)

    # и записываем результат на новый лист (для простоты через добавление новых строк)
    sheet = wb['Sheet2']
    for row in new_data:
    sheet.append(row)
    wb.save('C:\\Users\\OD\\Desktop\\python_scripts\\Book1.xlsx')

    # и в итоге получил это...

    new data: []
    ---------------------------------------------------------------------------
    KeyError Traceback (most recent call last)
    in
    23
    24 # и записываем результат на новый лист (для простоты через добавление новых строк)
    ---> 25 sheet = wb['Sheet2']
    26 for row in new_data:
    27 sheet.append(row)

    ~\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py in __getitem__(self, key)
    275 if sheet.title == key:
    276 return sheet
    --> 277 raise KeyError("Worksheet {0} does not exist.".format(key))
    278
    279 def __delitem__(self, key):

    KeyError: 'Worksheet Sheet2 does not exist.'