Python xlutils实现Excel追加写与格式保留
本文介绍如何使用Python的xlutils库实现Excel文件的追加写入并保留原有格式。通过结合xlrd读取和xlwt写入,利用copy()方法复制工作簿,可避免直接写入导致的格式丢失问题。文章提供了完整的代码示例,并详细说明了xls与xlsx后缀文件的兼容性及常见操作异常的处理方法。
使用 xlutils 实现 Excel 追加写
在 Python 中处理 Excel 文件时,直接使用 xlwt 进行写入操作会面临两个主要限制:一是无法实现追加写(即保留原有数据),二是直接写入会导致原有格式丢失。为了解决这两个问题,可以使用 xlutils 模块。该模块的核心思路是:利用 xlrd 读取现有文件,再通过 xlwt 进行写入,并通过 copy() 方法将读取到的工作簿复制一份,从而在保留格式的基础上进行追加或修改操作。
关键代码与操作步骤
实现追加写的核心流程包括:打开源文件、复制工作簿、获取可写入的 Sheet 对象,最后保存文件。以下是关键代码示例:
# 使用 formatting_info=True 来复制带有格式的excel,否则追加写后格式会丢失
rb = xlrd.open_workbook(goal_file,formatting_info=True)
#通过sheet_by_index()获取的sheet没有write()方法
rs = rb.sheet_by_index(0)
wb = copy(rb)
#通过get_sheet()获取的sheet有write()方法
ws = wb.get_sheet(0)
#获得到sheet了 可以进行 追加写 或者 修改某个单元格数据的操作了 最后不要忘了 save()在上述代码中,xlrd.open_workbook 的 formatting_info=True 参数至关重要,它确保了复制后的工作簿保留了原有的格式信息。通过 copy(rb) 复制工作簿后,必须使用 wb.get_sheet(0) 获取 Sheet 对象,因为只有该对象才具备 write() 方法。完成数据写入后,务必调用 wb.save(goal_file) 保存更改。
模版文件处理与异常处理
在实际操作中,如果目标文件不存在但存在模版文件,通常需要先复制模版文件。以下代码展示了如何处理模版文件的复制:
from xlutils.copy import copy
try:
if not os.path.exists(goal_file) and os.path.exists(model_src) :
shutil.copy(model_src,goal_file)
print '复制模版成功'
except Exception ,e:
print "模版文件复制失败"
pass
注意事项与常见问题
- 文件后缀限制:模版文件的后缀必须是
.xls。如果后缀为.xlsx,xlrd在 0.8 版本后不再支持,会抛出异常。 - 手动修改风险:不要手动打开
.xls文件并修改其值。手动修改后,再次调用save()会抛出异常。 - 格式保留:务必使用
formatting_info=True打开工作簿,否则追加写后格式会丢失。
以上就是Python xlutils实现Excel追加写与格式保留的详细内容,更多关于Python Excel操作的技术资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









