回答編集履歴
5
ロジックに誤りがあったため
test
CHANGED
@@ -1,27 +1,75 @@
|
|
1
|
-
|
1
|
+
以下の通りにしてみました。
|
2
2
|
|
3
3
|
```Python
|
4
4
|
|
5
|
-
|
5
|
+
import glob
|
6
6
|
|
7
|
-
|
7
|
+
import openpyxl as px
|
8
8
|
|
9
|
-
for j in range(1,6):
|
10
9
|
|
11
|
-
ws.cell(row=i,column=2).value = l
|
12
10
|
|
11
|
+
a = glob.glob("C:.../*.txt")
|
12
|
+
|
13
|
+
print (a)
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
wb = px.Workbook()
|
18
|
+
|
19
|
+
ws = wb.active
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
j = 1
|
24
|
+
|
25
|
+
for i in a:
|
26
|
+
|
27
|
+
path = i
|
28
|
+
|
29
|
+
with open(path) as f:
|
30
|
+
|
31
|
+
lines = f.readlines()
|
32
|
+
|
33
|
+
lines_strip = [line.strip() for line in lines]
|
34
|
+
|
35
|
+
m = [line for line in lines_strip if 'test=' in line]
|
36
|
+
|
37
|
+
s = ''.join(m)
|
38
|
+
|
39
|
+
l = int(s.lstrip('test='))
|
40
|
+
|
41
|
+
print(l)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
ws.cell(row=j,column=2).value = l
|
46
|
+
|
47
|
+
j += 1
|
48
|
+
|
49
|
+
|
50
|
+
|
13
|
-
|
51
|
+
wb.save('C:...\samp.xlsx')
|
14
52
|
|
15
53
|
```
|
16
54
|
|
17
|
-
修正箇所は2箇所です。
|
18
|
-
|
19
|
-
一つ
|
55
|
+
一つのテキストファイルに一つの数値で、Excelのセルに保存していくということなので、ループを一つにしました。
|
20
|
-
|
21
|
-
セルの指定について、rowが行番号になり1,2,3…は1行目,2行目3行目…に相当し、columnが列番号になり1,2,3…はA列,B列,C列…に相当します。そのため、iをループさせることで、B1,B2,B3を指定していくことになります。
|
22
56
|
|
23
57
|
|
24
58
|
|
25
|
-
|
59
|
+
ワークブックとシートの指定をループの外に置き、ファイルのリスト`a`を`i`でループさせます。同時にExcelの行数に利用するための`j`もカウンタ変数として使用します。
|
26
60
|
|
61
|
+
本当は、リストとカウンタ変数を同時に使う方法もありますが、変化が多くなりそうなので使用していません。`for`と`enumerate`で検索してみてください。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
`s.lstrip('test=')`の部分は切り出した数字が文字列になっていますので、`int`で整数化しています。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
セルの指定は`ws.cell(row=j,column=2).value = l`です。
|
70
|
+
|
27
|
-
|
71
|
+
セルの指定について、rowが行番号になり1,2,3…は1行目,2行目3行目…に相当し、columnが列番号になり1,2,3…はA列,B列,C列…に相当します。そのため、カウンタ変数`j`をループさせることで、B1,B2,B3を指定していくことになります。
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
ループを抜けたところでエクセルファイルを保存して終了となります。
|
4
コードの修正
test
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
```Python
|
4
4
|
|
5
|
+
wb = px.Workbook()
|
6
|
+
|
7
|
+
ws = wb.active
|
8
|
+
|
5
9
|
for j in range(1,6):
|
6
|
-
|
7
|
-
wb = px.Workbook()
|
8
|
-
|
9
|
-
ws = wb.active
|
10
10
|
|
11
11
|
ws.cell(row=i,column=2).value = l
|
12
12
|
|
13
|
-
|
13
|
+
wb.save('C:...\samp.xlsx')
|
14
14
|
|
15
15
|
```
|
16
16
|
|
3
文言の追加
test
CHANGED
@@ -1,11 +1,27 @@
|
|
1
|
-
|
1
|
+
エラー該当部分は、以下のコードでいいのではないかと思います。
|
2
2
|
|
3
|
+
```Python
|
4
|
+
|
5
|
+
for j in range(1,6):
|
6
|
+
|
7
|
+
wb = px.Workbook()
|
8
|
+
|
9
|
+
ws = wb.active
|
10
|
+
|
11
|
+
ws.cell(row=i,column=2).value = l
|
12
|
+
|
13
|
+
wb.save('C:...\samp.xlsx')
|
14
|
+
|
15
|
+
```
|
16
|
+
|
17
|
+
修正箇所は2箇所です。
|
18
|
+
|
19
|
+
一つは`ws.cell(row=i,column=2).value = l`です。
|
20
|
+
|
3
|
-
rowが行番号になり1,2,3…は1行目,2行目3行目…に相当し、columnが列番号になり1,2,3…はA列,B列,C列…に相当します。そのため、iをループさせることで、B1,B2,B3を指定していくことになります。
|
21
|
+
セルの指定について、rowが行番号になり1,2,3…は1行目,2行目3行目…に相当し、columnが列番号になり1,2,3…はA列,B列,C列…に相当します。そのため、iをループさせることで、B1,B2,B3を指定していくことになります。
|
4
22
|
|
5
23
|
|
6
24
|
|
7
|
-
|
25
|
+
もう一つは`for j in range(1,6):`です。
|
8
26
|
|
9
|
-
|
10
|
-
|
11
|
-
一般に`range(n,m):`でnからm-1の連番を生成します。
|
27
|
+
質問者さんは`for j in range(5):`でループを回していますが、この場合、iは0から4までのループになりますので、セルB1からB5までに記入されたいのであれば、`for j in range(1,6):`とした方がよいと思います。一般に`range(n,m):`でnからm-1の連番を生成します。
|
2
文言の追加
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
`ws.cell(row=i,column=2).value = l`でセルを指定して値を書き込めます。
|
2
|
+
|
3
|
+
rowが行番号になり1,2,3…は1行目,2行目3行目…に相当し、columnが列番号になり1,2,3…はA列,B列,C列…に相当します。そのため、iをループさせることで、B1,B2,B3を指定していくことになります。
|
2
4
|
|
3
5
|
|
4
6
|
|
@@ -6,4 +8,4 @@
|
|
6
8
|
|
7
9
|
|
8
10
|
|
9
|
-
`range(n,m):`でnからm-1の連番を生成します
|
11
|
+
一般に`range(n,m):`でnからm-1の連番を生成します。
|
1
一部、語句の修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
`ws.cell(row=i,column=2).value = l`でセルを指定して値を書き込めます。
|
2
2
|
|
3
3
|
|
4
4
|
|