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)
for sheet writing header time 0:00:00.711877
for sheet writing header time 0:00:00.710832
for sheet writing header time 0:00:00.691251
for sheet writing header time 0:00:00.689296
Слишком долго. Создан док так.
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)
Сам connect работает через pyUNO.
В свою очередь к примеру тот же XlsXcessive дает такие показатели на том же коде.
for sheet writing header time 0:00:00.005864
for sheet writing header time 0:00:00.004231
for sheet writing header time 0:00:00.004209
for sheet writing header time 0:00:00.002672
Реально-ли добиться такого через UNO? Если же нет, что лучше использовать, ooolib или что-то другое?