Excel×Python最速術を解きながら進めているのですが、
「zipfile.BadZipFile: File is not a zip file」
のエラーが発生してしまいました。
テキスト通りに進めているものの思うように進まないので皆様のお知恵をお借りできれば嬉しいです。
コード ```import pathlib from socket import gaierror # 標準ライブラリ import openpyxl # 外部ライブラリ pip install openpyxl import csv # 標準ライブラリ lwb = openpyxl.Workbook() #売上一覧表ワークブック lsh = lwb.active #売上一覧表ワークシート list_row = 1 path = pathlib.Path("../data/sales") #相対パス指定 for pass_obj in path.iterdir(): if pass_obj.match("*.xlsx"): wb = openpyxl.load_workbook(pass_obj) for sh in wb: for dt_row in range(9,19): if sh.cell(dt_row, 2).value != None: #より説明的なコード #lsh.cell(row=list_row, column=1).value = \ # sh.cell(row=2, column=7).value #伝票NO lsh.cell(list_row, 1).value = sh.cell(2, 7).value #伝票NO lsh.cell(list_row, 2).value = sh.cell(3, 7).value #日付 lsh.cell(list_row, 3).value = sh.cell(4, 3).value #得意先コード lsh.cell(list_row, 4).value = sh.cell(7, 8).value #担当者コード lsh.cell(list_row, 5).value = sh.cell(dt_row, 1).value #No lsh.cell(list_row, 6).value = sh.cell(dt_row, 2).value #商品コード lsh.cell(list_row, 7).value = sh.cell(dt_row, 3).value #商品名 lsh.cell(list_row, 8).value = sh.cell(dt_row, 4).value #数量 lsh.cell(list_row, 9).value = sh.cell(dt_row, 5).value #単価 lsh.cell(list_row, 10).value = sh.cell(dt_row, 4).value * \ sh.cell(dt_row, 5).value #金額 lsh.cell(list_row, 11).value = sh.cell(dt_row, 7).value #備考 list_row += 1 lwb.save("..\data\sales\salesList.xlsx") """ with open("..\data\sales\salesList.csv","w",encoding="utf_8_sig") as fp: #file pointaの略称 writer = csv.writer(fp, lineterminator="\n") for row in lsh.rows: writer.writerow([col.value for col in row])
下記はターミナルでの反応です
zhenren63@rooter 03 % cd ./data zhenren63@rooter data % ls sales sample.xlsx zhenren63@rooter data % /usr/local/bin/python /Users/zhenren63/Desktop/python_prg/sales_slip2csv.py Traceback (most recent call last): File "/Users/zhenren63/Desktop/python_prg/sales_slip2csv.py", line 13, in <module> wb = openpyxl.load_workbook(pass_obj) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 315, in load_workbook reader = ExcelReader(filename, read_only, keep_vba, File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 124, in __init__ self.archive = _validate_archive(fn) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 96, in _validate_archive archive = ZipFile(filename, 'r') File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/zipfile.py", line 1258, in __init__ self._RealGetContents() File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/zipfile.py", line 1325, in _RealGetContents raise BadZipFile("File is not a zip file") zipfile.BadZipFile: File is not a zip file zhenren63@rooter data %
ファイルを正しいディレクトリ移動したものの同様のエラーが発生しております。
zhenren63@rooter python_prg % ls
Sample22030801.xlsx sales_slip2csv.py sample220308.py sample4.py testsample.py
cell_scan.py sample2.py sample3.py sample5.py
zhenren63@rooter python_prg % /usr/local/bin/python /Users/zhenren63/Desktop/9593/日経BP/excel_python/03/python_prg/sales_sli
p2csv.py
Traceback (most recent call last):
File "/Users/zhenren63/Desktop/9593/日経BP/excel_python/03/python_prg/sales_slip2csv.py", line 13, in <module>
wb = openpyxl.load_workbook(pass_obj)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 315, in load_workbook
reader = ExcelReader(filename, read_only, keep_vba,
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 124, in __init__
self.archive = _validate_archive(fn)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/openpyxl/reader/excel.py", line 96, in _validate_archive
archive = ZipFile(filename, 'r')
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/zipfile.py", line 1258, in __init__
self._RealGetContents()
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/zipfile.py", line 1325, in _RealGetContents
raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
zhenren63@rooter python_prg %
エラーの出ているエクセルファイルはExcelで問題なく開くことが出来ますか?
このままではコードが読みづらいので、質問を編集し、</>(コードの挿入)ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
y_waiwai様
早速編輯致しました。
meg_様
エクセルファイルは開くことできます
