Форум сайта python.su
Доброго дня!
Есть типовой код для создания НОВОГО файла и добавления НОВОГО листа в книгу 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()
Порылся в документации, поискал в инете (и на форуме) - не нашёл ответа…
Офлайн
Поюзал на форуме - через модуль 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()
Офлайн
Alex_tutтолько оно работает через com и поэтому раз в 100 медленнее. Значительные объемы не автоматизируешь. У нас через com вордовый документ минут 5 шкурился на задаче поиск замена.
через модуль import win32com.client как-то попроще
Офлайн
Если через import xlsxwriter, то надо менять:
workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
Это действие создаёт НОВУЮ книгу.
Если так:
workbook = .Workbook('EXCEL_TEST_1.xlsx') (без xlsxwrite)
то выдаёт ошибку:
NameError: name ‘Workbook’ is not defined
Офлайн
Можно и так получить листы - как список объектов
http://xlsxwriter.readthedocs.io/workbook.html#workbook-worksheets
И по имени листа получить лист
http://xlsxwriter.readthedocs.io/workbook.html#workbook-get-worksheet-by-name
Офлайн
Я пробовал этот метод:
for worksheet in workbook.worksheets():
worksheet.write('A1', ‘Hello’)
Но дело в том, что, прежде чем воспользоваться workbook.worksheets()
надо обозначить workbook:
workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Нужно каким-то другим способом обозначить книгу workbook.
Офлайн
Alex_tutКак оказалось, это модуль такой, который даёт только создавать новые книги.
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Note
XlsxWriter can only create new files. It cannot read or modify existing files.
Отредактировано py.user.next (Май 19, 2018 14:34:54)
Офлайн