Hướng dẫn writebuffer exceljs - bộ đệm ghi exceljs

Xử lý dữ liệu bảng tính trong JavaScript

Show
Hình ảnh của tác giả

Chủ đề cho ngày hôm nay là về

4, gói JavaScript hoạt động như người quản lý sổ làm việc Excel. Dựa trên tài liệu chính thức,
4 là một gói

Đọc, thao tác và ghi dữ liệu bảng tính và kiểu dáng cho XLSX và JSON.

Đảo ngược được thiết kế từ các tập tin bảng tính Excel như một dự án.

Nó là một gói cực kỳ hữu ích cung cấp các tính năng sau:

  • Tạo sổ làm việc
  • Tạo bảng tính
  • Xử lý tiêu đề và chân trang
  • Đặt chế độ xem đóng băng hoặc phân chia
  • Đặt bộ lọc tự động
  • Thao tác dữ liệu trên các hàng và cột
  • Thêm xác thực dữ liệu
  • Thêm kiểu
  • Chèn hình ảnh vào sổ làm việc

Ngoài ra,

4 thường được cập nhật theo thời gian và có sẵn miễn phí. Hướng dẫn này bao gồm quá trình cài đặt từng bước và một vài ví dụ cho một số tính năng cơ bản và thường được sử dụng. Ngoài ra, đoạn mã sẽ được cung cấp làm tài liệu tham khảo cho độc giả.

Hãy để tiến hành phần tiếp theo và bắt đầu cài đặt

4.

Thành lập

Quá trình cài đặt được đề xuất là thông qua

8 chủ yếu hoạt động cho dự án Node.js. Nếu bạn có ý định sử dụng trực tiếp trong trình duyệt cho dự án Non-Node.js, bạn phải nhập gói bằng liên kết CDN chính thức. Hãy để một cái nhìn về quy trình cài đặt cho cả hai phương thức.

NPM

Chạy lệnh sau để cài đặt nó trong dự án của bạn:

npm install exceljs

Sau đó, bạn có thể chỉ cần nhập nó như sau:

const ExcelJS = require('exceljs');

Đối với Node.js cũ hơn 10, bạn phải nhập bằng mã được chuyển ES5. Ngoài ra, bạn cũng cần nhập một vài polyfills:

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');

CDN

Để sử dụng nó trực tiếp trên trình duyệt của bạn, chỉ cần truy cập trang CDN chính thức cho Exceljs và sao chép thẻ tập lệnh tương ứng dựa trên nhu cầu của bạn:

Ví dụ: bạn có thể sử dụng thẻ tập lệnh sau trong tệp HTML của mình:

(Tùy chọn) FileSaver.js

Đối với thông tin của bạn, một số tính năng trong

4 phụ thuộc rất nhiều vào các gói tích hợp Node.js. Ví dụ: chức năng lưu tệp yêu cầu mô -đun
0. Điều này sẽ gây ra lỗi khi bạn gọi nó trong dự án Non-Node.js.

Phải nói rằng, bạn vẫn có thể đạt được tính năng lưu tệp chỉ với một vài thủ thuật bổ sung. Tất cả những gì bạn cần làm là xuất dữ liệu nhị phân dưới dạng bộ đệm và lưu nó bằng thư viện JavaScript bên ngoài, chẳng hạn như fileSaver.js. Truy cập vào kho lưu trữ sau và sao chép thẻ tập lệnh dựa trên các trường hợp sử dụng của bạn.

Sau đó, chỉ cần chèn thẻ tập lệnh vào HTML của bạn như sau:

Sách bài tập

Trong phần này, bạn sẽ tìm hiểu các khái niệm cơ bản và những điều cơ bản đằng sau

4.

Tạo một sổ làm việc mới

Hãy bắt đầu bằng cách tạo một sổ làm việc mới như sau:

const workbook = new ExcelJS.Workbook();

Thuộc tính sách bài tập

Khi bạn có một sổ làm việc, bạn có thể chơi xung quanh với một số thuộc tính của nó:

workbook.creator = 'Ng Wai Foong';
workbook.lastModifiedBy = 'Bot';
workbook.created = new Date(2021, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2021, 7, 27);

Bảng tính

Thêm bảng tính mới

Tiếp theo, bạn có thể thêm một bảng tính mới vào sổ làm việc mà bạn đã tạo trước đó thông qua mã sau:

const worksheet = workbook.addWorksheet('New Sheet');

Cài đặt bảng tính

Bạn có thể khởi tạo một số cấu hình cho bảng của mình bằng cách chuyển trong một đối tượng:

Bên cạnh đó, bạn có thể đặt các cấu hình theo cách thủ công sau khi bạn đã khởi tạo đối tượng bảng tính. Ví dụ: bạn có thể đặt chân trang cho trang lẻ như sau:

//Set footer (default centered), result: "Page 2 of 16"
worksheet.headerFooter.oddFooter = "Page &P of &N";

& P và & N là một phần của các lệnh tập lệnh. Vui lòng kiểm tra liên kết sau để biết thêm thông tin về điều này.

Bộ lọc tự động

Hơn nữa, có hỗ trợ cho các bộ lọc tự động là tốt. Bộ lọc Snippet mã sau đây đặt bộ lọc tự động từ A1 đến C1:

worksheet.autoFilter = 'A1:C1';

Bạn có thể sử dụng mã sau thay vì rõ ràng hơn rất nhiều so với mẫu tiêu chuẩn:

const ExcelJS = require('exceljs');
0

Cột

Đó là một thực tế tốt để đặt các cột với tiêu đề và phím ánh xạ tương ứng.

const ExcelJS = require('exceljs');
1

Tiêu đề đại diện cho văn bản sẽ được hiển thị trong khi khóa biểu thị ánh xạ tên thuộc tính khi bạn thêm một hàng mới bằng một đối tượng. Xin lưu ý rằng thứ tự rất quan trọng vì nó sẽ ảnh hưởng đến đầu ra cuối cùng khi bạn lưu sổ làm việc dưới dạng tệp Excel.

Truy cập cột

Bạn có thể truy cập từng cột riêng lẻ thông qua:

  • 2 - Khóa ánh xạ được khai báo khi tạo cột (ID, tên, tuổi, v.v.)
  • 3 - chữ cái tương ứng cho cột (a, b, c, v.v.)
  • 4 - Số chỉ mục (bắt đầu từ 1)
const ExcelJS = require('exceljs');
2

Lặp lại từng ô

Bạn có thể dễ dàng lặp lại tất cả các ô hiện tại trong cột không trống:

const ExcelJS = require('exceljs');
3

Nếu bạn muốn lặp lại trên các ô trống, chỉ cần đặt thuộc tính

5 thành
6 như sau:

const ExcelJS = require('exceljs');
4

Hàng ngang

Khi bạn đã khai báo các cột tương ứng, bạn có thể bắt đầu thêm dữ liệu vào nó bằng cách gọi hàm

7. Có nhiều cách để thêm hàng vào bảng tính.

Thêm một hàng mới bằng cách sử dụng đối tượng Key-Value

Ví dụ: bạn có thể chuyển trong đối tượng giá trị khóa phù hợp với các cột tiêu đề:

const ExcelJS = require('exceljs');
5

Thêm một hàng mới bằng mảng

Bạn cũng có thể sử dụng một mảng để thêm dữ liệu mới. Nó sẽ gán cho các cột theo thứ tự (a, b, c):

const ExcelJS = require('exceljs');
6

Thêm các hàng dữ liệu

Ngoài ra, bạn có thể gọi chức năng

8 và chuyển trong một mảng các đối tượng hàng thay thế. Điều này có ích để thêm các hàng dữ liệu chỉ trong một dòng mã duy nhất:

const ExcelJS = require('exceljs');
7

Thêm trang phá vỡ trang

Ngoài ra còn có một chức năng gọi là

9 mà Adda bị phá vỡ trang mới bên dưới hàng. Bạn có thể gọi nó như sau:

const ExcelJS = require('exceljs');
8

Lặp lại mỗi hàng

Bạn có thể dễ dàng đi qua từng hàng bằng cách sử dụng chức năng

const workbook = new ExcelJS.Workbook();
0 trên bảng tính của mình:

const ExcelJS = require('exceljs');
9

Lặp lại mỗi hàng

Bạn có thể dễ dàng đi qua từng hàng bằng cách sử dụng chức năng

const workbook = new ExcelJS.Workbook();
0 trên bảng tính của mình:

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
0

Tương tự như cột, bạn có thể lặp lại trên từng ô của hàng thông qua

Số liệu

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
1

Có một vài số liệu tích hợp để có được số lượng hàng và tổng số ô:

Xác nhận dữ liệu

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
2

Bạn có thể dễ dàng kết hợp xác thực dữ liệu vào bảng tính của mình theo chương trình thông qua

const workbook = new ExcelJS.Workbook();
1. Ví dụ: bạn có thể đặt một thả xuống với danh sách các giá trị thông qua mã sau:

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
3

Dưới đây là một ví dụ khác giới hạn đầu vào ở giữa 2.5 và 7. Bạn có thể thêm thông báo ToolTip để hướng dẫn người dùng bằng cách đặt thuộc tính const workbook = new ExcelJS.Workbook();2.

Phong cách

  • 4 hỗ trợ tập hợp kiểu dáng và định dạng phong phú cho các ô, hàng và cột. Tại thời điểm viết bài này, nó đi kèm với các thuộc tính sau:
  • Numfmt
  • nét chữ
  • liên kết
  • biên giới

lấp đầy

Định dạng

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
4

Bạn có thể dễ dàng định dạng số như sau:

Với ngoại lệ duy nhất cho const workbook = new ExcelJS.Workbook();4 chấp nhận một chuỗi, phần còn lại của phong cách có trong một đối tượng JavaScript.

Nét chữ

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
5

Ví dụ: bạn có thể đặt phông chữ thông qua đoạn mã sau:

Liên kết

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
6

Mặt khác, bạn có thể dễ dàng đặt căn chỉnh lên trên cùng bên phải như sau:

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
7

Ngoài ra, bạn có thể đặt căn chỉnh cho gói và thụt lề thông qua mã sau:

Biên giới

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
8

Để tạo kiểu cho đường viền của một ô dựa trên màu mong muốn của bạn, thay vào đó hãy sử dụng mã sau:

  • Thuộc tính kiểu cơ bản chấp nhận:
  • gầy
  • say mê
  • đi thẳng
  • tóc
  • dashdotdot
  • slantdashdot
  • trung bình
  • MediumDashDotDot
  • MediumDashDot
  • double
  • vừa phải

đặc

Lấp đầy

// polyfills required by exceljs
require('core-js/modules/es.promise');
require('core-js/modules/es.string.includes');
require('core-js/modules/es.object.assign');
require('core-js/modules/es.object.keys');
require('core-js/modules/es.symbol');
require('core-js/modules/es.symbol.async-iterator');
require('regenerator-runtime/runtime');
const ExcelJS = require('exceljs/dist/es5');
9

Để điền vào một ô cụ thể, chỉ cần truyền vào một đối tượng với thuộc tính sau:

const workbook = new ExcelJS.Workbook();
5 đề cập đến màu tiền cảnh trong khi
const workbook = new ExcelJS.Workbook();
6 đề cập đến màu phụ trợ.

  • Danh sách đầy đủ cho các loại mẫu như sau:
  • không ai
  • chất rắn
  • màu xám đen
  • trung bình
  • gray125
  • gray0625
  • xám nhạt
  • Darkhorizontal
  • tối
  • Darkdown
  • Darkup
  • Darkgrid
  • Darktrellis
  • Lighthorizontal
  • Lightvertical
  • ánh sáng xuống
  • chiếu sáng
  • Lightgrid

Lighttrellis

Di sản

Xin lưu ý rằng khi bạn đặt một kiểu cụ thể thành một hàng hoặc cột, ExcelJs sẽ áp dụng nội bộ cùng một kiểu cho tất cả các ô hiện có trong hàng hoặc cột đó. Các ô mới được tạo cũng sẽ kế thừa phong cách là tốt.

0

Kết quả là, bạn nên thêm các ô trước khi bạn đặt kiểu. Đoạn mã sau đây minh họa một ví dụ về việc thiết lập tất cả các tiêu đề thành in đậm sau khi tạo các ô:

Để biết thêm thông tin về các phong cách, vui lòng kiểm tra liên kết sau.

Tệp I/O

  • 4 cung cấp một vài chức năng trợ giúp để đọc và tải tệp tùy thuộc vào các trường hợp sử dụng. Nói chung, nó được phân loại thành:
  • tập tin
  • dòng

đệm

Xin lưu ý rằng các hoạt động liên quan đến tệp I/O trả về const workbook = new ExcelJS.Workbook();8 và phải được gọi cùng với từ khóa const workbook = new ExcelJS.Workbook();9. Nếu bạn đang sử dụng nó bên trong một hàm, hãy đảm bảo đặt hàm thành workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);0.

Tập tin

1

Giả sử rằng bạn có một tệp excel cục bộ, bạn có thể thực hiện đọc và viết như sau:

Dòng

2

Nếu bạn có một luồng dữ liệu, hãy sử dụng đoạn mã sau:

Đệm

3

Khi xử lý bộ đệm, bạn nên gọi chức năng

workbook.creator = 'Ng Wai Foong';
workbook.lastModifiedBy = 'Bot';
workbook.created = new Date(2021, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2021, 7, 27);
1 và
workbook.creator = 'Ng Wai Foong';
workbook.lastModifiedBy = 'Bot';
workbook.created = new Date(2021, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2021, 7, 27);
2 thay thế:

Dưới đây là một ví dụ về việc đọc tệp Excel đã tải lên. workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);3 là một đối tượng workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);4 thu được từ thẻ workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);5. Đơn giản chỉ cần khởi tạo một đốm mới và nhận bộ đệm cơ bản. Sau đó, chuyển nó đến hàm workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);1 như sau:

Tệp I/O cho dự án Non-Node.js

Như đã đề cập trước đó, các chức năng tệp đọc và ghi dựa trên mô -đun

0 sẽ gây ra lỗi nếu bạn đang sử dụng nó trên trình duyệt. Để giải quyết việc này, chỉ cần gọi hàm
workbook.creator = 'Ng Wai Foong';
workbook.lastModifiedBy = 'Bot';
workbook.created = new Date(2021, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2021, 7, 27);
2 và lưu dữ liệu bộ đệm đầu ra vào một đốm màu. Sau đó, lưu nó bằng FileSaver.js.

Hãy chắc chắn rằng bạn đã nhập thẻ workbook.creator = 'Ng Wai Foong';workbook.lastModifiedBy = 'Bot';workbook.created = new Date(2021, 8, 30);workbook.modified = new Date();workbook.lastPrinted = new Date(2021, 7, 27);9 thích hợp cho FilesAver.js. Vui lòng kiểm tra phần cài đặt để biết thêm thông tin về điều này.

Sự kết luận

Hãy để tóm tắt lại những gì bạn đã học được hôm nay.

Tiếp theo, nó được đề cập trong quá trình cài đặt bao gồm các bước thiết lập bổ sung cho dự án không phải nút.js.

Nó tiếp tục với lời giải thích chuyên sâu về giao diện và các chức năng tích hợp được cung cấp bởi ExcelJS.Điều này bao gồm việc xử lý sổ làm việc, bảng tính, kiểu dáng, v.v.

Cuối cùng, nó đã nói về hỗ trợ File I/O như đọc và ghi sổ làm việc vào một tệp, luồng hoặc bộ đệm.

Cảm ơn bạn đã đọc tác phẩm này.Hãy thoải mái đọc các bài viết khác của tôi.Có một ngày tuyệt vời ở phía trước!

Người giới thiệu

  1. GitHub - Exceljs
  2. GitHub - FileSaver.js
  3. CDNJ - Exceljs
  4. Các vấn đề của GitHub Exceljs - Xuất XLSX trên trình duyệt