天天看点

python无法读取excel_使用openpyxl无法读取Excel文件

python无法读取excel_使用openpyxl无法读取Excel文件

I have a list of excel files with similar last row. It contains private information about client (his name, surname, phone). Each excel file corresponds to a client. I need to make one excel file with all data about every client. I decide to do it automatically, so looked to openpyxl library. I wrote the following code, but it doesn't work correctly.

import openpyxl

import os

import glob

from openpyxl import load_workbook

from openpyxl import Workbook

import openpyxl.styles

from openpyxl.cell import get_column_letter

path_kit = 'prize_input/kit'

#creating single document

prize_info = Workbook()

prize_sheet = prize_info.active

file_array_reciever = []

for file in glob.glob(os.path.join(path_kit, '*.xlsx')):

file_array_reciever.append(file)

row_num = 1

for f in file_array_reciever:

f1 = load_workbook(filename=f)

sheet = f1.active

for col_num in range (3, sheet.max_column):

prize_sheet.cell(row=row_num, column=col_num).value = \

sheet.cell(row=sheet.max_row, column=col_num).value

prize_info.save("Ex.xlsx")

I get this error:

Traceback (most recent call last):

File "/Users/zkid18/PycharmProjects/untitled/excel_test.py", line 43, in

f1 = load_workbook(filename=f)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/openpyxl/reader/excel.py", line 183, in load_workbook

wb.active = read_workbook_settings(archive.read(ARC_WORKBOOK)) or 0

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/zipfile.py", line 1229, in read

with self.open(name, "r", pwd) as fp:

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/zipfile.py", line 1252, in open

zinfo = self.getinfo(name)

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/zipfile.py", line 1196, in getinfo

'There is no item named %r in the archive' % name)

KeyError: "There is no item named 'xl/workbook.xml' in the archive"

Looks like it is a problem with reading file.

I don't understand where it gets an item named 'xl/workbook.xml' in the archive.

解决方案

Depending on which version you are using, this could be a bug in openpyxl. For example, in 1.6.1 a bug was introduced exhibiting this behavior. Reverting to 1.5.8 fixed it. There was a fix according to this openpyxl ticket; though the ticket doesn't say when the fix was delivered, it was committed in early 2013. I upgraded to 1.6.2 and the error went away.