Reputation: 1
I am printing the column name, data type and the max length of the columns from an Excel file.
Below is the code and the output, need to export the output to the json file.
<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"} ]}
Upvotes: 0
Views: 58
Reputation: 837
I assume that you want to use the values of the 1st row as the dict keys and every row is an item in a the list. Add this to you code:
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)
Or if you want a pretty output:
import json
print(json.dumps(sheet_dict, sort_keys=True, indent=4))
Upvotes: 0