2016-05-25 10 views
2

У меня есть файл xlsx с 1 листом. Я пытаюсь открыть его с помощью python 3 (xlrd lib), но я получаю пустой файл!Как с открытым файлом xlsx с python 3

Я использую этот код:

file_errors_location = "C:\\Users\\atheelm\\Documents\\python excel mission\\errors1.xlsx" 
workbook_errors = xlrd.open_workbook(file_errors_location) 

и у меня нет никаких ошибок, но когда я типа:

workbook_errors.nsheets 

я получаю "0", даже файл имеет несколько листов ... когда Я типа:

workbook_errors 

я получаю:

xlrd.book.Book object at 0x2.. 

любая помощь? благодаря

+0

Что происходит, когда вы называете workbook_errors.sheets() ', а затем 'workbook_errors.nsheets'? –

ответ

1

Есть два модуля для чтения файла XLS: openpyxl и xlrd

Этот скрипт позволяет преобразовать данные первенствовать в список dictionnaries с помощью xlrd

import xlrd 

workbook = xlrd.open_workbook('C:\\Users\\atheelm\\Documents\\python excel mission\\errors1.xlsx') 
workbook = xlrd.open_workbook('C:\\Users\\atheelm\\Documents\\python excel mission\\errors1.xlsx', on_demand = True) 
worksheet = workbook.sheet_by_index(0) 
first_row = [] # The row where we stock the name of the column 
for col in range(worksheet.ncols): 
    first_row.append(worksheet.cell_value(0,col)) 
# tronsform the workbook to a list of dictionnary 
data =[] 
for row in range(1, worksheet.nrows): 
    elm = {} 
    for col in range(worksheet.ncols): 
     elm[first_row[col]]=worksheet.cell_value(row,col) 
    data.append(elm) 
print data 
+0

, когда я печатаю: "workheet = workbook.sheet_by_index (0)" Я получаю сообщение об ошибке: "индекс списка вне диапазона ...." , потому что, если я печатаю таблицу, я получаю 0! –

+0

Тогда ваш файл пуст !!! –

+0

нет ... Я попытался открыть новый файл, он работал хорошо .. кажется, файл заблокирован или somthing –

0

Вы можете использовать панд pandas.read_excel так же, как pandas.read_csv:

import pandas as pd 
file_errors_location = 'C:\\Users\\atheelm\\Documents\\python excel mission\\errors1.xlsx' 
df = pd.read_excel(file_errors_location) 
print(df) 

 Смежные вопросы

  • Нет связанных вопросов^_^