Alex_tut
Май 13, 2018 16:29:39
Доброго дня!
Есть типовой код для создания НОВОГО файла и добавления НОВОГО листа в книгу 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
Май 13, 2018 17:55:35
Поюзал на форуме - через модуль 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
Май 13, 2018 18:12:34
Alex_tut
через модуль import win32com.client как-то попроще
только оно работает через com и поэтому раз в 100 медленнее. Значительные объемы не автоматизируешь. У нас через com вордовый документ минут 5 шкурился на задаче поиск замена.
Alex_tut
Май 13, 2018 18:21:15
Если через 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
Май 14, 2018 01:54:12
Alex_tut
Май 19, 2018 12:26:57
Я пробовал этот метод:
for worksheet in workbook.worksheets():
worksheet.write('A1', ‘Hello’)
Но дело в том, что, прежде чем воспользоваться workbook.worksheets()
надо обозначить workbook:
workbook = xlsxwriter.Workbook('EXCEL_TEST_1.xlsx')
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Нужно каким-то другим способом обозначить книгу workbook.
py.user.next
Май 19, 2018 14:33:30
Alex_tut
А это обозначение создаёт НОВУЮ книгу!!! (Мне же нужно добавить запись в уже существующую).
Как оказалось, это модуль такой, который даёт только создавать новые книги.
Можешь использовать модули openpyxl, xlwings.
Здесь написано
http://xlsxwriter.readthedocs.io/tutorial01.htmlNote
XlsxWriter can only create new files. It cannot read or modify existing files.