使用xlrd

时间:2018-12-21 22:03:01

标签: openpyxl xlsx xls xlrd

我正在使用下面的确切脚本(文件路径除外)尝试将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错误,而不是我的上面的错误。任何解决方案将不胜感激。

0 个答案:

没有答案