吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1065|回复: 23
收起左侧

[求助] 这段代码请大神给找找有什么错,感谢!!

[复制链接]
ttzf 发表于 2023-3-8 00:26
本帖最后由 侃遍天下无二人 于 2023-3-8 08:43 编辑

[Python] 纯文本查看 复制代码
import openpyxl
workbook=openpyxl.load_workbook("E:\\2017-18年度易地移民搬迁旧房拆除项目房屋测量面积汇总.xlsx")
new_worksheet=workbook.create_sheet("筛选结果")
worksheet_name=workbook.sheetnames
for worksheet_name in worksheet_names:
    worksheet=workbook[worksheet_name]

    new_rows=[]
    for row in worksheet.iter_rows(values_only=True):
        if row[2]=="姓名":
            continue
        if row[2]==input("请输入姓名: "):
            new_row=[]
            for i in [0,1,2,3,4,5]:
                new_row.append(row[i])

            new_rows.append(new_rwo)
            
    if len(new_rows)>0:
        new_worksheet.append(["序号","村组","姓名","房屋面积","测量时间","备注"])

        for new_row in new_rows:
            new_worksheet.append(new_row)

workbook.save("E:/筛选结果.xlsx")



这段代码是想实现输入名字能把电子表格中所有的工作表中筛选想要的人的信息在新建的工作表中保存,但是转换不了,不知什么地方出错了,望大神给查查,非常感谢!!!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

blfiag 发表于 2023-3-8 06:55
最后这句改为workbook.saveas  ?
云在天 发表于 2023-3-8 07:49
本帖最后由 云在天 于 2023-3-8 07:50 编辑

在第3行,定义 worksheet_name
在第5行,使用 worksheet_names

你确定你引用正确了吗?

另外,你第16行 变量名“new_rwo”,应该为“new_row”吧。


[Python] 纯文本查看 复制代码
import openpyxl

workbook = openpyxl.load_workbook("E:\\2017-18年度易地移民搬迁旧房拆除项目房屋测量面积汇总.xlsx")
new_worksheet = workbook.create_sheet("筛选结果")
worksheet_names = workbook.sheetnames

for worksheet_name in worksheet_names:
    worksheet = workbook[worksheet_name]

    new_rows = []
    for row in worksheet.iter_rows(values_only=True):
        if row[2] == "姓名":
            continue
        if row[2] == input("请输入姓名: "):
            new_row = []
            for i in [0,1,2,3,4,5]:
                new_row.append(row[i])

            new_rows.append(new_row)

    if len(new_rows) > 0:
        new_worksheet.append(["序号","村组","姓名","房屋面积","测量时间","备注"])

        for new_row in new_rows:
            new_worksheet.append(new_row)

workbook.save("E:/筛选结果.xlsx")
侃遍天下无二人 发表于 2023-3-8 08:46
本帖最后由 侃遍天下无二人 于 2023-3-8 08:47 编辑

你在写代码的时候用IDE了吗,它有没有告诉你代码里存在未定义的变量?
用了的话是不该犯这种错的
image.png
海是倒过来的天 发表于 2023-3-8 08:50
兄弟是记事本编写的代码吗?如果是IDE,里面的错误很明细啦
a22488 发表于 2023-3-8 09:00
用pycharm
cxg2773 发表于 2023-3-8 09:20
用pycharm编辑器,错误提示很明显啊,就是用了未定义的变量,修改下再试试看.
企业微信截图_1678238301871.png
mainblog 发表于 2023-3-8 09:20
这是AI的说法:
在该代码中存在以下问题:

在第3行,将 worksheet_name 赋值为 workbook.sheetnames;然而,在第7行又将 worksheet_name 作为循环变量进行遍历。这会导致循环变量 worksheet_name 覆盖了之前的列表变量 worksheet_names,因此在后续的代码中无法正常使用。

在第13行,将 new_rwo 误写成了 new_row,这会导致程序运行时出现 NameError。

在第21行,将新表格的列名设置为 ["序号","村组","姓名","房屋面积","测量时间","备注"]。然而,在代码中并没有对于 "序号" 进行赋值,其可能会导致新表格中的数据与原表格不一致,因此需要根据实际情况进行修改。

下面是已经修正了上述错误的代码:
[Python] 纯文本查看 复制代码
import openpyxl

workbook = openpyxl.load_workbook("E:/2017-18年度易地移民搬迁旧房拆除项目房屋测量面积汇总.xlsx")
new_worksheet = workbook.create_sheet("筛选结果")

for worksheet_name in workbook.sheetnames:
    worksheet = workbook[worksheet_name]
 
    new_rows = []
    for row in worksheet.iter_rows(values_only=True):
        if row[2] == "姓名":
            continue
        if row[2] == input("请输入姓名: "):
            new_row = []
            for i in [0, 1, 2, 3, 4, 5]:
                new_row.append(row[i])
 
            new_rows.append(new_row)
             
    if len(new_rows) > 0:
        new_worksheet.append(["村组", "姓名", "房屋面积", "测量时间", "备注"])

        for new_row in new_rows:
            new_worksheet.append(new_row)

workbook.save("E:/筛选结果.xlsx")

请注意,以上代码仅基于您提供的内容进行修改,且未进行完整测试。如果有其他问题,请提供更多信息以帮助我更好地解决您的问题。




Broadm 发表于 2023-3-8 09:33
这年代肯定要用IDE了,避免犯语法错误, 记事本写代码的要么是大牛,要什么是新手装隔壁
oarewyo 发表于 2023-3-8 09:46
代码中有一个拼写错误。在 new_rows.append(new_rwo) 这一行中,应该是 new_rows.append(new_row) 而不是 new_rwo。另外,变量 worksheet_names 没有定义。应该是 worksheet_names = workbook.sheetnames 而不是 worksheet_name = workbook.sheetnames。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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