Python xlrd.open_workbook генерирует ошибку: ValueError: недопустимый литерал для int () с основанием 10: ' - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь открыть файл Excel в python.(Сам Excel может открыть его без проблем).

Но при попытке прочитать его на python я получил ошибку: "ValueError: недопустимый литерал для int () с основанием 10: ''"

Как это вылечить?Или есть ли способ обойти?Может быть, какой-то другой пакет для чтения файлов Excel?

Это происходит с обоими xlrd.open_workbook и pd.read_excel на моем компе.


Странная вещь: если яоткройте его в Excel, а затем сохраните в Excel, затем такую ​​сохраненную версию - можно без проблем открыть с помощью python.Так что, возможно, файлы были сохранены в каком-то старом плохом Excel.Но у меня их много, поэтому удобное открытие-сохранение было бы болезненным.


Вот подробное сообщение об ошибке

----> 4 xlrd.open_workbook(dirName + fn )

C:\Anaconda3\lib\site-packages\xlrd\__init__.py in open_workbook(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows)
    420                 formatting_info=formatting_info,
    421                 on_demand=on_demand,
--> 422                 ragged_rows=ragged_rows,
    423                 )
    424             return bk

C:\Anaconda3\lib\site-packages\xlrd\xlsx.py in open_workbook_2007_xml(zf, component_names, logfile, verbosity, use_mmap, formatting_info, on_demand, ragged_rows)
    831         x12sheet = X12Sheet(sheet, logfile, verbosity)
    832         heading = "Sheet %r (sheetx=%d) from %r" % (sheet.name, sheetx, fname)
--> 833         x12sheet.process_stream(zflo, heading)
    834         del zflo
    835 

C:\Anaconda3\lib\site-packages\xlrd\xlsx.py in own_process_stream(self, stream, heading)
    546         for event, elem in ET.iterparse(stream):
    547             if elem.tag == row_tag:
--> 548                 self_do_row(elem)
    549                 elem.clear() # destroy all child elements (cells)
    550             elif elem.tag == U_SSML12 + "dimension":

C:\Anaconda3\lib\site-packages\xlrd\xlsx.py in do_row(self, row_elem)
    663                 if explicit_row_number and cell_name[charx:] != row_number:
    664                     raise Exception('cell name %r but row number is %r' % (cell_name, row_number))
--> 665             xf_index = int(cell_elem.get('s', '0'))
    666             cell_type = cell_elem.get('t', 'n')
    667             tvalue = None

ValueError: invalid literal for int() with base 10: ''

1 Ответ

0 голосов
/ 13 ноября 2018

Попробуйте

xlrd.open_workbook(dirName +str(fn)+".xlsx")

Или

xlrd.open_workbook(dirName +str(fn)+".xls")

...