
Trong hướng dẫn này, chúng ta sẽ cùng tìm hiểu 2 module Python để chuyển đổi Excel sang JSON:
- excel2json-3
- Pandas
Chuyển đổi Excel sang JSON bằng module excel2json-3
Đây là một module rất đơn giản để chuyển đổi tệp Excel thành tệp JSON. Nội dung từ sheet Excel được chuyển thành chuỗi JSON và lưu trong tệp. Tên tệp JSON được lấy từ tên sheet Excel.
Ví dụ, nếu có 2 sheet tên là “Numbers” và “Cars”, các tệp JSON sẽ được đặt tên tương ứng là Numbers.json và Cars.json.
Module này hỗ trợ chuyển đổi cả định dạng .xls và .xlsx. Chúng ta có thể đọc tệp Excel từ hệ thống file hoặc từ URL. Cài đặt module này bằng lệnh PIP:
$ pip install excel2json-3
Trong ví dụ này, chúng ta có một tệp Excel tên records.xlsx chứa 3 sheet.

Ví dụ tệp Excel chuyển sang JSON bằng Python
Dưới đây là script để chuyển đổi tệp Excel này thành các tệp JSON:
import excel2json
excel2json.convert_from_file('records.xlsx')
Script này sẽ tạo ra 3 tệp JSON.
Employees.json
[
{
"EmpID": 1.0,
"EmpName": "Pankaj",
"EmpRole": "CEO"
},
{
"EmpID": 2.0,
"EmpName": "David Lee",
"EmpRole": "Editor"
},
{
"EmpID": 3.0,
"EmpName": "Lisa Ray",
"EmpRole": "Author"
}
]
Cars.json
[
{
"Car Name": "Honda City",
"Car Model": "City",
"Car Maker": "Honda",
"Car Price": "20,000 USD"
},
{
"Car Name": "Bugatti Chiron",
"Car Model": "Chiron",
"Car Maker": "Bugatti",
"Car Price": "3 Million USD"
},
{
"Car Name": "Ferrari 458",
"Car Model": 458.0,
"Car Maker": "Ferrari",
"Car Price": "2,30,000 USD"
}
]
Numbers.json
[
{
"1.0": 3.0,
"2.0": 4.0
},
{
"1.0": "N1",
"2.0": "N2"
},
{
"1.0": 5.0,
"2.0": 6.0
},
{
"1.0": 7.0,
"2.0": 8.0
}
]
Nếu cần đọc tệp Excel từ URL, có thể sử dụng hàm convert_from_url().
Hạn chế của module excel2json-3
- Tính năng rất hạn chế
- Không có tùy chọn nào để bỏ qua sheet, hàng hoặc cột, gây khó khăn với tệp Excel lớn
- JSON được lưu vào tệp, trong khi nhiều trường hợp chúng ta muốn chuyển sang JSON và dùng trực tiếp trong chương trình thay vì lưu ra file
- Số nguyên bị chuyển thành số thực
Chuyển đổi sheet Excel sang chuỗi JSON bằng module Pandas
Module Pandas cung cấp các hàm đọc sheet Excel vào đối tượng DataFrame. Nó hỗ trợ nhiều tùy chọn như chỉ định header, đọc cột cụ thể, bỏ qua hàng… Bạn có thể tham khảo thêm tại tài liệu pandas.read_excel(). Chúng ta có thể dùng hàm to_json() để chuyển đổi DataFrame thành chuỗi JSON.
Ví dụ đọc sheet “Employees” và chuyển thành chuỗi JSON:
import pandas
excel_data_df = pandas.read_excel('records.xlsx', sheet_name='Employees')
json_str = excel_data_df.to_json()
print('Excel Sheet to JSON:\\n', json_str)
Đầu ra:
Excel Sheet to JSON:
{"EmpID":{"0":1,"1":2,"2":3},"EmpName":{"0":"Pankaj","1":"David Lee","2":"Lisa Ray"},"EmpRole":{"0":"CEO","1":"Editor","2":"Author"}}
Theo mặc định, dữ liệu JSON được tạo theo hướng cột. Nếu muốn dữ liệu theo từng dòng, truyền tham số orient='records':
json_str = excel_data_df.to_json(orient='records')
Đầu ra:
Excel Sheet to JSON:
[{"EmpID":1,"EmpName":"Pankaj","EmpRole":"CEO"},{"EmpID":2,"EmpName":"David Lee","EmpRole":"Editor"},{"EmpID":3,"EmpName":"Lisa Ray","EmpRole":"Author"}]
Kết luận
Đối với tệp Excel đơn giản và có cấu trúc rõ ràng, bạn nên dùng module excel2json-3 để chuyển sang tệp JSON. Nhưng nếu cần kiểm soát chi tiết hơn cách đọc dữ liệu Excel và cách chuyển sang JSON string, module pandas là lựa chọn phù hợp hơn.
Tham khảo
- excel2json-3 PyPI.org Page
- Pandas DataFrame
to_json()API Doc