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

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

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

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

Q&A

解決済

2回答

1812閲覧

appendでなぜシートに書き込まれるのでしょうか?

usagiwhip

総合スコア122

Python

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

0グッド

0クリップ

投稿2022/02/07 11:12

実行元のエクセル
イメージ説明

実行先のエクセル
イメージ説明

append はリストの追加だと認識しているのですが、なぜ
out_sheet.append([name])
の処理でセルに書き込みがされるのでしょうか?

import openpyxl as excel book = excel.Workbook() book.save('name_combaine.xlsx') in_file = './0src/ch3/name2.xlsx' out_file = 'name_combaine.xlsx' in_book = excel.load_workbook(in_file) in_sheet = in_book.worksheets[0] out_book = excel.load_workbook(out_file) out_sheet = out_book.active for row in in_sheet.iter_rows(): sei = row[0].value na = row[1].value name = sei + ' ' +na out_sheet.append([name]) print(name) out_book.save(out_file)

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

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

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

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

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

meg_

2022/02/07 11:43

> append はリストの追加だと認識しているのですが、なぜout_sheet.append([name])の処理でセルに書き込みがされるのでしょうか? out_sheetはリストではないと思いますので、挙動が異なるのかと思います。
guest

回答2

0

append はリストの追加だと認識しているのですが、なぜout_sheet.append([name]) 処理でセルに書き込みがされるのでしょうか?

そのように作ってあるからとしか言えませんが、ちょっと説明してみます。


リストのappendメソッドを呼ぶと、引数に指定されたデータがそのリストに追加されます。 それはリストのappendメソッドがそのように実装されているからです。

インスタンスのクラスが違えば、同じ名前の関数でも同じ動作をするとは限りません。
たとえば、数値の「+」は加算をしますが、文字列の「+」は結合をします。

out_sheetはworksheetのインスタンスですが、このworksheet.appendメソッドは、指定されたリストをシートの最後に追加するという動作をします。

使おうとしている関数/メソッドがどのような動作をするかを確認するには、ドキュメントを参照しましょう。

投稿2022/02/07 12:04

TakaiY

総合スコア14379

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

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

0

ベストアンサー

同じ append という名前でも属しているクラスによって動作が異なります。今回の場合、out_sheetopenpyxl.worksheet.worksheet.Worksheet クラスのインスタンスです。このクラスの append メソッドは以下の示す通り、"Appends a group of values at the bottom of the current sheet" という処理を行います。

python

1>>> import openpyxl as excel 2>>> book = excel.Workbook() 3>>> out_sheet = book.active 4>>> help(out_sheet.append) 5Help on method append in module openpyxl.worksheet.worksheet: 6 7append(iterable) method of openpyxl.worksheet.worksheet.Worksheet instance 8 Appends a group of values at the bottom of the current sheet. 9 10 * If it's a list: all values are added in order, starting from the first column 11 * If it's a dict: values are assigned to the columns indicated by the keys (numbers o> 12 13 :param iterable: list, range or generator, or dict containing values to append 14 :type iterable: list|tuple|range|generator or dict 15 16 Usage: 17 18 * append(['This is A1', 'This is B1', 'This is C1']) 19 * **or** append({'A' : 'This is A1', 'C' : 'This is C1'}) 20 * **or** append({1 : 'This is A1', 3 : 'This is C1'}) 21 22 :raise: TypeError when iterable is neither a list/tuple nor a dict

投稿2022/02/07 11:40

melian

総合スコア21185

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

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

usagiwhip

2022/02/07 11:43

すごい!!天才ですか!ありがとうございます。 import した機能ごとで同じ 単語でも別の働きしてしまうんですね。 今回のことで、pythonの処理 openpyxl その他でも同様のことが起きるということを学びました 複数の切り口で調べるようにします 本当にありがとうございます。
otn

2022/02/08 05:35

> import した機能ごとで同じ 単語でも別の働きしてしまうんですね。 importした機能単位ごとに違うんじゃなくて、クラスごとに違います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問