アプリ版:「スタンプのみでお礼する」機能のリリースについて

python3でExcel操作が出来るのかと興味本位で学習中です。
ググって下記のコードを実行してみましたがエラーが出ます。
WinでもMacでも試してみましたが、どちらも同じエラーです。

下記コードを1行ずつ書いて実行する(インタラクティブシェル?)でも試してみましたが、
1行目のimport openpyxl ではエラーがでず、2行目を実行した時にエラーが出ます。

import openpyxl
wb = openpyxl.load_workbook('testxl.xlsx')
wb.get_sheet_names()

を実行すると、下記のようなエラーがでます。

エラー①
Warning (from warnings module):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/reader/worksheet.py", line 319
warn(msg)
UserWarning: Unknown extension is not supported and will be removed


ちなみに3行まとめて実行した場合には、3行目に対して下記のエラーが出ます。

エラー②
wb.get_sheet_names()
DeprecationWarning: Call to deprecated function get_sheet_names (Use wb.sheetnames).

そこで3行目をprint (wb.sheetnames)にしたら、エラー②は出なくなりましたが、相変わらずエラー①は出ます・・・。
まだ本やネットで検索しながら探り探りの超初心者ですので、お知恵を頂けたらと思います。

A 回答 (1件)

プログラムをするときは,エラーを読んで解決策を考えるようにしてください。


また,エラー (error) とワーニング (warning) は違うものであることにも注意してください。
warning の場合は,必ずしも間違っているとは限らないです。

エラー① は「サポートされていない拡張子が指定されている」という warning です。
これに関してはこの文章だけでは分からないのですが,
HPを見に行くと読み込みに失敗したときに,この warning が出るようになっているようです。
正しくないファイルを開いたか(存在しない,Excelでないファイルなど),
あるいは「条件付き書式」など特定の機能を含むファイルはサポートされていないようです。
あくまで warning なので,途中まで読み込めているかもしれません。

エラー② は「推奨されていない関数 get_sheet_names が使われた(wb.sheetnames を使え)」
と書かれた warning です。
おそらく正しく動いているので,print(wb.get_sheet_names()) とかやれば,
sheet の名前が表示されるのではないでしょうか。
ただし非推奨 (deprecation) なので,wb.sheetnames を使うようにしてください。

なぜスクリプトとして実行すると最初の warning が出なくなるのかは
よく分かりませんが,正しい excel ファイルを開いているかを確認すれば,
解決するのではないでしょうか。
    • good
    • 2
この回答へのお礼

ご丁寧なご回答、有難うございます。
エラーとワーニングの違いにも留意してまいります。

「正しいexcelファイルを」とのアドバイスでしたので、何度も確認してやり直し等しましたが、やっぱりエラー①(実際にはワーニングですが)の現象は消えません。「条件付き書式」などの件も考慮し、セルに入力のあるsheet1を削除して試してみましたが、やっぱりダメです。

Warning (from warnings module):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/openpyxl/reader/worksheet.py", line 319
warn(msg)
UserWarning: Unknown extension is not supported and will be removed
['Sheet2', 'Sheet3']


シート2と3があるファイルを対象としたので、結果は合っていますがワーニングが出たままなので気になります。

お礼日時:2018/02/11 10:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています