
在使用xlwings向Excel写入数据时,一个常见的问题是,如果循环中写入的目标单元格地址始终固定(例如 sheet.range('A1').value = row),那么每次循环迭代都会覆盖前一次写入的数据,导致最终只保留最后一次写入的内容。这与我们期望的逐行追加数据的功能相悖。
要实现数据的逐行追加,关键在于在每次循环写入数据时,动态地改变目标行的地址。这可以通过引入一个“行号”变量来实现,该变量在每次成功写入一行数据后递增。
实现步骤:
除了动态行号,为了提高代码效率和可读性,我们还需要注意以下几点:
一、系统设置:用Dreamweaver等网页设计软件在代码视图下打开【dddingdan/config.php】系统设置文件,按注释说明进行系统设置。 二、系统使用:WFPHP在线订单系统是无台后的,不用数据库,也不用安装,解压源码包后,先进行系统设置,然后把整个【dddingdan】文件夹上传到服务器。在网页中要插入订单系统的位置,插入系统调用代码: 注意:id=01就表示使用样式01,如果要使
0
立即学习“Python免费学习笔记(深入)”;
以下是经过优化和修正后的代码示例:
import pandas as pd
import xlwings as xw # 假设 wx 实际上是 xlwings 的别名
# 假设 File1, File2, CompFile 已经定义并指向正确的路径
# loadfile1 = pd.read_excel(File1)
# loadfile2 = pd.read_excel(File2)
# l = loadfile1.values.tolist()
# m = loadfile2.values.tolist()
# 模拟数据,以便代码可以直接运行测试
l = [[1, 'apple'], [2, 'banana'], [3, 'orange'], [4, 'grape']]
m = [[2, 'banana'], [4, 'grape'], [5, 'kiwi']]
# 连接到Excel工作簿
# A = xw.Book(CompFile) # 如果文件已存在
A = xw.Book() # 如果是新建一个工作簿进行测试
# 获取目标工作表对象,将其移到循环外部
sheet = A.sheets['Sheet1'] # 假设目标工作表名为 'Sheet1',请根据实际情况修改
# 初始化写入的起始行号
# 如果需要从第一行开始写入,设置为 1
# 如果需要从已有数据下方开始写入,可以先找到最后一行,例如 sheet.range('A1').end('down').row + 1
row_number = 1
print("开始写入数据...")
for row_data in l: # 将变量名改为 row_data 以避免与行号变量混淆
if row_data in m:
print(f'匹配成功,准备写入数据: {row_data}')
# 使用 f-string 构建动态单元格地址,例如 'A1', 'A2', 'A3'...
sheet.range(f'A{row_number}').value = row_data
row_number += 1 # 写入后,行号递增,指向下一行
else:
print(f'未匹配: {row_data}')
# 所有数据写入完成后,保存工作簿
# A.save(CompFile) # 如果是保存到指定文件
A.save('Output_Data.xlsx') # 保存为新的文件进行测试
A.close() # 关闭工作簿
print("数据写入完成并已保存。")通过遵循上述指南,您可以有效地使用Python和xlwings库,实现Excel文件中数据的逐行动态插入,从而自动化您的数据处理流程,确保数据的完整性和准确性。
以上就是使用Python xlwings在Excel文件中按行循环插入数据的详细内容,更多请关注php中文网其它相关文章!
Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号