実現したいこと
システムに取り込み可能なcsvファイル形式に
誰でも自動変換可能なpythonexeファイルを作成したいです
前提
pythonにて会社の帳票エクセルファイルを読み込み、その中の一部をコピーし、
システムに取り込み可能な形式にて自動出力可能なexeファイルを作成したいです。
読み込むエクセルファイルは会社の帳票に内容を入力したものです。
現状、そのままの形式ではシステムに取り込みが出来ないので、
一定の条件を満たされた形式に手作業にてコピー&ペーストにて書き換えています。
コピー&ペースト作業を自動化したいので、
誰でも操作可能なexeファイルを作成します。
発生している問題・エラーメッセージ
システム取込csv用ファイルに必要なヘッダーを追加したいのですが、
以下のエラーメッセージが発生しました。
取り込み用ファイル※一部切り抜きしています

目指しているファイル形式※一部切り抜きしています

エラーメッセージ ['工程パターンコード', '行№', '工程№', '工程外径', '備考'] --------------------------------------------------------------------------- Error Traceback (most recent call last) <ipython-input-15-e091b70bd9cf> in <module> 31 wrtr=csv.writer(f,delimiter=',') 32 wrtr.writerow(header) # ヘッダーを書き込む ---> 33 wrtr.writerows(values) 34 f.close() 35 Error: iterable expected, not int ### 該当のソースコード ```python ソースコード import openpyxl import csv header = ['工程パターンコード', '行№','工程№', '工程外径','備考'] wb = openpyxl.load_workbook("1.xlsx") ws = wb.worksheets[0] for row in ws["C29:O48"]: values = [] for col in row: values.append(col.value) del values[4:9] del values[3:7] if values[2] is None: print(values) else: values[1]=values[0] f=open('取込'+'.csv','a',newline='') print(header) wrtr=csv.writer(f,delimiter=',') wrtr.writerow(header) # ヘッダーを書き込む wrtr.writerows(values) f.close()
おそらく、values は1行分のデータ(リスト)なので、writerows ではなく writerow ではないでしょうか。
wrtr.writerow(values)
図を添付しようとしているようですが、表示されていません。確認の上修正お願いします。
writerowに変更した所、エラーはなくなりました。しかし、繰り返し処理がwrtr.writerow(header)も適用されております。(位置的に当然ですが・・・)
wrtr.writerow(header)はさせない方法などありますか?
for 文の外側へ移動させればよいのではないでしょうか。
wb = openpyxl.load_workbook("1.xlsx")
ws = wb.worksheets[0]
f=open('取込'+'.csv','a',newline='')
wrtr=csv.writer(f,delimiter=',')
wrtr.writerow(header) # ヘッダーを書き込む
for row in ws["C29:O48"]:
values = []
そして、f.close() は for ループが全て完了してから実行します。
ありがとうございました。完璧です!
回答1件
あなたの回答
tips
プレビュー