openyxl报错ValueError: Value must be either numerical or a string containing a wildcard 解决方案

文章讲述了在使用OpenPyXL库处理Excel文件时遇到的ValueError,问题出在get_sheet_data函数对453行的读取上,尽管数据只有451行。作者发现是空白行被意外读入,通过复制有效数据到新sheet解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误内容

ValueError: Value must be either numerical or a string containing a wildcard

排查思路

跟着单步走,看哪里出问题了

检查结果

问题定位到了_openpyxl.py文件的get_sheet_data函数中,这块的功能是按行获取excel表中的数据,手动让他打印了一下row_number看看是哪一行的数据让他报错了。
![错误代码块](https://img-blog.csdnimg.cn/e52ec23
发现它读到下标为453行出错了,而我的数据只有451行,按下标算应该到450
在这里插入图片描述
在这里插入图片描述
具体为什么这里的空白行会被读进去我也不知道,把有用的数据(即这里的451行及以上)重新复制到一个新的sheet表就解决了

# 查询窗口 class QueryWindow: def __init__(self, master): self.master = master self.master.title("查詢窗口") self.master.state('zoomed') # 窗口最大化 # 创建一个新的样式 style = ttk.Style() style.configure("Custom.TFrame", background="lightcyan") # 创建底部的工具栏 self.bottom_frame = ttk.Frame(master, height=20, style="Custom.TFrame") self.bottom_frame.pack(side='bottom', fill='x') # 创建左侧面板 self.panel_left = tk.Frame(master, width=130, bg='lightcyan') self.panel_left.pack(side=tk.LEFT, fill=tk.Y) # 创建右侧面板 self.panel_right = tk.Frame(master, width=20, bg='lightcyan') self.panel_right.pack(side=tk.RIGHT, fill=tk.Y) # 创建工具栏 self.toolbar = tk.Frame(master,width=20, bg='white') self.toolbar.pack(side=tk.BOTTOM, fill=tk.X) # 创建 Frame 来包含标签和下拉框 input_frame = tk.Frame(self.panel_left, padx=0, pady=5) input_frame.pack(side=tk.TOP, fill=tk.X) # 创建标签和下拉框日期 ri = datetime.datetime.now().strftime('%Y/%m/%d') self.date_label = tk.Label(input_frame, text="點檢日期:") self.date_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W) self.date_entry = tk.ttk.Combobox(input_frame, values=[ri]) self.date_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.W) self.date_entry.current(0) # 创建标签和下拉框线别 self.line_label1 = tk.Label(input_frame, text="线别:") self.line_label1.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W) self.line_entry1 = tk.ttk.Combobox(input_frame, values=["PA綫", "PB綫", "PC綫", "PD綫", "NF綫", "NE綫", "ND綫", "NC綫", "NB綫", "NA綫"]) self.line_entry1.grid(row=1, column=1, padx=5, pady=5, sticky=tk.W) self.line_entry1.current(0)ValueError: Value must be either numerical or a string containing a wildcard
06-03
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值