Запись в строку с использованием openpyxl?

Я пытаюсь написать список в строку в Python, используя openpyxl, но безрезультатно.

Список содержит, например, десять значений. Мне нужно открыть существующую рабочую таблицу и записать эти десять значений в свою ячейку вдоль одной строки.

Мне нужно использовать openpyxl из-за его функциональности перезаписи существующих листов по сравнению с xlsxwriter, где вы можете создавать только новые листы.

3 ответа

Решение

Посмотрите здесь, прокрутите вниз до заголовка " Ввод значений в ячейки".

TLDR:

>>> import openpyxl
>>> wb = openpyxl.Workbook()
>>> sheet = wb['Sheet']
>>> sheet['A1'] = 'Hello world!'
>>> sheet['A1'].value
'Hello world!

или если вы предпочитаете

sheet.cell(row=2, column=3).value = 'hello world'

Обновление: изменено на синтаксис wb['Sheet'] согласно комментарию @charlieclark, спасибо

Обновление: написать мой список в строке 2

for col, val in enumerate(mylist, start=1):
    sheet.cell(row=2, column=col).value = val
      import openpyxl as xl
wb = xl.Workbook()
ws = wb.active
mylist = ['dog', 'cat', 'fish', 'bird']
ws.append(mylist)
wb.save('myFile.xlsx')
wb.close()

Я сделал для вас функцию. У меня он есть в файле openpyxlutils на моем компьютере. Он позволяет вам указать либо букву, либо цифру в стартовой строке (но буква не может быть такой, как AA или BB).

      def write_row(write_sheet, row_num: int, starting_column: str or int, write_values: list):
    if isinstance(starting_column, str):
        starting_column = ord(starting_column.lower()) - 96
    for i, value in enumerate(write_values):
        write_sheet.cell(row_num, starting_column + i, value)
Другие вопросы по тегам