Easily write formatted Excel from Python: Start with Excel formatted, use it in Python, and regenerate Excel from Python

匿名 (未验证) 提交于 2019-12-03 01:34:02

问题:

I have to create Excel spreadsheet with nice format from Python. I thought of doing it by:

  1. I start in Excel as it is very easy to format: I write in Excel the model I want, with the good format
  2. I read this from Python
  3. I create from Python an Excel spreadsheet with the same format

In the end, the purpose is to create from Python Excel spreadsheets, but formatting with xlwt takes a lot of time, so I thought of formatting first in Excel to help.

I have researched for easy ways to doing this but haven't found any. I can stick to my current working solution, using xlwt in Python to create formatted Excel, but it is quite awkward to use.

Thanks for any reply

回答1:

Thanks for your replies. I've found what I was searching for at Preserving styles using python's xlrd,xlwt, and xlutils.copy. The code is below.

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')  


回答2:

You said:

formatting with xlwt takes a lot of time

and

it is quite awkward to use

Perhaps you are not using easyxf? If so, check out the tutorial that you can access via www.python-excel.org, and have a look at examples/xlwt_easyxf_simple_demo.py in your xlwt installation.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!