我正在从Excel文件中打印列名,数据类型和列的最大长度。
下面是代码和输出,需要将输出导出到json文件。
<html>
<table >
<thead>
<tr>
<th>Type</th>
<th>Amount received</th>
<th>Currency</th>
<th>Flag</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<tr>
<td>Educationsl</td>
<td>1422.00</td>
<td>USD</td>
<td>2018-11-30</td>
</tr>
</tbody>
</table>
</html>
Column Name : Type
Data type : String
Size : 11
Column Name : Amountreceived
Data type : Float
Size : 6
Column Name : Currency
Data type : String
Size : 3
Column Name : Flag
Data type : String
Size : 1
Column Name : Date
Data type : Float
Date format : ddmmyyyy
import string
import re
import datetime
import xlrd
loc = r"C:\Users\Documents\PythonStuff\assignment.xlsx"
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)
for i in range(sheet.ncols):
print ("Column Name : " + re.sub('[^A-Za-z0-9]+', '', sheet.cell_value(0, i).replace(' ','_')))
##Data Type
if str(sheet.cell_type(1,i)) == '1':
print ("Data type : String ")
elif isinstance(sheet.cell_value(1,i), float) == True:
print ("Data type : Float ")
elif str(sheet.cell_type(1,i)) =='3':
print ("Data type : Date ")
## Date Format
if str(sheet.cell_type(1,i)) =='3':
print ("Date format : " + "ddmmyyyy" +"\n ")
else:
print ("Size : " + str(len (str(sheet.cell_value(1,i))))+"\n ")
{"Excel": [{"Type": "Educational", "Amount received": "1422.00", "Currency": "USD", "Flag": "N", "Date": "2018-11-30"} ]}
答案 0 :(得分:0)
我假设您要使用第一行的值作为dict键,并且每一行都是列表中的一项。将此添加到您的代码中:
keys = [i.value for i in sheet.row(0)]
sheet_dict = {'Excel': list()}
for row in range(1, sheet.nrows):
row_dict = {}
for col in range(sheet.ncols):
row_dict[keys[col]] = sheet.cell_value(rowx=row, colx=col)
sheet_dict['Excel'].append(row_dict)
print(sheet_dict)
或者如果您想要漂亮的输出:
import json
print(json.dumps(sheet_dict, sort_keys=True, indent=4))