2017-06-26 7 views
0

sheet1、sheet2、sheet3などの名前のワークブックに複数のExcelシートがあり、各シートのデータをヘッダーをキーとして辞書に変換しています。しかし、今では上記の辞書のそれぞれにキーとしてシート名を追加するネストされた辞書を作成したいと思います。私のテーブルは、このフォームの複数のシートがあります。 シート1をシート名をキーとして使用して、PythonでExcelブックから辞書を作成する

IP Address  prof  type 
xx.xx.xx  abc  xyz 
xx.xx.xx  efg  ijk 

Sheet2の

IP Address  prof  type 
xx.xx.xx  abc  xyz 
xx.xx.xx  efg  ijk 

は今、私はこのような試みた:

[{'IP Address': 'xx.xx.xx', 'prof': 'abc', 'type': 'xyz'}, {'IP Address': 
'xx.xx.xx', 'prof': 'efg', 'type': 'ijk'}] 

what I need is : 
    [{'Sheet1':{'IP Address': 'xx.xx.xx', 'prof': 'abc', 'type': 'xyz'}, {'IP 
    Address': 'xx.xx.xx', 'prof': 'efg', 'type': 'ijk'}}, 
    {'Sheet2':{'IP Address': 'xx.xx.xx', 'prof': 'abc', 'type': 'xyz'}, {'IP 
     Address': 'xx.xx.xx', 'prof': 'efg', 'type': 'ijk'}}, 
     ] 

:この印刷し

from xlrd import open_workbook 

book = open_workbook('workbook.xls') 
sheet = book.sheet_by_index(0) 
sheet_names = book.sheet_names() 

# reading header values 
keys = [sheet.cell(0, col_index).value for col_index in range(sheet.ncols)] 

dict_list = [] 
for row_index in range(1, sheet.nrows): 
    d = {keys[col_index]: sheet.cell(row_index, col_index).value 
     for col_index in range(sheet.ncols)} 
    dict_list.append(d) 

print (dict_list) 

私はproblを持っているブック内の複数のシートのキーとしてシート名を追加します。

ご協力いただければ幸いです。

答えて

0
from xlrd import open_workbook 

book = open_workbook('Workbook1.xlsx') 
pointSheets = book.sheet_names() 
full_dict = {} 
for i in pointSheets: 
    # reading header values 
    sheet = book.sheet_by_name(i) 
    keys = [sheet.cell(0, col_index).value for col_index in range(sheet.ncols)] 

    dict_list = [] 
    for row_index in range(1, sheet.nrows): 
     d = {keys[col_index]: sheet.cell(row_index, col_index).value 
      for col_index in range(sheet.ncols)} 
     dict_list.append(d) 
    full_dict[i] = dict_list 
    dict_list = {} 

print (full_dict) 

このコードは各シートを繰り返し、sheet_nameに'full_dict 'を追加し、その後に各シートに対して既にコードが返すものを追加します。 「How to get excel sheet name in Python using xlrd」を参照して名前を取得しました

+0

ありがとうございました。完璧に動作します! – user12083

関連する問題