質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

687閲覧

プログラムを実行しているフォルダ内の複数のファイルを読み込んで、別々にエクセルに書き込みたい

Rururu_version

総合スコア2

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/21 11:43

前提・実現したいこと

Python初心者です

プログラムを実行しているフォルダ内の複数のファイルを読み込んで、別々にエクセルに書き込みたい

フォルダ内にファイル1, ファイル2・・といった複数のファイルがあり、それぞれの特定の範囲の文字列をエクセルファイルを新規作成して別々の範囲に書き込みたいです。

ファイル1の指定した範囲の内容ををエクセルSheet1の指定した範囲に書き込む
ファイル2の指定した範囲の内容を同一エクセルファイルの同一シートの別の範囲に書き込むといったことを行いたいです。

発生している問題・エラーメッセージ

指定した範囲の内容が書き込まれない。
ソースコードのbook = openpyxl.load_workbook('test.xlsx')以降が上手くいっていないようです。
print(line[15:20])で望んでいる範囲が出力できているので、指定している範囲は読み込めているのではないかと思っています。

sheet[C10:H557] = line[15:20] NameError: name 'C10' is not defined

該当のソースコード

Python

1import openpyxl 2 3 4book = openpyxl.Workbook() 5 6sheet = book['Sheet'] 7sheet.title = 'Sheet1' 8 9sheet['A1'] = 'gromacs2018.7' 10sheet['C1'] = 'vs.O1' 11sheet['C3'] = '最小値(gr)' 12sheet['D3'] = '最小値(gr)' 13sheet['E3'] = '最小値(gr)' 14sheet['F3'] = '最小値(gr)' 15sheet['G3'] = '最小値(gr)' 16sheet['H3'] = '最小値(gr)' 17sheet['C7'] = '距離(Å)' 18sheet['D7'] = '距離(Å)' 19sheet['E7'] = '距離(Å)' 20sheet['F7'] = '距離(Å)' 21sheet['G7'] = '距離(Å)' 22sheet['H7'] = '距離(Å)' 23sheet['L7'] = '配位数' 24sheet['N7'] = '配位数' 25sheet['M7'] = '配位数' 26sheet['O7'] = '配位数' 27sheet['P7'] = '配位数' 28sheet['Q7'] = '配位数' 29sheet['A10'] = 'r(nm)' 30sheet['B10'] = 'r(Å)' 31sheet['C10'] = 'HA11' 32sheet['L10'] = 'HA11' 33sheet['D10'] = 'CA11' 34sheet['M10'] = 'CA11' 35sheet['E10'] = 'HA21' 36sheet['N10'] = 'HA21' 37sheet['F10'] = 'CA21' 38sheet['O10'] = 'CA21' 39sheet['G10'] = 'HA3' 40sheet['P10'] = 'HA3' 41sheet['H10'] = 'CA3' 42sheet['Q10'] = 'CA3' 43 44book.save('test.xlsx') 45 46import glob 47 48# カレントディレクトリのxvgファイルを読み込む 49for file_list in glob.glob('*.xvg'): 50 51# ファイルを開く、with openでclose処理不要 52 with open(file_list) as f: 53 print(file_list) 54 for line in f.readlines()[25:572]:# 範囲を指定して改行のnを消すループ 55 line =line.rstrip() 56 print(line[15:20]) 57 58book = openpyxl.load_workbook('test.xlsx') 59for line in sheet['C10':'H557']: 60 sheet[C10:H557] = line[15:20] 61 62book.save('test.xlsx')

試したこと

どうすればやりたいことが出来るのかいろいろ調べましたが出てこないようなので自分なりに考えて作りました。

補足情報(FW/ツールのバージョンなど)

python3.9.6をwindows10で使用しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

すべてが解決したわけではありませんが、読み込んだファイルをエクセルへ記入するところは以下のコードで書き込めました。
ただし、読み込むコードが、書き込む前に来ているので、最後に読み込んだファイルのみ書き込んでいるようです。

import openpyxl
import glob

book = openpyxl.Workbook()

sheet = book['Sheet']
sheet.title = 'Sheet1'

for file_list in glob.glob('*.txt'):
with open(file_list) as f:
line = f.readlines()

l = 0

for i in range(0,len(line)):
line_split = line[l].split()
sheet.cell(row = i+1, column =1).value = float(line_split[len(line_split)-1])
l += 1

book.save('test.xlsx')

投稿2021/08/22 06:46

Rururu_version

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1 sheet[C10:H557] = line[15:20]

python

1 sheet['C10:H557'] = line[15:20]

の誤りでしょう。

これを修正すれば、

NameError: name 'C10' is not defined

は出なくなります。

投稿2021/08/21 14:20

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rururu_version

2021/08/21 14:30

ご回答ありがとうございます。修正したところ、AttributeError: 'tuple' object has no attribute 'value' とエラーがでました。 tupleは使用していないと思うのですが、理由がおわかりでしたらご教示いただけますと幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問