2012-03-29 1 views
3

Мне нужно создать таблицу Excel с хорошим форматом из Python. Я думал сделать это с помощью:Легко писать форматированный Excel из Python: начать с форматирования Excel, использовать его в Python и регенерировать Excel из Python

  1. Я начинаю в Excel, как это очень легко формат: я пишу в Excel в модель я хочу, с хорошим форматом
  2. Я прочитал это из Python
  3. Я создаю из Python электронной таблицы Excel с тем же форматом

в конце концов, цель состоит в том, чтобы создать из таблиц Python Excel, но форматирование с xlwt занимает много времени, поэтому я подумал о форматировании первого в Excel для Помогите.

Я исследовал для простых способов сделать это, но не нашел. Я могу придерживаться своего текущего рабочего решения, используя xlwt в Python для создания форматированного Excel, но это довольно неудобно для использования.

Спасибо за любой ответ

+1

Возможно, вам понадобится больше, чем это, но если вам просто нужно получить данные в и из Excel, всегда есть CSV. Это не позволит вам контролировать, как это выглядит в Excel, но отлично перемещать данные и намного проще, чем возиться с XLWT. – penguin359

+2

Вы можете использовать COM для создания/форматирования xls. Для форматирования я обычно записываю макрос в Excel и переписываю его на Python. – Fenikso

ответ

0

Вы сказали:

форматирование с xlwt занимает много времени

и

это довольно неудобно пользоваться

Возможно, вы не используете easyxf? Если это так, ознакомьтесь с руководством, которое вы можете получить через www.python-excel.org, и посмотрите на examples/xlwt_easyxf_simple_demo.py в вашей xlwt-установке.

+0

http://stackoverflow.com/questions/3723793/preserving-styles-using-pythons-xlrd-xlwt-and-xlutils-copy – Exevior

+1

@exevior: Какой смысл вы пытаетесь сделать? –

+0

с easyxf необходимо определить каждый формат ячеек. например: format1 = easyxf (xxxx) # для жирного шрифта, граница только слева – Exevior

5

Спасибо за ваши ответы. Я нашел то, что искал в Preserving styles using python's xlrd,xlwt, and xlutils.copy. Код ниже.

import xlrd 
import xlutils.copy 

inBook = xlrd.open_workbook('input.xls', formatting_info=True) 
outBook = xlutils.copy.copy(inBook) 

def _getOutCell(outSheet, colIndex, rowIndex): 
    """ HACK: Extract the internal xlwt cell representation. """ 
    row = outSheet._Worksheet__rows.get(rowIndex) 
    if not row: return None 
    cell = row._Row__cells.get(colIndex) 
    return cell 

def setOutCell(outSheet, col, row, value): 
    """ Change cell value without changing formatting. """ 
    # HACK to retain cell style. 
    previousCell = _getOutCell(outSheet, col, row) 
    # END HACK, PART I 
    outSheet.write(row, col, value) 
    # HACK, PART II 
    if previousCell: 
     newCell = _getOutCell(outSheet, col, row) 
    if newCell: 
     newCell.xf_idx = previousCell.xf_idx 
    # END HACK 


outSheet = outBook.get_sheet(0) 
setOutCell(outSheet, 5, 5, 'Test') 
outBook.save('output.xls') 
+0

Это заслуживает большего внимания, спасибо за то, что вы меня спасли. +1 – Mark

 Смежные вопросы

  • Нет связанных вопросов^_^