上一篇
Python使用xlutils追写Excel数据教程 - 详解追加写入xls文件
- Python
- 2025-08-10
- 178
Python使用xlutils追写Excel数据教程
详解如何追加数据到现有Excel文件的方法
什么是xlutils?
xlutils是一个Python库,提供了一系列实用工具用于处理Excel文件(.xls格式)。它建立在xlrd(读取Excel)和xlwt(写入Excel)库之上,主要功能包括:
- 复制和修改现有的Excel文件
- 在不同Excel文件之间复制数据
- 过滤和转换Excel数据
- 在现有Excel文件中追加数据
注意: xlutils主要支持.xls格式(Excel 97-2003),对于.xlsx格式(Excel 2007+)建议使用openpyxl库。
安装所需库
使用前需要安装以下库:
pip install xlutils xlrd xlwt
这三个库分别提供以下功能:
- xlrd:读取Excel文件
- xlwt:创建和写入Excel文件
- xlutils:提供高级功能(如追加数据)
追写Excel数据完整示例
以下是一个完整的代码示例,演示如何向现有Excel文件追加数据:
步骤 1: 导入所需库
from xlutils.copy import copy import xlrd
步骤 2: 打开现有Excel文件
# 打开原始Excel文件 workbook = xlrd.open_workbook('原始数据.xls', formatting_info=True) # 创建可写副本 workbook_copy = copy(workbook)
步骤 3: 获取工作表并确定最后一行
# 选择要操作的工作表(索引0表示第一个工作表) sheet_index = 0 original_sheet = workbook.sheet_by_index(sheet_index) copy_sheet = workbook_copy.get_sheet(sheet_index) # 确定当前最后一行 last_row = original_sheet.nrows
步骤 4: 追加新数据
# 要追加的数据(二维列表) new_data = [ ['张三', 28, '销售部', 'zhangsan@example.com'], ['李四', 32, '技术部', 'lisi@example.com'], ['王五', 25, '市场部', 'wangwu@example.com'] ] # 从最后一行之后开始写入新数据 for row_idx, row_data in enumerate(new_data): for col_idx, cell_value in enumerate(row_data): copy_sheet.write(last_row + row_idx, col_idx, cell_value)
步骤 5: 保存修改后的文件
# 保存为新文件(避免覆盖原始文件) workbook_copy.save('追加数据后的文件.xls')
完整代码示例
下面是追加数据的完整代码:
from xlutils.copy import copy import xlrd def append_to_excel(original_file, new_file, sheet_index=0, new_data=[]): """ 向Excel文件追加数据 参数: original_file (str): 原始Excel文件路径 new_file (str): 保存的新文件路径 sheet_index (int): 要操作的工作表索引 new_data (list): 要追加的数据(二维列表) """ # 打开原始文件 workbook = xlrd.open_workbook(original_file, formatting_info=True) workbook_copy = copy(workbook) # 获取工作表 original_sheet = workbook.sheet_by_index(sheet_index) copy_sheet = workbook_copy.get_sheet(sheet_index) # 获取当前最后一行 last_row = original_sheet.nrows # 追加新数据 for row_idx, row_data in enumerate(new_data): for col_idx, cell_value in enumerate(row_data): copy_sheet.write(last_row + row_idx, col_idx, cell_value) # 保存新文件 workbook_copy.save(new_file) print(f"成功追加 {len(new_data)} 行数据到 {new_file}") # 示例使用 if __name__ == "__main__": # 原始Excel文件 input_file = 'employee_data.xls' # 新Excel文件 output_file = 'updated_employee_data.xls' # 要追加的数据 new_employees = [ ['张三', 28, '销售部', 'zhangsan@example.com'], ['李四', 32, '技术部', 'lisi@example.com'], ['王五', 25, '市场部', 'wangwu@example.com'], ['赵六', 30, '财务部', 'zhaoliu@example.com'], ['钱七', 27, '人力资源部', 'qianqi@example.com'] ] # 执行追加操作 append_to_excel(input_file, output_file, 0, new_employees)
追加数据前后的Excel对比
原始数据
姓名 | 年龄 | 部门 | 邮箱 |
---|---|---|---|
王明 | 35 | 技术部 | wangming@example.com |
李红 | 28 | 市场部 | lihong@example.com |
追加数据后
姓名 | 年龄 | 部门 | 邮箱 |
---|---|---|---|
王明 | 35 | 技术部 | wangming@example.com |
李红 | 28 | 市场部 | lihong@example.com |
张三 | 28 | 销售部 | zhangsan@example.com |
李四 | 32 | 技术部 | lisi@example.com |
王五 | 25 | 市场部 | wangwu@example.com |
注意事项与最佳实践
文件格式限制
xlutils只支持.xls格式(Excel 97-2003)。如果需要处理.xlsx文件,请使用openpyxl或pandas库。
样式保留问题
使用copy函数时设置formatting_info=True
可以保留原始格式,但部分复杂格式可能无法完美保留。
大数据集处理
处理大型Excel文件时,考虑分块处理或使用更高效的库如pandas,避免内存不足问题。
文件保存
始终保存到新文件而不是覆盖原始文件,这样可以在出错时保留原始数据。
高级技巧
- 使用
sheet.nrows
和sheet.ncols
获取行数和列数 - 通过
sheet.cell_value(row, col)
读取特定单元格的值 - 使用
xlwt.easyxf()
创建样式应用于新写入的单元格 - 处理多个工作表时,使用
workbook.sheet_names()
获取所有工作表名称
本教程提供了使用Python xlutils库追写Excel数据的完整指南。通过上述方法,您可以轻松地向现有Excel文件添加新数据而不会丢失原有内容。
本文由DongYan于2025-08-10发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20257759.html
发表评论