显示excel内容的回调函数 def show_excel(self): style = ttk.Style() style.configure("MyTreeview1.Treeview", rowheight=25, borderwidth=2, relief="solid", font=('Arial', 10)) style.configure("MyTreeview1.Treeview.Heading", font=('Arial', 10, 'bold')) style.layout("MyTreeview1.Treeview", [('MyTreeview1.Treeview.treearea', {'sticky': 'nswe'})]) # 创建表格用于显示第一个工作表 columns1 = next(self.record_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview1 = ttk.Treeview(self.container1, columns=columns1, show="headings", style="MyTreeview1.Treeview") treeview1.grid(row=1, column=3, rowspan=1, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns1: treeview1.heading(col, text=col) treeview1.column(col, width=100, anchor="center") # 显示第一个工作表的内容 for row in self.record_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview1.insert("", tk.END, values=row_values) columns2 = next(self.data_sheet.iter_rows(min_row=1, max_row=1, values_only=True)) treeview2 = ttk.Treeview(self.container1, columns=columns2, show="headings") treeview2.grid(row=3, column=3, padx=5, pady=5, sticky="nsew") # 设置表格列的标题和宽度 for col in columns2: treeview2.heading(col, text=col) treeview2.column(col, width=100, anchor="center") # 显示第二个工作表的内容 for row in self.data_sheet.iter_rows(min_row=2, values_only=True): row_values = [cell if cell is not None else "" for cell in row] if all(not bool(cell) for cell in row_values): continue treeview2.insert("", tk.END, values=row_values)修改代碼中顯示數據時只顯示值,不顯示公式
时间: 2024-03-16 21:45:45 浏览: 43
可以在显示表格内容时,将公式与值分开处理。在处理每一行数据时,先将公式与值分离,只显示值。下面是修改后的代码示例:
```
# 显示第一个工作表的内容
for row in self.record_sheet.iter_rows(min_row=2, values_only=True, formula_values=True):
row_values = []
for cell in row:
# 如果该单元格是公式,则取该单元格的值;否则直接取值
if isinstance(cell, str) and cell.startswith('='):
row_values.append(cell[1:])
else:
row_values.append(cell if cell is not None else "")
if all(not bool(cell) for cell in row_values):
continue
treeview1.insert("", tk.END, values=row_values)
# 显示第二个工作表的内容
for row in self.data_sheet.iter_rows(min_row=2, values_only=True, formula_values=True):
row_values = []
for cell in row:
# 如果该单元格是公式,则取该单元格的值;否则直接取值
if isinstance(cell, str) and cell.startswith('='):
row_values.append(cell[1:])
else:
row_values.append(cell if cell is not None else "")
if all(not bool(cell) for cell in row_values):
continue
treeview2.insert("", tk.END, values=row_values)
```
在代码中,使用了 `formula_values=True` 参数来获取单元格的公式和值。然后对每一个单元格进行判断,如果是公式,则将其公式内容添加到行数据中;否则直接添加单元格的值。最后将处理好的行数据添加到表格中显示即可。
阅读全文