
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)にしたら、エラー②は出なくなりましたが、相変わらずエラー①は出ます・・・。
まだ本やネットで検索しながら探り探りの超初心者ですので、お知恵を頂けたらと思います。
No.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 ファイルを開いているかを確認すれば,
解決するのではないでしょうか。
ご丁寧なご回答、有難うございます。
エラーとワーニングの違いにも留意してまいります。
「正しい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があるファイルを対象としたので、結果は合っていますがワーニングが出たままなので気になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
レコード登録時に「演算子があ...
-
ACCESS DAO で不要なテーブルの...
-
IMEの単語登録について
-
フランスの生年月日(jj/mm/aaaa)
-
【VBA】ワークブックを開く時に...
-
【Access】Excelインポート時に...
-
VBScriptのCreateFolderについて
-
インポート時のエラー「データ...
-
error C2664: 'LPCTSTR' に変換...
-
エクセルVBAで#N/Aのようなエ...
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
VBA データ(特定値)のある最...
-
Filter関数を用いた結果、何も...
-
ASP.NETのサーバー移行に伴うエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
マクロで"#N/A"のエラー行を削...
-
文字列内で括弧を使うには
-
String""から型'Double'への変...
-
【Access】Excelインポート時に...
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
ACCESSで値を代入できないとは?
-
VBA エクセル で FIND でのエラ...
-
Filter関数を用いた結果、何も...
-
レコード登録時に「演算子があ...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
「実行時エラー '3167' レコー...
おすすめ情報