Python使用xlutils修改已存在Excel文件并保留格式
本文介绍如何利用Python的xlrd、xlwt和xlutils库组合,实现向已存在的Excel文件中写入新数据并保留原有格式的方法。核心步骤包括使用xlrd打开文件时设置formatting_info=True,通过xlutils.copy复制工作簿,最后使用xlwt进行写入并保存。
在Python中,通常使用xlrd库读取Excel文件,使用xlwt库写入新的Excel文件。然而,若要将数据追加或修改到已存在的Excel文件中,同时保留原有格式,则需要引入xlutils库进行配合处理。
具体实现思路如下:
首先,利用xlrd.open_workbook函数打开目标已有的xls或xlsx文件。
关键点在于,调用open_workbook时必须添加参数formatting_info=True。这一设置确保程序能够读取并保留原文件中的单元格格式信息,为后续写入操作奠定基础。
接着,导入from xlutils.copy import copy模块。使用该copy函数,将上一步中由xlrd打开的Book对象作为输入,拷贝生成一个新的xlwt Workbook对象。这一步实现了从读取模式到写入模式的转换。
此时,获得的xlwt Workbook对象即可按照标准写入流程进行操作:
通过Workbook对象的get_sheet方法获取对应的Sheet对象。获取Sheet后,即可调用其write方法,向指定的单元格写入新的数据内容。
完成所有数据的写入操作后,调用Workbook对象的save方法,将更改保存到文件中。
以下是完整的代码示例:
import xlrd
import os
from xlutils.copy import copy
from xlwt import Style
def writeExcel(row, col, str, styl=Style.default_style):
rb = xlrd.open_workbook(file, formatting_info=True)
wb = copy(rb)
ws = wb.get_sheet(0)
ws.write(row, col, str, styl)
wb.save(file)
style = xlwt.easyxf('font:height 240, color-index red, bold on;align: wrap on, vert centre, horiz center');
writeExcel(1, 1, 'hello world', style)
若需确保Excel原有的格式(如字体、颜色等)不被覆盖,必须在打开文件时添加formatting_info=True参数。
formatting_info=True
若需为写入的数据添加特定的Excel样式,可通过xlwt.easyxf函数定义样式字符串,并将其作为参数传入写入函数中。
关于合并单元格的操作:
ws.write_merge(top_row, bottom_row, left_column, right_column, string)
以上内容即为Python写入已存在Excel数据并保留格式的完整实例,希望能对读者有所帮助。欢迎参考并在实践中尝试,也期待大家的支持与反馈。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









