Найти - Пользователи
Полная версия: Добавление записей в EXCEL через модуль xlsxwriter
Начало » Python для экспертов » Добавление записей в EXCEL через модуль xlsxwriter
1
Alex_tut
Доброго дня!
Есть типовой код для создания НОВОГО файла и добавления НОВОГО листа в книгу EXCEL:

import xlsxwriter

workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
worksheet = workbook.add_worksheet('sheet_1')
worksheet.write(0,0,'Hello')
workbook.close()


Но как добавить запись в существующую книгу?
Пробовал вариант:
worksheet = workbook.worksheets('sheet_1') (без add - вместо workbook.add_worksheet('sheet_1')

Выводит ошибку:

TypeError: worksheets() takes 1 positional argument but 2 were given

Вроде бы как должно быть 2 аргумента для worksheets()

Порылся в документации, поискал в инете (и на форуме) - не нашёл ответа…
Alex_tut
Поюзал на форуме - через модуль import win32com.client как-то попроще и интуитивно понятнее работать:

#Импортируем библиотеку
import win32com.client

#Создаем COM объект
Excel = win32com.client.Dispatch(“Excel.Application”)

#Получаем доступ к активному листу EXCEL_TEST_1

wb=Excel.ActiveWorkbook

sheet = wb.ActiveSheet

#Запишем новое значение в ячейку A3 активного листа
sheet.Cells(3,1).value = ‘A3Value’

#Сохраним
wb.Save()

#Закроем файл
wb.Close()

#Закроем COM объект
Excel.Quit()
doza_and
Alex_tut
через модуль import win32com.client как-то попроще
только оно работает через com и поэтому раз в 100 медленнее. Значительные объемы не автоматизируешь. У нас через com вордовый документ минут 5 шкурился на задаче поиск замена.
Alex_tut
Если через import xlsxwriter, то надо менять:
workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
Это действие создаёт НОВУЮ книгу.
Если так:
workbook = .Workbook('EXCEL_TEST_1.xlsx') (без xlsxwrite)
то выдаёт ошибку:
NameError: name ‘Workbook’ is not defined




py.user.next
Можно и так получить листы - как список объектов
http://xlsxwriter.readthedocs.io/workbook.html#workbook-worksheets
И по имени листа получить лист
http://xlsxwriter.readthedocs.io/workbook.html#workbook-get-worksheet-by-name
Alex_tut
Я пробовал этот метод:
for worksheet in workbook.worksheets():
worksheet.write('A1', ‘Hello’)

Но дело в том, что, прежде чем воспользоваться workbook.worksheets()
надо обозначить workbook:
workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Нужно каким-то другим способом обозначить книгу workbook.
py.user.next
Alex_tut
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Как оказалось, это модуль такой, который даёт только создавать новые книги.
Можешь использовать модули openpyxl, xlwings.

Здесь написано
http://xlsxwriter.readthedocs.io/tutorial01.html
Note

XlsxWriter can only create new files. It cannot read or modify existing files.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB