鱼C论坛

 找回密码
 立即注册
查看: 1896|回复: 10

openpyx追加写入

[复制链接]
发表于 2021-4-17 19:01:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用openpyxl,循环写入数据,符合条件就写入B列,如何实现接着写入下一行?不能用ws['A'+str(n+1)]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-17 19:16:36 | 显示全部楼层
不能用ws['A'+str(n+1)]。。 什么意思,要求不能用,还是不会用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-17 19:26:53 | 显示全部楼层
阿奇_o 发表于 2021-4-17 19:16
不能用ws['A'+str(n+1)]。。 什么意思,要求不能用,还是不会用?

因为符合条件的数据才追加写入,不是每次循环都有符合条件的数据,如果用ws['A'+str(n+1)],就会出现不符合条件时,表格n+1行是空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-17 23:12:29 | 显示全部楼层
a350101 发表于 2021-4-17 19:26
因为符合条件的数据才追加写入,不是每次循环都有符合条件的数据,如果用ws['A'+str(n+1)],就会出现不符合 ...

代码呢?show me the code
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-19 10:53:00 | 显示全部楼层
阿奇_o 发表于 2021-4-17 23:12
代码呢?show me the code

def hexie():
    ws_balanced['A' + str(n+1)] = name3
    ws_balanced['B' + str(n+1)] = idcp
    ws_balanced['M' + str(n+1)] = number
    ws_balanced['N' + str(n+1)] = numberEnd_3#
if n>2:#针对3个共案避免写入2个的算法
        if ws_balanced['A' + str(n)].value != name3 and ws_balanced['A' + str(n-1)].value != name3:##
            hexie()

这是我写的,不符合条件的时候就不写入表,就出现了空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-19 16:26:23 | 显示全部楼层
a350101 发表于 2021-4-19 10:53
def hexie():
    ws_balanced['A' + str(n+1)] = name3
    ws_balanced['B' + str(n+1)] = idcp

ws_balanced 是在自定义函数hexie的内部,属于局部变量,要确保它用上你工作表对象。
否则,你执行一百遍hexie,也不会写进数据。

解决办法:将工作表ws等对象和变量 以参数形式传入,或直接写到函数里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-19 16:35:16 | 显示全部楼层
a350101 发表于 2021-4-17 19:26
因为符合条件的数据才追加写入,不是每次循环都有符合条件的数据,如果用ws['A'+str(n+1)],就会出现不符合 ...

不会的,我猜你有一句代码 n += 1
把这句代码放在 if 条件里面不要放在外边
这样只有满足 if 条件才会写入,才会执行 n +=1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-19 18:31:22 | 显示全部楼层
qq1151985918 发表于 2021-4-19 16:35
不会的,我猜你有一句代码 n += 1
把这句代码放在 if 条件里面不要放在外边
这样只有满足 if 条件才会 ...

的确 有一句代码 n += 1.因为有500多行,所以不方便复制进来.我用了str(ws.max_row+1)觉得不应该出现空行,但出现了,我也不明白.试了好几种方法,快崩溃了.用ws['A'+str(n+1)]执行了很多次,因为不合条件的不写入,所以不写入时就变成了空行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-19 18:33:22 | 显示全部楼层
阿奇_o 发表于 2021-4-19 16:26
ws_balanced 是在自定义函数hexie的内部,属于局部变量,要确保它用上你工作表对象。
否则,你执行一百 ...

ws_balanced在前面定义了全局变量..因为有代码 500多行,所以不方便复制进来.谢谢指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-19 19:13:26 | 显示全部楼层
a350101 发表于 2021-4-19 18:33
ws_balanced在前面定义了全局变量..因为有代码 500多行,所以不方便复制进来.谢谢指点

500多行?哈哈,不乱才怪呢。

随你,人生总要折腾折腾……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-19 20:08:50 | 显示全部楼层
阿奇_o 发表于 2021-4-19 19:13
500多行?哈哈,不乱才怪呢。

随你,人生总要折腾折腾……

爬取10几个网站,提取,比较,入表,挺耗费精力的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 14:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表