我正在使用下面的确切脚本(文件路径除外)尝试将xls转换为xlsx。该脚本成功,但未产生任何输出。我是否缺少一些基本的东西,例如输入一些变量值或文件名,或者没有将文件正确保存为xlsx?
import xlrd
import os
from openpyxl.workbook import Workbook
filenames = os.listdir("file_path")
for fname in filenames:
if fname.endswith(".xls"):
def cvt_xls_to_xlsx(fname):
book_xls = xlrd.open_workbook(fname)
book_xlsx = Workbook()
sheet_names = book_xls.sheet_names()
for sheet_index in range(0,len(sheet_names)):
sheet_xls = book_xls.sheet_by_name(sheet_names[sheet_index])
if sheet_index == 0:
sheet_xlsx = book_xlsx.active
sheet_xlsx.title = sheet_names[sheet_index]
else:
sheet_xlsx = book_xlsx.create_sheet(title=sheet_names[sheet_index])
for row in range(0, sheet_xls.nrows):
for col in range(0, sheet_xls.ncols):
sheet_xlsx.cell(row = row+1 , column = col+1).value = sheet_xls.cell_value(row, col)
cvt_xls_to_xlsx(fname)
book_xlsx.save(fname.xlsx)
我已经使用最后两行命令更新了上面的脚本,但是现在出现以下错误消息:
文件“ C:\ Users \ local \ Documents \ Tasks \ Python \ Excelconvert.py”,第26行,在 cvt_xls_to_xlsx(fname)
cvt_xls_to_xlsx中的文件“ C:\ Users \ local \ Documents \ Tasks \ Python \ Excelconvert.py”,第10行 book_xls = xlrd.open_workbook(fname)
open_workbook中的文件“ C:\ Users \ local \ Python34 \ lib \ site-packages \ xlrd__init __。py”,第157行 ragged_rows = ragged_rows,
open_workbook_xls中的文件“ C:\ Users \ local \ Python34 \ lib \ site-packages \ xlrd \ book.py”,第92行 biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
getbof中的文件“ C:\ Users \ local \ Python34 \ lib \ site-packages \ xlrd \ book.py”,行1278 bof_error('期望的BOF记录;找到%r'%self.mem [savpos:savpos + 8])
文件“ C:\ Users \ local \ Python34 \ lib \ site-packages \ xlrd \ book.py”,行1272,在bof_error中 引发XLRDError('不支持的格式或损坏的文件:'+ msg) xlrd.biffh.XLRDError:不支持的格式或文件损坏:预期的BOF记录;找到b'#-复制'
“#-复制”是什么意思?我见过其他人建议它与文件格式有关,但通常这是xml错误,而不是我的上面的错误。任何解决方案将不胜感激。