Python脚本写入XLSX文件异常:仅保留最后一条计算结果,需批量写入
解决Python写入XLSX仅保留最后一组数据的问题
问题根源
你遇到的问题大概率是每次循环都重新创建工作簿/工作表,或者始终向同一行写入数据,导致之前的计算结果被不断覆盖,最终只留下最后一组数据。
解决方案
下面提供两种常用库的正确实现方式:
方式1:使用openpyxl
适合需要精细控制单元格的场景:
import openpyxl import os folder_path = "你的目标文件夹路径" # 提前初始化工作簿和工作表,放在循环外部 wb = openpyxl.Workbook() ws = wb.active # 写入表头 ws["A1"] = "X值" ws["B1"] = "Y值" current_row = 2 # 从第2行开始写入数据 # 遍历文件夹内的文件 for filename in os.listdir(folder_path): # -------------------------- # 替换成你的x、y实际计算逻辑 x = filename.split(".")[0] y = len(filename) # -------------------------- # 写入当前行的对应列 ws[f"A{current_row}"] = x ws[f"B{current_row}"] = y current_row += 1 # 行号递增,避免覆盖 # 统一保存工作簿 wb.save("计算结果.xlsx")
方式2:使用pandas(更简洁)
适合批量数据处理,代码量更少:
import pandas as pd import os folder_path = "你的目标文件夹路径" data = [] # 遍历文件并收集数据 for filename in os.listdir(folder_path): # -------------------------- # 替换成你的x、y实际计算逻辑 x = filename.split(".")[0] y = len(filename) # -------------------------- data.append({"X值": x, "Y值": y}) # 将数据转为DataFrame并写入XLSX df = pd.DataFrame(data) df.to_excel("计算结果.xlsx", index=False)
关键注意点
- 不要在循环内重复创建
Workbook()对象,否则每次都会生成新文件覆盖旧的 - 写入数据时要递增行号,确保每组数据写入不同行
- pandas方式通过先收集所有数据再一次性写入,天然避免覆盖问题
内容的提问来源于stack exchange,提问作者Syed
相关产品推荐
相关产品推荐

