Найти - Пользователи
Полная версия: Создание n числа переменных
Начало » Python для экспертов » Создание n числа переменных
1 2
Razor
Доброго времени суток. Возникла проблема с библиотекой XlsxWriter. Точнее, не совсем с ней. К примеру, имеем подобный код:

import xlsxwriter
workbook  = xlsxwriter.Workbook('filename.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(0, 0, 'Hello Excel')

Но предположим, что мне нужно создать N-ое количество листов для записи:

worksheet1 = workbook.add_worksheet()
worksheet2 = workbook.add_worksheet()
worksheet3 = workbook.add_worksheet()
worksheet4 = workbook.add_worksheet()
...
worksheetN = workbook.add_worksheet()

Возможно, я невнимательно прочел докуметацию, но как создать N-ое количество листов (или элементов) средствами Python'а?

Средства exec, eval, compile, выглядят весьма топорно и увеличивают код в разы.

Спасибо!
FishHook
Ну а циклы на что?
for _ in xrange(100):
    sheet = workbook.add_worksheet()
    sheet.write(0, 0, 'Hello Excel')
Razor
FishHook
Ну а циклы на что?

Вся прелесть в том, что код и так в цикле, но вместо создания нового листа, он перезаписывает старый. В итоге, имеем последний записанный лист.
Budulianin
Razor
как создать N-ое количество листов (или элементов) средствами Python'а?

for i in range(10):
     locals()['worksheet{}'.format(i)] = 'your worksheet'

Лучше пользоваться openpyxl, так как , он кроме писать xlsx/xlsm, ещё и читать их умеет
FishHook
Razor
Вся прелесть в том, что код и так в цикле, но вместо создания нового листа, он перезаписывает старый. В итоге, имеем последний записанный лист.
Ерунда какая-то,
ну ладно, добавляй листы в список,
плодить переменные это крайняя стадия дебилизма.
Razor
Budulianin
Лучше пользоваться openpyxl, так как , он кроме писать xlsx/xlsm, ещё и читать их умеет.

for i in range(10):
    workbook = xlsxwriter.Workbook('Total.xlsx') 
    locals()['worksheet{}'.format(book)] = '{}'.format(i.string)
    """ Это тоже придется помечать locals """
    worksheet.set_column('A:A', 7) # Ширина строки A
    worksheet.set_column('B:B', 70) # Ширина B
    worksheet.write('B1', i.string)

Ужасно, не правда ли?

В целом, библиотека показалась удобной, но вот такое недочеты меня убивают. Что ж, попробую освоить openpyxl - на перспективу. )
Razor
FishHook
Razor
Вся прелесть в том, что код и так в цикле, но вместо создания нового листа, он перезаписывает старый. В итоге, имеем последний записанный лист.
Ерунда какая-то,
ну ладно, добавляй листы в список,
плодить переменные это крайняя стадия дебилизма.

К сожалению, эти правила придуманы не мной. Чуть выше я предоставил код. Если вы считаете, что можете найти более изящное решения, избегая N-го количество переменных - подскажите. Я именно для этого тут и нахожусь: спрашиваю совета у более опытных программистов.
FishHook
Razor
можете найти более изящное решения, избегая N-го количество переменных
sheets = list()
for _ in xrange(100):
    sheets.add(workbook.add_worksheet())
Razor

FishHook
sheets = list()
for _ in xrange(100):
    sheets.add(workbook.add_worksheet())

Я правильно понял: list() - это список названия листов? Если да, то что за атрибут add?
FishHook
append, естественно.
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