在這段代碼中根據這個輸入框self.material_name11.get()獲取的内容去excel表名為數據的表中從第一列匹配到相應數據將第5列的内容輸入到下拉輸入框中,沒有找到相應數據就不寫入
时间: 2024-03-10 21:47:39 浏览: 13
你可以先遍历 Excel 表格中的数据,找到匹配的行,然后取出对应的列数据,最后将其添加到下拉框中。可以参考下面的代码:
```python
# 获取下拉框的值
material_name = self.material_name11.get()
# 遍历 Excel 表格
for row in self.data_sheet.iter_rows(min_row=1, max_col=1, max_row=self.data_sheet.max_row):
# 获取当前行的第一列数据
cell_value = row[0].value
if cell_value == material_name:
# 如果找到了对应的行,取出第5列的数据
material_qty = row[4].value
if material_qty is not None:
# 将数据添加到下拉框中
self.material_qty14.config(values=[material_qty])
self.material_qty14.current(0)
break
else:
# 如果没有找到对应的行,清空下拉框
self.material_qty14.config(values=[])
```
需要注意的是,如果下拉框已经存在其他选项,需要先将其清空,否则可能会导致重复添加选项的问题。
相关问题
class InventoryApp: def init(self, master): # 窗口初始化和界面布局 ... # 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"] # 品名输入框和单价输入框 self.material_qty6 = ttk.Combobox(self.container_bottom, values=[]) self.material_qty6.grid(row=5, column=1, padx=5, pady=5) self.material_qty6.bind("<<ComboboxSelected>>", self.get_price) self.material_qty8 = ttk.Combobox(self.container_bottom, values=['']) self.material_qty8.grid(row=7, column=1, padx=5, pady=5) self.material_qty8.current(0) def get_price(self, event): # 获取品名输入框中的值 material_name = self.material_qty6.get() # 在“数据”表中查找品名对应的行 for row in self.data_sheet.iter_rows(min_row=2, max_col=6, values_only=True): if row[3] == material_name: # 将单价写入单价输入框 self.material_qty8.set(row[5]) break爲什麽沒有寫入
根据代码,可能是因为 `self.material_qty8` 的 `values` 属性为 `['']`,导致无法正确设置其值。建议将 `self.material_qty8` 的 `values` 属性设置为包含单价的列表,如下所示:
```python
# 在“数据”表中查找品名对应的行
for row in self.data_sheet.iter_rows(min_row=2, max_col=6, values_only=True):
if row[3] == material_name:
# 将单价写入单价输入框
self.material_qty8['values'] = [row[5]]
self.material_qty8.current(0)
break
```
这样就可以将单价正确地写入单价输入框 `self.material_qty8` 中。
# 打开Excel文件 self.wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx") self.record_sheet = self.wb["記錄"] self.data_sheet = self.wb["數據"]self.material_name11.get() self.label14 = ttk.Label(self.container_top, text="品名:") self.label14.grid(row=5, column=0, padx=5, pady=5) self.material_qty14 = ttk.Combobox(self.container_top, values=[]) self.material_qty14.grid(row=5, column=1, padx=5, pady=5)在這段代碼中根據self.material_name11.get()獲取的内容去excel表名為數據的表中從第一列匹配到相應數據的第5列的内容輸入到下拉輸入框中
您的问题是如何在Python中根据获取的内容从Excel表格中匹配相应的数据并将其输入到下拉输入框中。
您可以使用openpyxl库来读取Excel文件中的数据。首先,您需要使用load_workbook()函数打开Excel文件,然后获取对应的工作表,如下所示:
```
import openpyxl
# 打开Excel文件
wb = openpyxl.load_workbook(r"C:\Users\bing3_chen\Desktop\1.xlsx")
sheet = wb["數據"]
```
接下来,您可以使用sheet.iter_rows()函数遍历工作表的每一行,并使用row[0].value获取每一行的第一列的值,然后将其添加到一个列表中,如下所示:
```
# 获取第一列的所有值
material_names = []
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=1):
material_name = row[0].value
material_names.append(material_name)
```
接下来,您可以使用if语句判断获取的内容是否在列表中,如果存在则使用sheet.cell()函数获取相应的单元格的值,并将其添加到下拉输入框中,如下所示:
```
# 根据获取的内容匹配相应的数据并输入到下拉输入框中
if self.material_name11.get() in material_names:
for row in sheet.iter_rows(min_row=1, max_row=sheet.max_row, min_col=1, max_col=sheet.max_column):
if row[0].value == self.material_name11.get():
material_qty = row[4].value
self.material_qty14['values'] = [material_qty]
```
注意,这里使用了self.material_qty14['values']来设置下拉输入框的值,因为它是一个ttk.Combobox对象。