Форум сайта python.su
Код.
def to_unicode(sequence):
ret_sequence = (unicode(value, "utf8") for value in sequence)
return ret_sequence
def build_header():
fields = \
["Дата", "Время", "Локатор", "Дата.Прод", "Время.Прод", "Тариф",
"АК.Сборы", "АГ.Сборы", "Доставка","Страховка", "Аэроэкспресс",
"Прочие сборы", "Оплачено", "Комиссия", "Транзакция", "Перечислено",
"Тип док.", "Номер док.", "ППР", "Взрослых", "Детей", "Младенцев",
"eTicket", "Билеты", "Туда-обратно", "Сегменты", "Сегмент 1",
"Дата вылета", "Коды тарифов", "Сегмент 2", "Дата вылета",
"Коды тарифов", "Сегмент 3", "Дата вылета", "Коды тарифов",
"Сегмент 4", "Дата вылета", "Коды тарифов"]
return to_unicode(fields)
def report_header(sheets):
for sheet in sheets:
fields = build_header()
column = 1
st = datetime.utcnow()
for field in fields:
sheet.write(1,column, field)
column += 1
for i in range(1, 39):
sheet.write(2, i, i)
print "for sheet writing header time", datetime.utcnow() - st
class oo_Sheet:
def __init__(self, sheet):
self.sheet_ = sheet
def write(self, row, col, value):
cell = self.sheet_.getCellByPosition(col, row)
if type(value) == type(str()) and len(value) != 0:
value = "'" + value
cell.setFormula(value)
props = ooHelper.oo_properties(OpenFlags="B",Hidden=True)
self.runner_ = ooHelper.OORunner()
self.desc_ = self.runner_.connect()
return self.desc_.loadComponentFromURL("private:factory/scalc", "_blank", 0, props)
Отредактировано (Авг. 16, 2011 14:32:30)
Офлайн
Даже если все это написать на С++, скорость не увеличится. Самые тормоза - это когда работаешь с ячейками по отдельности. Надо читать/писать сразу целыми диапазонами (щи'тами). Скорость увеличится в разы.
Офлайн
Isem
Спасибо. Впринципе прикрутил ooolib.
Скорость на данном участке кода
for sheet writing header time 0:00:00.008813
for sheet writing header time 0:00:00.007813
for sheet writing header time 0:00:00.004560
for sheet writing header time 0:00:00.002244
Так что наверное закрою вопрос. Диапазонами писать не подходит, т.к. код используется с pyExceler, XlsXcessive в зависимости от желаемого формата файла.
Офлайн