Ví dụ cdn Exceljs

SheetJS trình bày một giao diện JS đơn giản hoạt động với "Mảng của các mảng" và "Mảng của các đối tượng JS". Các hàm API là các khối xây dựng nên được kết hợp với các API JS khác để giải quyết vấn đề

Cuộc thảo luận tập trung vào tư duy giải quyết vấn đề. Chi tiết API được đề cập trong các phần khác của tài liệu

Mục tiêu của ví dụ này là tạo sổ làm việc XLSX có tên và ngày sinh của Tổng thống Hoa Kỳ. để chuyển sang bản demo trực tiếp. Sơ đồ trình tự dưới đây cho thấy quá trình

Thu thập dữ liệu

Dữ liệu thô

Dữ liệu thô có sẵn ở dạng JSON. Để thuận tiện, nó đã được nhân đôi ở đây

Thu thập dữ liệu đơn giản với

const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
1

const url = "//sheetjs.com/data/executive.json";
const raw_data = await [await fetch[url]].json[];

Dữ liệu thô là một mảng các đối tượng. Đây là dữ liệu của John Adams

{
"id": { /* [data omitted] */ },
"name": {
"first": "John", // [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
4. Để kiểm tra xem một hàng cụ thể có ít nhất một thuật ngữ
const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
4 hay không,
const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
6 là một hàm JS gốc khác. Bộ lọc hoàn chỉnh sẽ là

________số 8_______

Định hình lại mảng

Đối với ví dụ này, tên sẽ là tên kết hợp với họ [

const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
7] và ngày sinh sẽ có tại
const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
8. Sử dụng
const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];
9, bộ dữ liệu có thể được xoa bóp trong một cuộc gọi

const rows = prez.map[row => [{
name: row.name.first + " " + row.name.last,
birthday: row.bio.birthday
}]];

Kết quả là một mảng các đối tượng "đơn giản" không lồng vào nhau

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]

Tạo sổ làm việc

Với tập dữ liệu đã được làm sạch,

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
0 tạo một trang tính

const worksheet = XLSX.utils.json_to_sheet[rows];

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
1 tạo một sổ làm việc mới và
[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
2 nối thêm một trang tính vào sổ làm việc. Bảng tính mới sẽ được gọi là "Ngày"

const workbook = XLSX.utils.book_new[];
XLSX.utils.book_append_sheet[workbook, worksheet, "Dates"];

Dọn dẹp sổ làm việc

Dữ liệu nằm trong sổ làm việc và có thể được xuất

Có nhiều cơ hội để cải thiện. các tiêu đề có thể được đổi tên và độ rộng cột có thể được điều chỉnh. SheetJS Pro cung cấp các tùy chọn kiểu dáng bổ sung như kiểu dáng ô và hàng cố định

Thay đổi tên tiêu đề [bấm để hiển thị]

Theo mặc định,

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
3 tạo trang tính có hàng tiêu đề. Trong trường hợp này, các tiêu đề đến từ các khóa đối tượng JS. "tên" và "sinh nhật"

Các tiêu đề nằm trong các ô

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
4 và
[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
5.
[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
6 có thể ghi các giá trị văn bản vào trang tính hiện có bắt đầu từ ô
[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
4

XLSX.utils.sheet_add_aoa[worksheet, [["Name", "Birthday"]], { origin: "A1" }];

Thay đổi độ rộng cột [bấm để hiển thị]

Một số tên dài hơn chiều rộng cột mặc định. Độ rộng của cột được đặt bằng cách đặt thuộc tính trang tính

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
8

Dòng sau đặt chiều rộng của cột A thành khoảng 10 ký tự

worksheet["!cols"] = [ { wch: 10 } ]; // set column A width to 10 characters

Một cuộc gọi

[
{ name: "George Washington", birthday: "1732-02-22" },
{ name: "John Adams", birthday: "1735-10-19" },
// .. one row per President
]
9 trên
const worksheet = XLSX.utils.json_to_sheet[rows];
0 có thể tính chiều rộng tối đa

const max_width = rows.reduce[[w, r] => Math.max[w, r.name.length], 10];
worksheet["!cols"] = [ { wch: max_width } ];

Xuất một tệp

const worksheet = XLSX.utils.json_to_sheet[rows];
1 tạo một tệp bảng tính và cố gắng ghi tệp đó vào hệ thống. Trong trình duyệt, nó sẽ cố gắng nhắc người dùng tải xuống tệp. Trong NodeJS, nó sẽ ghi vào thư mục cục bộ

ghi chú

const worksheet = XLSX.utils.json_to_sheet[rows];
2 chỉ ghi các tệp XLSX và được khuyến nghị khi xuất sẽ luôn ở định dạng
const worksheet = XLSX.utils.json_to_sheet[rows];
3.
const worksheet = XLSX.utils.json_to_sheet[rows];
4 dễ bị rung chuyển hơn. Ví dụ này sử dụng
const worksheet = XLSX.utils.json_to_sheet[rows];
1 vì
const worksheet = XLSX.utils.json_to_sheet[rows];
4 không hỗ trợ các định dạng xuất phổ biến khác như
const worksheet = XLSX.utils.json_to_sheet[rows];
7 hoặc
const worksheet = XLSX.utils.json_to_sheet[rows];
8 hoặc
const worksheet = XLSX.utils.json_to_sheet[rows];
9

const workbook = XLSX.utils.book_new[];
XLSX.utils.book_append_sheet[workbook, worksheet, "Dates"];
0 cho phép nén ZIP cho XLSX và các định dạng khác

{
"id": { /* [data omitted] */ },
"name": {
"first": "John", //

Chủ Đề