44818


openpyxlを用いてエクセルデータ(zipフォルダに入っていたので展開してｃｄに貼り付けたもの)を開こうとしたところ以下のエラーが発生しました。  
解決方法をご教授ください。

[code]

    Traceback (most recent call last):
      File "C:\Users\\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 118, in _validate_archive
        archive = ZipFile(filename, 'r', ZIP_DEFLATED)
      File "C:\Users\\Anaconda3\lib\zipfile.py", line 1108, in __init__
        self._RealGetContents()
      File "C:\Users\\Anaconda3\lib\zipfile.py", line 1175, in _RealGetContents
        raise BadZipFile("File is not a zip file")
    zipfile.BadZipFile: File is not a zip file
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<pyshell#6>", line 1, in <module>
        openpyxl.load_workbook("ファイル名")
      File "C:\Users\\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 171, in load_workbook
        archive = _validate_archive(filename)
      File "C:\Users\\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", line 121, in _validate_archive
        archive = ZipFile(f, 'r', ZIP_DEFLATED)
      File "C:\Users\\Anaconda3\lib\zipfile.py", line 1108, in __init__
        self._RealGetContents()
      File "C:\Users\\Anaconda3\lib\zipfile.py", line 1175, in _RealGetContents
        raise BadZipFile("File is not a zip file")
    zipfile.BadZipFile: File is not a zip file
    
[/code]

user名とファイル名は一応消しておきました。  
大変失礼しました。コードを載せ忘れていました。  
といっても2行ですが。

[code]

    import openpyxl
    openpyxl.load_workbook("ファイル名")
    
[/code]

です。

コメントでご指摘いただいたのでzipフォルダに入っていたものをそのまま操作してみましたところ下記エラーが出ました。

[code]

    Traceback (most recent call last):
      File "<pyshell#8>", line 1, in <module>
        openpyxl.load_workbook("ファイル名")
      File "C:\Users\\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", 
    line 178, in load_workbook
    wb_part = _find_workbook_part(package)
      File "C:\Users\\Anaconda3\lib\site-packages\openpyxl\reader\excel.py", 
    line 138, in _find_workbook_part
        raise IOError("File contains no valid workbook part")
    OSError: File contains no valid workbook part
    
[/code]

[追記]関係ないかもしれませんが、拡張子のxlsをxlsxに変更していることを追記しておきます。


CC BY-SA 4.0
2018-06-16T06:35:46.580
44796
2018-06-17T06:51:19.820
2018-06-17T00:54:19.063
27321
27321
question
python python3
python openpyxl error


どのようなコードが使われてるのか判りませんが、問題は zipファイルではないファイルを、zipファイルを開く関数で開こうとした事にあります。

「zipフォルダに入っていたので展開してｃｄに貼り付けた」は、余分な（要らない）操作でした。  
展開するまえのzipファイルを開けば、問題ないはずです。


CC BY-SA 4.0
2018-06-16T07:31:31.520
44798
2018-06-16T07:31:31.520
217
44796
answer


・問題だった箇所  
ファイル名から拡張子を`.xls`から`.xlsx`に書き換えました。

・解決に至った行動  
一見変更できているように見えていましたが、一度エクセルファイルを開き名前を付けて保存するの画面で拡張子の確認をしたら、`.xlt`という見慣れぬ拡張子になっていました。  
保存時に形式を選べるのでその画面で拡張子を変更することで解決しました。

力を貸してくださった方々ありがとうございました。


CC BY-SA 4.0
2018-06-17T00:52:59.997
44818
2018-06-17T00:52:59.997
27321
44796
answer


追加情報です。すでにご存知かもしれませんが、Officeのフォーマットはdocx/xlsxその他から、複数のXMLファイルで構成されています。(一度、ファイルの拡張しをzipに変えて、unzipすると、unzipできてしまうことにちょっと感動します。）普通にこれらを扱おうとすると、unzip→XMLパースとなるため、解析側は、unzipしよとしたけど、ZIPファイルじゃないよ！！というエラーになります。（不親切ですが。。）今回の事象はこのあたりに原因があるのかと思います。  
また、このことを知っているだけで、UNZIPできない→ZIP前提→xlsx前提とわかるので
metropolisさんのおっしゃっている内容に自力でたどり着くことが可能です。


CC BY-SA 4.0
2018-06-17T06:51:19.820
44820
2018-06-17T06:51:19.820
10174
44796
answer