如何写入数据到Excel文件,而不改变原始文件中的格式单元格使用Python?

我使用xlwt和xlrd与Python来从某些东西获取一些数据,并将其写入一个xls文件,但我需要写入数据到excel文件,只是数据,而不改变格式单元格(原始文件)

这是代码:***

from xlrd import open_workbook from xlwt import easyxf from xlutils.copy import copy data = [['2008','2009'],['Jan','Feb','Feb'],[100,200,300]] rb = open_workbook('this1.xls') rs = rb.sheet_by_index(0) wb = copy(rb) ws = wb.get_sheet(0) # I want write data to excel file, just the data, without changing the format cells in (original file) for i,row in enumerate(data): for j,cell in enumerate(row): ws.write(j,i,cell) 

您可以尝试openpyxl模块,它允许您使用load_workbook选项来使用现有的excel文档并保持格式。 我使用的是xlrd和xlwt,但是当我发现python 3.5中不支持xlutils,并且没有其他方法将这些模块添加到电子表格中时,我切换到了openpyxl。 请记住,如果切换,openpyxl仅支持.xlsx文档,所以您必须将文档切换为.xlsx文件。 如果您想了解更多关于openpyxl的信息,请查看这个网站: https ://automatetheboringstuff.com/chapter12/您将会find很多关于如何使用openpyxl的信息。 希望这有助于!

写入单元格将删除其样式信息,但是可以在写入之后保留它并重新分配它。 我以前用没有logging的内部rows_Row__cells数据结构完成了这个工作:

 def write_with_style(ws, row, col, value): if ws.rows[row]._Row__cells[col]: old_xf_idx = ws.rows[row]._Row__cells[col].xf_idx ws.write(row, col, value) ws.rows[row]._Row__cells[col].xf_idx = old_xf_idx else: ws.write(row, col, value) 

显然这是易受版本不兼容,因为它使用内部数据结构。