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
}]];
1const 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ọiconst 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ínhconst 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
]
4XLSX.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
]
8Dò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 đaconst 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];
9const 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", //