前提
初めて質問をさせていただきます。
Pythonのopenpyxlを使用し、データの集計の自動化をしようとしています。
調べてもどうしても上手くプログラムを書くことができず、ご教授頂けますと助かります・・・。
###実施したいこと
◆集計したいデータについて、以下のような記述の複数あるCSVファイルがあります。
ID 色 回数 データ
101 Blue 1 11
101 Blue 2 22
101 Blue 3 33
101 Blue 4 44
101 Blue 5 55
101 pink 1 0.3
101 pink 2 0.4
101 pink 3 0.5
101 pink 4 0.6
101 pink 5 1.4
108 Blue 1 90
108 Blue 2 94
108 Blue 3 67
108 Blue 4 67.3
108 Blue 5 70.3
108 pink 1 3.3
108 pink 2 5.4
108 pink 3 6.5
108 pink 4 7.6
108 pink 5 8.4
CSVファイルから値を取得し、以下のように続くように値を取得、Excelに反映させたいです。
. 101 101 108 108 #ID
. blue pink blue pink #色
1 11 0.3 90 3.3 #データ
2 22 0.4 67 5.4
3 33 0.5 67.3 6.5
4 44 0.6 70.3 7.6
5 55 1.4 3.3 8.4
↑回数
該当のソースコード
python
1 2import openpyxl 3import os 4 5# 新規スプレッドシート作成 6wb = openpyxl.Workbook() 7sheet = wb.active 8 9n = 0 10 11for filename in os.listdir("."): 12 if not filename.endswith('.csv'): 13 continue 14 15 #ファイルごと列番号を1,2,3...と増やしていく 16 n += 1 17 text_file = open(filename, 'r') 18 19 #行に追加する m =index番号, line = 要素の値 20 for m, line in enumerate(text_file): 21 sheet.cell(row=m+1, column=n, value=line.strip()) 22 23 text_file.close() 24 25wb.save('data.xlsx') 26 27
試したこと
for m, line in enumerate(text_file):
sheet.cell(row=m+1, column=n+1, value=line.strip())
を参考に書き換えてみたのですが、上手くいかず・・(あまりにもグチャグチャなので載せるのはやめておきます。。。)
現状では、ファイルのデータが一行に集約されて入っている状態です。。
初歩的な質問で恐縮ですが、何卒よろしくお願いいたします。
ファイルの回数指定についても
for i in range(1,5):
cell = sheet.cell(row=i+1, column=1, value=(i)
としても上手く反映ができずでした。。
回答3件
あなたの回答
tips
プレビュー