teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

一部修正

2020/09/27 11:10

投稿

nto
nto

スコア1438

answer CHANGED
@@ -76,7 +76,7 @@
76
76
  wb = px.load_workbook(self.excel_path)
77
77
  sheet = wb['Sheet1']
78
78
 
79
- target = 103754
79
+ target = 1000001
80
80
  color_dict = {'00000000': 'white', 'FFFF0000': 'red', 'FFFFFF00': 'yellow'}
81
81
  self.data = []
82
82
  # Data create. Read line, Datetime attribute are convert and replace if blank.

1

追記

2020/09/27 11:10

投稿

nto
nto

スコア1438

answer CHANGED
@@ -5,4 +5,101 @@
5
5
  print(cell.fill.fgColor.rgb)
6
6
 
7
7
  >>> 00000000
8
+ ```
9
+ ### 修正後
10
+ 諸々を修正し以下の様な形となり、自身としては問題の解決に至りました。
11
+ ```python
12
+ #-------Excel Window-------
13
+ def ExcelProcess(self):
14
+ # NewWindow create.
15
+ self.submaster = tk.Toplevel()
16
+ self.submaster.geometry('700x400')
17
+ self.submaster.grab_set()
18
+ self.submaster.attributes('-topmost', True)
19
+
20
+ ttk.Button(self.submaster, text='データ表示', command=self.ExcelDataGet).pack(pady=10)
21
+ self.BTN = ttk.Button(self.submaster, text='リセット', state='disable', command=self.TreeviewReset)
22
+ self.BTN.pack()
23
+
24
+ # Treeview create. set data of index and anchor together for tree.
25
+ tvframe = ttk.Frame(self.submaster)
26
+ tvframe.pack()
27
+ self.tree = ttk.Treeview(tvframe)
28
+ self.tree['column'] = tuple([i for i in range(7)])
29
+ tree_info = {'INDEX1': [70, tk.CENTER], 'INDEX2': [50, tk.CENTER], 'INDEX3': [70, tk.CENTER],
30
+ 'INDEX4': [60, tk.E], 'INDEX5': [150, tk.W], 'INDEX6': [50, tk.W], 'INDEX7': [120, tk.W]}
31
+ for i, [header, [width, anchor]] in enumerate(tree_info.items()):
32
+ self.tree.column(i, width=width, anchor=anchor)
33
+ self.tree.heading(i, text=header)
34
+ self.tree["show"] = "headings"
35
+ self.tree.grid(row=0, column=0)
36
+
37
+ # Scrollbar create.
38
+ ysb = tk.Scrollbar(tvframe, orient=tk.VERTICAL, width=16, command=self.tree.yview)
39
+ self.tree.configure(yscrollcommand=ysb.set)
40
+ ysb.grid(row=0, column=1, sticky='nsew')
41
+
42
+ def ColorChange(self, event):
43
+ tree = event.widget
44
+ for itemid in tree.selection():
45
+ tags = tree.item(itemid)['tags']
46
+ num = tags[0] # num for tag.
47
+ # For each color as specify the i, set bg in color & Rewring tags.
48
+ if 'white' in tags:
49
+ self.tree.tag_configure(num, background='red')
50
+ self.tree.item(itemid, tags=[num, 'red'])
51
+ break
52
+ elif 'red' in tags:
53
+ self.tree.tag_configure(num, background='yellow')
54
+ self.tree.item(itemid, tags=[num, 'yellow'])
55
+ break
56
+ elif 'yellow' in tags:
57
+ self.tree.tag_configure(num, background='white')
58
+ self.tree.item(itemid, tags=[num, 'white'])
59
+ break
60
+
61
+ self.tree.selection_set() # focus out, this is optimal...for me.
62
+
63
+ if str(self.BTN['state']) == 'disable': # a little strange. str??? whatever, its fine:(
64
+ self.BTN['state'] = 'normal'
65
+
66
+ def TreeviewReset(self):
67
+ if self.tree: # treeitems delete.
68
+ self.tree.delete(*self.tree.get_children())
69
+ for i, [value, color] in enumerate(self.data): # Rebuild.
70
+ self.tree.insert('','end', values=value, tags=[i, color])
71
+ self.tree.tag_configure(i, background=color)
72
+ self.BTN['state'] = 'disable' # Resetbutton has state change.
73
+
74
+ def ExcelDataGet(self):
75
+ # Ecelfile open.
76
+ wb = px.load_workbook(self.excel_path)
77
+ sheet = wb['Sheet1']
78
+
79
+ target = 103754
80
+ color_dict = {'00000000': 'white', 'FFFF0000': 'red', 'FFFFFF00': 'yellow'}
81
+ self.data = []
82
+ # Data create. Read line, Datetime attribute are convert and replace if blank.
83
+ for row in sheet.iter_rows():
84
+ if row[1].value == target:
85
+ tmp = []
86
+ for cell in row:
87
+ celldata = cell.value
88
+ if type(celldata) == datetime:
89
+ celldata = cell.value.strftime('%Y/%m/%d')
90
+ cellcolor = color_dict[cell.fill.fgColor.rgb] # 8 digit Colorcord get for here
91
+ elif celldata == None:
92
+ celldata = ''
93
+
94
+ tmp.append(celldata)
95
+ self.data.append([tmp, cellcolor])
96
+
97
+ # If data has target tree delete it.
98
+ if self.tree:
99
+ self.tree.delete(*self.tree.get_children())
100
+ # Set data for tree
101
+ for i, [value, color] in enumerate(self.data):
102
+ self.tree.insert('','end', values=value, tags=[i, color]) # [num, colorcorde] addition to tags.
103
+ self.tree.tag_configure(i, background=color) # Specify the i, set bg in color.
104
+ self.BTN['state'] = 'disable' # Resetbutton has state change.
8
105
  ```