回答編集履歴

3

修正

2021/05/30 13:24

投稿

退会済みユーザー
test CHANGED
@@ -32,7 +32,9 @@
32
32
 
33
33
  [追記]
34
34
 
35
- ・数値を貼り付けるには、load_workbookでdata_only=Trueを指定します。
35
+ ~~・数値を貼り付けるには、load_workbookでdata_only=Trueを指定します。~~
36
+
37
+ ・書式が文字列となっている数字を、数値として貼り付ける場合は、float()で囲ってください。
36
38
 
37
39
 
38
40
 
@@ -106,17 +108,19 @@
106
108
 
107
109
  k = (i - 2) % 10 + 2
108
110
 
109
- ws2.cell(k, 1).value = ws1[A].value
111
+ ws2.cell(k, 1).value = float(ws1[A].value)
110
112
 
111
- ws2.cell(k, 2).value = ws1[B].value
113
+ ws2.cell(k, 2).value = float(ws1[B].value)
112
114
 
113
- ws2.cell(k, 3).value = ws1[C].value
115
+ ws2.cell(k, 3).value = float(ws1[C].value)
114
116
 
115
- ws2.cell(k, 4).value = ws1[D].value
117
+ ws2.cell(k, 4).value = float(ws1[D].value)
116
118
 
117
- ws2.cell(k, 5).value = ws1[E].value
119
+ ws2.cell(k, 5).value = float(ws1[E].value)
118
120
 
119
- ws2.cell(k, 6).value = ws1[F].value
121
+ ws2.cell(k, 6).value = float(ws1[F].value)
122
+
123
+
120
124
 
121
125
 
122
126
 
@@ -172,7 +176,7 @@
172
176
 
173
177
  row=num_row+1,
174
178
 
175
- column=num_column+1).value = cell.value
179
+ column=num_column+1).value = float(cell.value)
176
180
 
177
181
  i += 1
178
182
 

2

追加

2021/05/30 13:24

投稿

退会済みユーザー
test CHANGED
@@ -30,13 +30,19 @@
30
30
 
31
31
  同じように余りを求める式を使っています。
32
32
 
33
+ [追記]
34
+
35
+ ・数値を貼り付けるには、load_workbookでdata_only=Trueを指定します。
36
+
37
+
38
+
33
39
  ```
34
40
 
35
41
  import openpyxl
36
42
 
37
43
 
38
44
 
39
- wb = openpyxl.load_workbook('data.xlsx')
45
+ wb = openpyxl.load_workbook('data.xlsx', data_only=True)
40
46
 
41
47
  ws1 = wb['リスト']
42
48
 
@@ -130,7 +136,7 @@
130
136
 
131
137
 
132
138
 
133
- wb = openpyxl.load_workbook('data.xlsx')
139
+ wb = openpyxl.load_workbook('data.xlsx', data_only=True)
134
140
 
135
141
  ws1 = wb['リスト']
136
142
 

1

書き込み先の行頭誤り修正、例外処理追加

2021/05/30 10:45

投稿

退会済みユーザー
test CHANGED
@@ -122,7 +122,7 @@
122
122
 
123
123
  # 別解
124
124
 
125
- 下記のようにすればものすごく短いコードになります。
125
+ 下記のようにすれば短いコードになります。
126
126
 
127
127
  ```
128
128
 
@@ -142,11 +142,19 @@
142
142
 
143
143
  rng1 = ws1["A2":"F1001"]
144
144
 
145
- i = 1
145
+ i = 0
146
146
 
147
147
  for idx in range(1,101):
148
148
 
149
+ try:
150
+
149
- ws2 = wb.worksheets[idx]
151
+ ws2 = wb.worksheets[idx]
152
+
153
+ except IndexError:
154
+
155
+ print(f"エラー:存在しないシートインデックス[{idx}]が指定されました。")
156
+
157
+ break
150
158
 
151
159
  for num_row in range(1,11):
152
160
 
@@ -160,7 +168,7 @@
160
168
 
161
169
  column=num_column+1).value = cell.value
162
170
 
163
- i+=1
171
+ i += 1
164
172
 
165
173
 
166
174