Легко писать отформатированный Excel из Python: начните с отформатированного Excel, используйте его в Python и восстановите Excel из Python - PullRequest
3 голосов
/ 29 марта 2012

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

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 13 апреля 2012

Спасибо за ваши ответы. Я нашел то, что искал, в Сохранение стилей с использованием Python xlrd, xlwt и 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 голосов
/ 04 апреля 2012

Вы сказали:

форматирование с помощью xlwt занимает много времени

и

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

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

...