def show_excel(self): # 清空文本框内容 self.result_text.delete(1.0, tk.END) self.result_text2.delete(1.0, tk.END) # 获取出入库明细的表格数据 rows = list(self.record_sheet.rows) cols = list(self.record_sheet.columns) # 在文本框1中显示表格 for i in range(len(rows)): for j in range(len(cols)): cell_value = str(rows[i][j].value) if cell_value is None: cell_value = '' if isinstance(rows[i][j].value, datetime.datetime): cell_value = rows[i][j].value.strftime('%Y-%m-%d') self.result_text.insert(tk.END, cell_value + '\t') self.result_text.insert(tk.END, '\n') # 获取库存明细的表格数据 rows = list(self.data_sheet.rows) cols = list(self.data_sheet.columns) # 在文本框2中显示表格 for i in range(len(rows)): for j in range(len(cols)): cell_value = str(rows[i][j].value) if cell_value is None: cell_value = '' if isinstance(rows[i][j].value, datetime.datetime): cell_value = rows[i][j].value.strftime('%Y-%m-%d') self.result_text2.insert(tk.END, cell_value + '\t') self.result_text2.insert(tk.END, '\n')設置第一行列標題的寬度
时间: 2024-03-23 21:38:53 浏览: 47
你可以使用 openpyxl 库的 column_dimensions 属性来设置列宽,例如:
```
from openpyxl.utils import get_column_letter
# 设置第一行列标题的宽度为15
for col in range(1, sheet.max_column + 1):
col_letter = get_column_letter(col)
sheet.column_dimensions[col_letter].width = 15
```
其中 sheet 是你要设置列宽的工作表对象,get_column_letter() 函数可以将列号转换为字母表示的列标。你可以根据需要选择合适的列宽。
相关问题
def show_excel(self): # 清空文本框中的内容 self.result_text.delete("1.0", tk.END) self.result_text2.delete("1.0", tk.END) ws = self.record_sheet rows = ws.values # 将内容插入到文本框中 text_box = tk.Text(self.result_text) for row in rows: for cell in row: text_box.insert(tk.END, str(cell) + '\t') text_box.insert(tk.END, '\n') text_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)修改顯示數據要跟表格一樣,文本框中要有表格
如果您想要在 `tkinter` 中显示一个表格,可以考虑使用 `tkinter.ttk.Treeview` 控件。您可以使用 `Treeview` 创建一个表格,并使用 `insert` 方法将数据插入表格中。例如,您可以将代码修改为:
```
import tkinter.ttk as ttk
def show_excel(self):
# 清空文本框中的内容
self.result_text.delete("1.0", tk.END)
self.result_text2.delete("1.0", tk.END)
ws = self.record_sheet
rows = ws.values
# 创建 Treeview 控件
table = ttk.Treeview(self.result_text)
table['columns'] = range(len(next(rows))) # 设置列数
# 设置列标题
for i, col in enumerate(next(rows)):
table.column(i, width=100, anchor='center')
table.heading(i, text=col)
# 插入数据
for row in rows:
table.insert('', tk.END, values=row)
# 显示表格
table.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
```
这样,您就可以将 Excel 中的数据显示为一个表格。您可以根据需要调整列宽、行高和对齐方式。
def show_excel(self): # 清空文本框 self.result_text.delete('1.0', tk.END) self.result_text2.delete('1.0', tk.END) # 获取出入库明细表格数据 for row in self.record_sheet.values: for cell in row: if cell is None: self.result_text.insert(tk.END, ' ' * 10) else: self.result_text.insert(tk.END, str(cell).ljust(10)) self.result_text.insert(tk.END, '\n') # 获取库存明细表格数据 for row in self.data_sheet.values: for cell in row: if cell is None: self.result_text2.insert(tk.END, ' ' * 10) else: self.result_text2.insert(tk.END, str(cell).ljust(10)) self.result_text2.insert(tk.END, '\n')修改這個代碼,顯示數據時需要用表格裱起來,並置中
你可以使用第三方库 `prettytable` 来实现表格的展示,并且使用 `tkinter` 的布局函数来实现置中。
首先,你需要在文件头部导入 `prettytable` 库:
```python
from prettytable import PrettyTable
```
然后,你需要修改 `show_excel` 方法,使用 `PrettyTable` 创建表格,将数据添加到表格中,最后在文本框中显示表格。同时,你需要使用 `tkinter` 的布局函数 `place` 来实现文本框的置中。
下面是修改后的代码:
```python
def show_excel(self):
# 清空文本框
self.result_text.delete('1.0', tk.END)
self.result_text2.delete('1.0', tk.END)
# 创建出入库明细表格
record_table = PrettyTable()
record_table.field_names = ['日期', '商品编号', '商品名称', '操作类型', '数量', '单价']
for row in self.record_sheet.values:
record_table.add_row(row)
# 创建库存明细表格
data_table = PrettyTable()
data_table.field_names = ['商品编号', '商品名称', '库存数量', '库存金额']
for row in self.data_sheet.values:
data_table.add_row(row)
# 在文本框中显示表格
record_text = tk.Text(self.root, height=20, width=80, font=('Arial', 10))
record_text.place(relx=0.5, rely=0.3, anchor='center')
record_text.insert(tk.END, record_table)
data_text = tk.Text(self.root, height=20, width=80, font=('Arial', 10))
data_text.place(relx=0.5, rely=0.7, anchor='center')
data_text.insert(tk.END, data_table)
```
其中,`relx=0.5, rely=0.3, anchor='center'` 表示将文本框的中心点置于窗口的中心点,`height=20, width=80` 表示文本框的高度和宽度。你可以根据实际情况进行调整。
阅读全文