Excel ↔ JSON / CSV API

Đọc file Excel .xlsx thành JSON hoặc CSV (ngày dạng ISO, dòng tiêu đề làm khoá), hoặc tạo file .xlsx nhiều sheet có định dạng từ dữ liệu JSON.

POSThttps://apibox.io.vn/v1/xlsx-convert

API Excel làm việc theo cả hai chiều. Tải lên file .xlsx, API trả về sheet đầu tiên đang hiển thị (hoặc sheet chỉ định bằng sheet, theo tên hay số thứ tự) dưới dạng mảng JSON lấy dòng tiêu đề làm khoá, dạng mảng các dòng (format=rows) hoặc CSV (format=csv, UTF-8 có BOM để Excel mở lại không lỗi font, delimiter=; nếu máy dùng dấu chấm phẩy). Ô ngày tháng được nhận ra qua định dạng số và trả về dạng 2026-11-11, giá trị đúng/sai giữ kiểu boolean, dòng trống bị bỏ qua, tiêu đề trùng được thêm hậu tố (Tên_2). list=sheets chỉ liệt kê các sheet, skip_rows bỏ qua phần tiêu đề báo cáo phía trên, limit giới hạn số dòng trả về.

Gửi JSON thay cho file để tạo bảng tính: data (mảng object hoặc mảng các mảng) cho một sheet, hoặc sheets ({"Tên sheet": [...]}) cho tối đa 20 sheet. Dữ liệu dạng object có dòng tiêu đề in đậm, cố định khi cuộn và có bộ lọc; chuỗi YYYY-MM-DD thành ô ngày thật của Excel (dd/mm/yyyy). Kết quả là chính file .xlsx, đặt tên theo filename.

Bộ đọc và ghi do chúng tôi tự viết, chạy hoàn toàn trong bộ nhớ: tối đa 1.000.000 ô khi ghi, 2.000.000 ô khi đọc, trong giới hạn dung lượng tệp của gói. Chưa hỗ trợ file .xls đời cũ (hãy lưu lại thành .xlsx); ô công thức được đọc theo giá trị tính gần nhất.

Tham số

TênVị tríKiểuBắt buộcMặc định
filebodyfilekhôngFile .xlsx cần đọc (multipart, body thô hoặc file_base64).
sheetquery|bodystringkhôngKhi đọc: tên sheet hoặc số thứ tự từ 0 (mặc định: sheet hiển thị đầu tiên). Khi ghi bằng data: tên sheet.
formatquery|bodystringkhôngjsonjson (object theo tiêu đề), rows (mảng) hoặc csv.
headerquery|bodybooleankhôngtruefalse: dòng đầu là dữ liệu, không phải tiêu đề.
skip_rowsquery|bodynumberkhông0Số dòng bỏ qua trước dòng tiêu đề (0–1000).
skip_emptyquery|bodybooleankhôngtruefalse để giữ dòng trống.
limitquery|bodynumberkhông100000Số dòng tối đa trả về (JSON).
delimiterquery|bodystringkhông,Dấu phân cách CSV: , hoặc ;.
listquery|bodystringkhôngsheets: chỉ liệt kê các sheet.
databodyarraykhôngKhi ghi: mảng object hoặc mảng các mảng cho một sheet; kết quả là file .xlsx.
sheetsbodyobjectkhôngKhi ghi: {"Tên sheet": [các dòng]}, tối đa 20 sheet.
filenamebodystringkhôngdataTên file tạo ra (không kèm .xlsx).

Ví dụ

curl -X POST "https://apibox.io.vn/v1/xlsx-convert" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "0=@./my-file"

Kết quả trả về

{
  "sheet": "Khách hàng",
  "sheets": [
    {
      "index": 0,
      "name": "Khách hàng",
      "hidden": false
    }
  ],
  "rows": 2,
  "columns": 4,
  "headers": [
    "Họ tên",
    "Tuổi",
    "Ngày mua",
    "VIP"
  ],
  "truncated": false,
  "data": [
    {
      "Họ tên": "Nguyễn Văn An",
      "Tuổi": 30,
      "Ngày mua": "2026-11-11",
      "VIP": true
    },
    {
      "Họ tên": "Trần Thị Bình",
      "Tuổi": 25,
      "Ngày mua": "2026-01-02",
      "VIP": false
    }
  ]
}

Ứng dụng

  • Nhập danh sách khách hàng, sản phẩm người dùng gửi bằng Excel
  • Xuất báo cáo từ cơ sở dữ liệu ra file .xlsx
  • Đổi bảng giá Excel sang CSV cho hệ thống khác
  • Đọc sao kê ngân hàng, sàn TMĐT gửi dạng XLSX

Hỏi đáp

Công thức có được tính lại không?

Không: API trả về giá trị Excel đã lưu cùng file. File do phần mềm khác tạo mà không lưu giá trị thì ô công thức sẽ trống.

Ngày tháng trả về thế nào?

Dạng chuỗi ISO (2026-11-11, hoặc 2026-11-11T08:30:00 nếu có giờ), nhận biết qua định dạng số của ô.

Đọc sheet khác sheet đầu được không?

Được, dùng sheet=<tên> hoặc sheet=<số thứ tự> (bắt đầu từ 0); list=sheets cho biết tên các sheet, kể cả sheet ẩn.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →