Tệp tải xuống exceljs trong trình duyệt

Đóng góp rất được hoan nghênh. Nó giúp tôi biết những tính năng nào được mong muốn hoặc lỗi nào đang gây khó chịu nhất

Show

Tôi chỉ có một yêu cầu; . Ngay cả một PR chỉ có một bài kiểm tra thất bại cũng không sao - tôi có thể phân tích những gì bài kiểm tra đang làm và sửa mã từ đó

Ghi chú. Vui lòng cố gắng tránh sửa đổi phiên bản gói trong PR. Các phiên bản được cập nhật khi phát hành và mọi thay đổi rất có thể sẽ dẫn đến xung đột hợp nhất

Để rõ ràng, tất cả các đóng góp được thêm vào thư viện này sẽ được bao gồm trong giấy phép MIT của thư viện

nội dung
nhập khẩu

const ExcelJS = require('exceljs');

Nhập khẩu ES5

Để sử dụng mã được dịch mã ES5, chẳng hạn cho nút. js cũ hơn 10, hãy sử dụng đường dẫn dist/es5

const ExcelJS = require('exceljs/dist/es5');

Ghi chú. Bản dựng ES5 có sự phụ thuộc ngầm định vào một số polyfill không còn được thêm vào một cách rõ ràng bởi exceljs. Bạn sẽ cần thêm "core-js" và "regenerator-runtime" vào phần phụ thuộc của mình và bao gồm các yêu cầu sau trong mã của bạn trước khi nhập exceljs

// 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');

Đối với IE 11, bạn cũng sẽ cần một polyfill để hỗ trợ các mẫu biểu thức chính quy unicode. Ví dụ,

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}

trình duyệt

ExcelJS xuất bản hai gói trình duyệt bên trong thư mục dist/

Một với sự phụ thuộc ngầm vào polyfills core-js

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>

Và một cái không có

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>

giao diện

Tạo sổ làm việc

const workbook = new ExcelJS.Workbook();

Đặt thuộc tính sổ làm việc

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);

________số 8

Đặt thuộc tính tính toán

const ExcelJS = require('exceljs');
0

Chế độ xem sổ làm việc

Chế độ xem sổ làm việc kiểm soát số lượng cửa sổ riêng biệt mà Excel sẽ mở khi xem sổ làm việc

const ExcelJS = require('exceljs');
1

Thêm một bảng tính

const ExcelJS = require('exceljs');
2

Sử dụng tham số thứ hai của hàm addWorksheet để chỉ định các tùy chọn cho trang tính

Ví dụ

const ExcelJS = require('exceljs');
3

Xóa một trang tính

Sử dụng trang tính

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
9 để xóa trang tính khỏi sổ làm việc

Ví dụ

const ExcelJS = require('exceljs');
4

Truy cập trang tính

const ExcelJS = require('exceljs');
5

Điều quan trọng cần biết là

const ExcelJS = require('exceljs');
00 và
const ExcelJS = require('exceljs');
01, vì
const ExcelJS = require('exceljs');
02 có thể có bất kỳ giá trị nào

Trạng thái bảng tính

const ExcelJS = require('exceljs');
6

Thuộc tính trang tính

Trang tính hỗ trợ nhóm thuộc tính để cho phép kiểm soát một số tính năng của trang tính

const ExcelJS = require('exceljs');
7

Thuộc tính được hỗ trợ

NameDefaultDescriptiontabColorundefinedMàu của các taboutlineLevelCol0Cột trang tính mức phác thảooutlineLevelRow0Mức phác thảo hàng của trang tínhmặc địnhRowHeight15Chiều cao hàng mặc địnhmặc địnhColWidth(tùy chọn)Chiều rộng cột mặc địnhdyDescent55TBD

Số liệu trang tính

Một số chỉ số mới đã được thêm vào Worksheet

NameDescriptionrowCountTổng kích thước hàng của tài liệu. Bằng số hàng của hàng cuối cùng có giá trị. factRowCountMột số lượng hàng có giá trị. Nếu một hàng giữa tài liệu trống, nó sẽ không được tính vào số lượng. columnCountTổng kích thước cột của tài liệu. Bằng với số lượng ô tối đa từ tất cả các hàngactualColumnCountMột số lượng cột có giá trị

Thiết lập trang

Tất cả các thuộc tính có thể ảnh hưởng đến việc in trang tính được giữ trong đối tượng pageSetup trên trang tính

const ExcelJS = require('exceljs');
8

Trang được hỗ trợThiết lập cài đặt

TênMặc địnhMô tảlềKhoảng trắng trên đường viền của trang. Đơn vị là inch. direction'portrait'Orientation của trang - i. e. cao hơn (dọc) hoặc rộng hơn (ngang) ngang Dpi 4294967295 Số chấm ngang trên mỗi inch. Giá trị mặc định là -1verticalDpi4294967295Vertical Dots per Inch. Giá trị mặc định là -1fitToPageCho dù sử dụng cài đặt fitToWidth và fitToHeight hay tỷ lệ. Mặc định dựa trên sự hiện diện của các cài đặt này trong đối tượng pageSetup - nếu có cả hai, tỷ lệ sẽ thắng (i. e. mặc định sẽ là false)pageOrder'downThenOver'Thứ tự in các trang - một trong ['downThenOver', 'overThenDown']blackAndWhitefalsePrint không có colordraftfalseIn với chất lượng (và mực)ô kém hơnComments'None'Nơi đặt nhận xét - một trong [' . Hoạt động khi fitToPage là falsefitToWidth1 Trang tính sẽ in trên bề rộng bao nhiêu trang. Hoạt động khi fitToPage là truefitToHeight1 Trang tính sẽ in trên bao nhiêu trang. Hoạt động khi fitToPage là truepaperSizeKích thước giấy nào sẽ sử dụng (xem bên dưới)showRowColHeadersfalseCó hiển thị số hàng và chữ cái cộtshowGridLinesfalseCó hiển thị đường lưới đầu tiênPageNumberSố nào sẽ sử dụng cho trang đầu tiêntheo chiều ngangCenteredfalseCó căn giữa dữ liệu trang tính theo chiều ngangCenteredfalseCho dù căn giữa dữ liệu trang tính theo chiều dọc

Khổ giấy mẫu

NameValueLetterundefinedLegal5Executive7A38A49A511B5 (JIS)13Phong bì #1020Phong bì DL27Phong bì C528Phong bì B534Phong bì Monarch37Bưu thiếp kép Nhật Bản Xoay8216K 197x273 mm119

Đầu trang và Chân trang

Đây là cách thêm đầu trang và chân trang. Nội dung được thêm vào chủ yếu là văn bản, chẳng hạn như thời gian, giới thiệu, thông tin tệp, v.v. , và bạn có thể thiết lập phong cách của văn bản. Ngoài ra, bạn có thể đặt các văn bản khác nhau cho trang đầu tiên và trang chẵn

Ghi chú. Hình ảnh hiện không được hỗ trợ

const ExcelJS = require('exceljs');
9

Cài đặt headerFooter được hỗ trợ

NameDefaultDescriptiondifferentFirstfalseĐặt giá trị của differentFirst là true, điều này cho biết rằng đầu trang/chân trang của trang đầu tiên khác với các trang khácdifferentOddEvenfalseĐặt giá trị của differentOddEven là true, điều này cho biết rằng đầu trang/chân trang cho các trang lẻ và trang chẵn là khácoddHeadernullĐặt chuỗi tiêu đề cho lẻ(mặc định)

Lệnh tập lệnh

Các lệnhMô tả&LSĐặt vị trí sang trái&CĐặt vị trí ở giữa&RĐặt vị trí ở bên phải&PSố trang hiện tại&NTổng số trang&DNgày hiện tại&TThời gian hiện tại&hình ảnh GA&ATên trang tính&FTên tệp&BLàm đậm văn bản&IIChữ nghiêng văn bản&UGạch dưới văn bản&tên phông chữ"tên phông chữ, ví dụ &"Aril"&kích thước phông chữcỡ chữ,

Chế độ xem trang tính

Trang tính hiện hỗ trợ danh sách dạng xem, kiểm soát cách Excel trình bày trang tính

  • cố định - nơi một số hàng và cột ở trên cùng và bên trái được cố định tại chỗ. Chỉ phần dưới cùng bên phải sẽ cuộn
  • split - trong đó chế độ xem được chia thành 4 phần, mỗi phần có thể cuộn bán độc lập

Mỗi chế độ xem cũng hỗ trợ các thuộc tính khác nhau

NameDefaultDescriptionstate'normal'Kiểm soát trạng thái dạng xem - một trong các trạng thái bình thường, cố định hoặc tách phảiToLeftfalseĐặt hướng của dạng xem trang tính thành từ phải sang tráihoạt độngCellundefinedÔ hiện được chọnshowRulertrueHiển thị hoặc ẩn thước trong Bố cục trangshowRowColHeaderstrueHiển thị hoặc ẩn tiêu đề hàng và cột (e. g. A1, B1 ở trên cùng và 1,2,3 ở bên tráishowGridLinestrueHiển thị hoặc ẩn các đường lưới (được hiển thị cho các ô không có đường viền được xác định)zoomScale100Tỷ lệ phần trăm thu phóng để sử dụng cho chế độ xemthu phóngScaleNormal100Thu phóng bình thường cho kiểu xemkhông xác địnhKiểu trình bày - một trong số pageBreakPreview hoặc pageLayout. Lưu ý pageLayout không tương thích với chế độ xem cố định

Lượt xem bị đóng băng

Chế độ xem cố định hỗ trợ các thuộc tính bổ sung sau

NameDefaultDescriptionxSplit0Có bao nhiêu cột để đóng băng. Để chỉ cố định các hàng, hãy đặt giá trị này thành 0 hoặc undefinedySplit0Có bao nhiêu hàng sẽ cố định. Để chỉ cố định cột, hãy đặt giá trị này thành 0 hoặc undefinedtopLeftCellspecial Ô nào sẽ ở trên cùng bên trái trong ngăn dưới cùng bên phải. Ghi chú. không thể là một tế bào đông lạnh. Mặc định cho ô chưa được đóng băng đầu tiên

const ExcelJS = require('exceljs/dist/es5');
0

Chia nhỏ lượt xem

Chế độ xem chia nhỏ hỗ trợ các thuộc tính bổ sung sau

TênMặc địnhMô tảxSplit0Cách đặt bộ chia từ bên trái qua bao nhiêu điểm. Để chia theo chiều dọc, hãy đặt giá trị này bằng 0 hoặc không xác địnhSplit0Có bao nhiêu điểm từ trên xuống để đặt bộ chia. Để chia theo chiều ngang, hãy đặt giá trị này thành 0 hoặc undefinedtopLeftCellundefined Ô nào sẽ ở trên cùng bên trái trong ngăn dưới cùng bên phải. activePaneundefinedNgăn nào sẽ hoạt động - một trong topLeft, topRight, bottomLeft và bottomRight

const ExcelJS = require('exceljs/dist/es5');
1

bộ lọc tự động

Có thể áp dụng bộ lọc tự động cho trang tính của bạn

const ExcelJS = require('exceljs/dist/es5');
2

Mặc dù chuỗi phạm vi là dạng tiêu chuẩn của Bộ lọc tự động, trang tính cũng sẽ hỗ trợ các giá trị sau

const ExcelJS = require('exceljs/dist/es5');
3

Cột

const ExcelJS = require('exceljs/dist/es5');
4

hàng

const ExcelJS = require('exceljs/dist/es5');
5

Thêm hàng

const ExcelJS = require('exceljs/dist/es5');
6

Tham số Mô tả Giá trị mặc định Giá trị/sCác giá trị hàng/s mới kiểu'i' cho kế thừa từ hàng trên, 'i+' để bao gồm các ô trống, 'n' cho không'n'

Xử lý các ô riêng lẻ

const ExcelJS = require('exceljs/dist/es5');
7

Các ô đã hợp nhất

const ExcelJS = require('exceljs/dist/es5');
8

Chèn hàng

const ExcelJS = require('exceljs/dist/es5');
9

Tham sốDescriptionDefault ValueposRow Số nơi bạn muốn chèn, đẩy xuống tất cả các hàng từ therevalue/sThe new row/s valuesstyle'i' cho kế thừa từ hàng trên, , 'i+' để bao gồm các ô trống, 'o' cho kiểu gốc, 'o+'

mối nố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');
0

Tham sốMô tảGiá trị mặc địnhbắt đầuĐiểm bắt đầu để nối từđếmSố hàng/ô cần xóa. chèn Giá trị hàng/ô mới để chèn

Nhân đôi một hà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');
1

Tham số Mô tả Giá trị mặc định Số dòng bắt đầu bạn muốn sao chép (đầu tiên trong excel là 1)số lượngSố lần bạn muốn sao chép hàng1chèntrue nếu bạn muốn chèn hàng mới cho các hàng trùng lặp hoặc false nếu bạn muốn thay thế chúngtrue

Tên được xác định

Các ô riêng lẻ (hoặc nhiều nhóm ô) có thể được gán tên cho chúng. Tên có thể được sử dụng trong công thức và xác thực dữ liệu (và có thể hơn thế nữa)

// 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

Xác thực dữ liệu

Các ô có thể xác định giá trị nào hợp lệ hoặc không và cung cấp lời nhắc cho người dùng để giúp hướng dẫn họ

Các loại xác thực có thể là một trong những loại sau

TypeDescriptionlistXác định một tập hợp các giá trị hợp lệ riêng biệt. Excel sẽ cung cấp những giá trị này trong danh sách thả xuống để dễ dàng nhập toàn bộ Giá trị phải là số nguyên thập phân Giá trị phải là số thập phân văn bản Độ dài Giá trị có thể là văn bản nhưng độ dài được kiểm soát tùy chỉnh Một công thức tùy chỉnh kiểm soát các giá trị hợp lệ

Đối với các loại không phải danh sách hoặc tùy chỉnh, các toán tử sau ảnh hưởng đến việc xác thực

Toán tử Mô tảbetweenValues ​​phải nằm giữa các kết quả công thứckhông phảiBetweenValues ​​không được nằm giữa các kết quả của công thứcrequalValue phải bằng công thức resultnotEqualValue không được bằng công thức resultgreaterThanValue phải lớn hơn công thức resultlessThanValue phải nhỏ hơn công thức resultGreaterThanOrEqualValue phải lớn hơn hoặc bằng công thức resultlessThanOrEqualValue phải nhỏ hơn hoặc bằng công thức

// 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

Nhận xét di động

Thêm nhận xét kiểu cũ vào mộ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');
4

Thuộc tính nhận xét ô

Bảng sau đây xác định các thuộc tính được hỗ trợ bởi nhận xét ô

FieldRequiredDefault ValueDescriptiontextsYVăn bản của commentmarginsN{}Xác định giá trị của lề cho ô tự động hoặc tùy chỉnh commentsprotectionN{}Chỉ định trạng thái khóa của đối tượng và văn bản đối tượng bằng cách sử dụng thuộc tính bảo vệeditAsN'absolute'Sử dụng thuộc tính 'editAs' để chỉ định cách neo chú thích vào

Lề nhận xét ô

Xác định chế độ đặt lề trang của chú thích ô, chế độ tự động hoặc tùy chỉ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');
5

Thuộc tính lợi nhuận được hỗ trợ

Thuộc tínhYêu cầu Giá trị mặc địnhDescriptioninsetmodeN'auto'Xác định xem lề nhận xét có được đặt tự động hay không và giá trị là 'tự động' hay 'tùy chỉnh'insetN[0. 13, 0. 13, 0. 25, 0. 25]Khoảng trắng trên đường viền của chú thích. Đơn vị là centimet. Hướng trái, trên, phải, dưới

Ghi chú. Cài đặt

const ExcelJS = require('exceljs');
03 này chỉ có hiệu lực khi giá trị của
const ExcelJS = require('exceljs');
04 là 'tùy chỉnh'

Bảo vệ bình luận di động

Chỉ định trạng thái khóa của đối tượng và văn bản đối tượng bằng thuộc tính bảo vệ

// 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

Thuộc tính bảo vệ được hỗ trợ

Thuộc tínhYêu cầuMặc địnhGiá trịMô tảbị khóaN'True'Phần tử này chỉ định rằng đối tượng bị khóa khi trang tính được bảo vệlockTextN'True'Phần tử này chỉ định rằng văn bản của đối tượng bị khóa

Ghi chú. Các đối tượng bị khóa chỉ hợp lệ khi trang tính được bảo vệ

Nhận xét ô EditAs

Các nhận xét ô cũng có thể có thuộc tính 'editAs' sẽ kiểm soát cách các nhận xét được neo vào (các) ô. Nó có thể có một trong các giá trị 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

ValueDescriptiontwoCellsNó chỉ định rằng kích thước và vị trí của ghi chú thay đổi theo ô mộtCellsNó chỉ định rằng kích thước của ghi chú là cố định và vị trí thay đổi theo ôbsoluteĐây là mặc định. Nhận xét sẽ không bị di chuyển hoặc thay đổi kích thước với các ô

Những cái bàn

Các bảng cho phép thao tác trong bảng đối với dữ liệu dạng bảng

Để thêm bảng vào trang tính, hãy xác định mô hình bảng và gọi addTable

// 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

Ghi chú. Việc thêm bảng vào trang tính sẽ sửa đổi trang tính bằng cách đặt tiêu đề và dữ liệu hàng vào trang tính. Mọi dữ liệu trên trang tính được bao phủ bởi bảng kết quả (bao gồm cả tiêu đề và tổng số) sẽ bị ghi đè

Thuộc tính bảng

Bảng sau đây xác định các thuộc tính được hỗ trợ bởi các bảng

Thuộc tính bảng Mô tảBắt buộcGiá trị mặc địnhTên của bảngYdisplayNameTên hiển thị của bảngNnamerefÔ trên cùng bên trái của bảngYheaderRowHiển thị tiêu đề ở đầu bảngNtruetotalsRowHiển thị tổng số ở cuối bảngNfalsestyleThuộc tính kiểu bổ sungN{}cộtĐịnh nghĩa cộtYrowsHàng của dữ liệuY

Thuộc tính kiểu bảng

Bảng sau đây xác định các thuộc tính được hỗ trợ trong thuộc tính kiểu bảng

Thuộc tính kiểu Mô tảBắt buộcGiá trị mặc địnhChủ đềChủ đề màu của bảngN'TableStyleMedium2'showĐầu tiênCộtĐánh dấu cột đầu tiên (đậm)NfalseshowLastColumnĐánh dấu cột cuối cùng (đậm)NfalseshowRowStripesCác hàng thay thế được hiển thị với màu nềnNfalseshowColumnStripesCác hàng xen kẽ được hiển thị bằng màu nềnNfalse

Thuộc tính cột bảng

Bảng sau đây xác định các thuộc tính được hỗ trợ trong mỗi cột của bảng

Thuộc tính cộtMô tảBắt buộcGiá trị mặc địnhTên của cột, cũng được sử dụng trong tiêu đềYfilterButtonChuyển điều khiển bộ lọc trong tiêu đềNfalsetotalsRowLabelNhãn để mô tả hàng tổng (cột đầu tiên)N'Total'totalsRowFunctionTên của hàm tổngN'none'totalsRowFormulaCông thức tùy chọn cho hàm tùy chỉnhN

Hàm tổng

Bảng sau đây liệt kê các giá trị hợp lệ cho thuộc tính totalsRowFunction được xác định bởi các cột. Nếu bất kỳ giá trị nào không phải là 'tùy chỉnh' được sử dụng, thì không cần thiết phải bao gồm công thức được liên kết vì giá trị này sẽ được chèn vào bảng

Tổng số HàmMô tảkhông cóKhông có chức năng tính tổng nào cho cột nàytrung bìnhTính trung bình cho cộtđếmNumsĐếm mục nhập là sốđếmĐếm mục nhậpmaxGiá trị lớn nhất trong cột nàyminGiá trị nhỏ nhất trong cột nàystdDevĐộ lệch chuẩn cho cột nàyvarPhương sai cho cột nàysumTổng các mục nhập cho cột nàytùy chỉnhMột công thức tùy chỉnh. Yêu cầu một giá trị totalsRowFormula được liên kết

Chủ đề kiểu bảng

Tên chủ đề hợp lệ tuân theo mẫu sau

  • "Kiểu bảng [Bóng tối] [Số]"

Shades, Numbers có thể là một trong

  • Ánh sáng, 1-21
  • Trung bình, 1-28
  • Tối, 1-11

Đối với không có chủ đề, hãy sử dụng giá trị null

Ghi chú. chủ đề bảng tùy chỉnh chưa được exceljs hỗ trợ

Sửa đổi bảng

Các bảng hỗ trợ một tập hợp các chức năng thao tác cho phép thêm hoặc xóa dữ liệu và thay đổi một số thuộc tính. Vì nhiều thao tác trong số này có thể có hiệu ứng trên trang tính nên các thay đổi phải được thực hiện sau khi hoàn tất

Tất cả các giá trị chỉ mục trong bảng đều dựa trên số 0, vì vậy số hàng đầu tiên và số cột đầu tiên là 0

Thêm hoặc xóa Tiêu đề và Tổng số

// 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

Di dời một bảng

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
0

Thêm và xóa hàng

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
1

Thêm và xóa cột

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
2

Thay đổi thuộc tính cột

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
3

phong cách

Mỗi ô, hàng và cột hỗ trợ một tập hợp phong phú các kiểu và định dạng ảnh hưởng đến cách các ô được hiển thị

Các kiểu được đặt bằng cách gán các thuộc tính sau

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
4

Khi một kiểu được áp dụng cho một hàng hoặc cột, nó sẽ được áp dụng cho tất cả các ô hiện có trong hàng hoặc cột đó. Ngoài ra, bất kỳ ô mới nào được tạo sẽ kế thừa các kiểu ban đầu của nó từ hàng và cột mà ô đó thuộc về

Nếu cả hàng và cột của một ô đều xác định một kiểu cụ thể (e. g. phông chữ), ô sẽ sử dụng kiểu hàng trên kiểu cột. Tuy nhiên, nếu hàng và cột xác định các kiểu khác nhau (e. g. cột. numFmt và hàng. phông chữ), ô sẽ kế thừa phông chữ từ hàng và numFmt từ cột

báo trước. Tất cả các thuộc tính trên (ngoại trừ numFmt, là một chuỗi), là các cấu trúc đối tượng JS. Nếu cùng một đối tượng kiểu được gán cho nhiều thực thể bảng tính thì mỗi thực thể sẽ chia sẻ cùng một đối tượng kiểu. Nếu đối tượng kiểu được sửa đổi sau đó trước khi bảng tính được đánh số thứ tự, thì tất cả các thực thể tham chiếu đến đối tượng kiểu đó cũng sẽ được sửa đổi. Hành vi này nhằm ưu tiên hiệu suất bằng cách giảm số lượng đối tượng JS được tạo. Nếu bạn muốn các đối tượng kiểu độc lập, bạn cần sao chép chúng trước khi gán chúng. Ngoài ra, theo mặc định, khi tài liệu được đọc từ tệp (hoặc luồng) nếu các thực thể bảng tính có chung kiểu, thì chúng cũng sẽ tham chiếu cùng một đối tượng kiểu

định dạng số

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
5

Phông chữ

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
6

Thuộc tính phông chữ Mô tả Ví dụ Giá trị tên Tên phông chữ. 'Arial', 'Calibri', v.v. familyFont family cho dự phòng. Một giá trị số nguyên. 1 - Serif, 2 - Sans Serif, 3 - Mono, Khác - sơ đồ phông chữ không xác định. 'phụ', 'chính', 'không'bộ ký tựBộ ký tự phông chữ. Một giá trị số nguyên. 1, 2, v.v. kích thước cỡ chữ. Một giá trị số nguyên. 9, 10, 12, 16, v.v. mô tả colorColour, một đối tượng chứa giá trị ARGB. { argb. 'FFFF0000'}trọng số phông chữ đậmtrue, falseitalicPhông chữ độ dốctrue, falseunderlineKiểu gạch chân phông chữtrue, false, 'none', 'single', 'double', 'singleAccounting', 'doubleAccounting'strikeFont gạch ngang quatrue, falseoutlinePhông ngoài phông chữtrue, falsevertCăn chỉnh dọc'chỉ số trên', 'chỉ số dưới'

căn chỉnh

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
7

Giá trị thuộc tính căn chỉnh hợp lệ

ngang dọc bao bọcVăn bảnthu nhỏToFitindentđọcĐặt hàngvăn bảnXoay tráitrên đúngđúngsố nguyênrtl0 đến 90trung tâmsaisaiseltr-1 đến -90phảidưới cùngdọcđiềnphân phốibiện minhbiện minhtrung tâmLiên tụcphân phối

biên giới

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
8

Kiểu viền hợp lệ

  • gầy
  • say mê
  • đi thẳng
  • tóc
  • dấu gạch ngangDotDot
  • nghiêngDashDot
  • trung bìnhDashed
  • trung bìnhDashDotDot
  • trung bìnhDashDot
  • Trung bình
  • gấp đôi
  • dày

lấp đầy

const rewritePattern = require('regexpu-core');
const {generateRegexpuOptions} = require('@babel/helper-create-regexp-features-plugin/lib/util');

const {RegExp} = global;
try {
  new RegExp('a', 'u');
} catch (err) {
  global.RegExp = function(pattern, flags) {
    if (flags && flags.includes('u')) {
      return new RegExp(rewritePattern(pattern, flags, generateRegexpuOptions({flags, pattern})));
    }
    return new RegExp(pattern, flags);
  };
  global.RegExp.prototype = RegExp;
}
9

Điền mẫu

PropertyRequiredDescriptiontypeYValue. 'pattern'
Chỉ định màu tô này sử dụng các mẫumẫuYSChỉ định loại mẫu (xem bên dưới)fgColorNSChỉ định màu nền trước của mẫu. Mặc định là màu đen. bgColorNSChỉ định màu nền của mẫu. Mặc định là màu trắng

Ghi chú. Nếu bạn muốn điền vào một ô bằng cách sử dụng mẫu

const ExcelJS = require('exceljs');
05, thì bạn không cần chỉ định
const ExcelJS = require('exceljs');
06. Xem ví dụ ở trên cho ô
const ExcelJS = require('exceljs');
07 với mẫu
const ExcelJS = require('exceljs');
05 và san hô
const ExcelJS = require('exceljs');
09

Các loại mẫu hợp lệ

  • không ai
  • chất rắn
  • màu xám đen
  • trung bìnhXám
  • xám nhạt
  • xám125
  • xám0625
  • tốiNgang
  • tốiDọc
  • bóng tối
  • tốiUp
  • lưới tối
  • bóng tốiTrellis
  • ánh sáng Ngang
  • ánh sángDọc
  • ánh sáng xuống
  • chiếu sáng
  • ánh sángLưới
  • ánh sángTrellis

Đổ dốc màu

PropertyRequiredDescriptiontypeYValue. 'gradient'
Chỉ định màu tô này sử dụng gradientsgradientYSChỉ định loại gradient. Một trong ['góc', 'đường dẫn']độ gócĐối với độ dốc 'góc', chỉ định hướng của độ dốc. 0 là từ trái sang phải. Các giá trị từ 1 - 359 xoay hướng theo chiều kim đồng hồđường dẫn trung tâmĐối với độ dốc 'đường dẫn'. Chỉ định tọa độ tương đối cho điểm bắt đầu của đường dẫn. Các giá trị 'trái' và 'trên cùng' nằm trong khoảng từ 0 đến 1 điểm dừngYChỉ định chuỗi màu gradient. Là một mảng các đối tượng chứa vị trí và màu sắc bắt đầu từ vị trí 0 và kết thúc bằng vị trí 1. Các vị trí trung gian có thể được sử dụng để chỉ định các màu khác trên đường dẫn.

Hãy cẩn thận

Sử dụng giao diện ở trên, có thể tạo các hiệu ứng tô màu chuyển sắc không thể thực hiện được bằng chương trình soạn thảo XLSX. Ví dụ: Excel chỉ hỗ trợ độ dốc góc là 0, 45, 90 và 135. Tương tự, chuỗi các điểm dừng cũng có thể bị giới hạn bởi giao diện người dùng với các vị trí [0,1] hoặc [0,0. 5,1] là tùy chọn duy nhất. Hãy cẩn thận với phần điền này để đảm bảo nó được người xem XLSX mục tiêu hỗ trợ

Văn bản phong phú

Các ô riêng lẻ hiện hỗ trợ văn bản có định dạng hoặc định dạng trong ô. Các giá trị văn bản có định dạng có thể kiểm soát các thuộc tính phông chữ của bất kỳ số lượng chuỗi con nào trong giá trị văn bản. Xem Phông chữ để biết danh sách chi tiết đầy đủ về những thuộc tính phông chữ nào được hỗ trợ

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
0

Bảo vệ tế bào

Bảo vệ mức ô có thể được sửa đổi bằng cách sử dụng thuộc tính bảo vệ

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
1

Thuộc tính bảo vệ được hỗ trợ

PropertyDefaultDescriptionlockedtrueChỉ định liệu một ô có bị khóa hay không nếu trang tính được bảo vệ. hiddenfalseChỉ định liệu công thức của ô có hiển thị hay không nếu trang tính được bảo vệ

Định dạng có điều kiện

Định dạng có điều kiện cho phép một trang tính hiển thị các kiểu, biểu tượng, v.v. tùy thuộc vào giá trị ô hoặc bất kỳ công thức tùy ý nào

Các quy tắc định dạng có điều kiện được thêm vào ở cấp độ trang tính và thường sẽ bao gồm một dải ô

Có thể áp dụng nhiều quy tắc cho một phạm vi ô nhất định và mỗi quy tắc sẽ áp dụng kiểu riêng của nó

Nếu nhiều quy tắc ảnh hưởng đến một ô nhất định, giá trị mức độ ưu tiên của quy tắc sẽ xác định quy tắc nào thắng nếu các kiểu cạnh tranh xung đột. Quy tắc có giá trị ưu tiên thấp hơn sẽ thắng. Nếu các giá trị ưu tiên không được chỉ định cho một quy tắc nhất định, ExcelJS sẽ gán chúng theo thứ tự tăng dần

Note: at present, only a subset of conditional formatting rules are supported. Specifically, only the formatting rules that do not require XML rendering inside an element. This means that datasets and three specific icon sets (3Triangles, 3Stars, 5Boxes) are not supported.

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
2

Các loại quy tắc định dạng có điều kiện được hỗ trợ

LoạiMô tảbiểu thứcCó thể sử dụng bất kỳ chức năng tùy chỉnh nào để kích hoạt quy tắc. cellIsSo sánh giá trị ô với công thức được cung cấp bằng toán tử đã chỉ địnhtop10Áp dụng định dạng cho các ô có giá trị ở trên cùng (hoặc dưới cùng) phạm visaboveAverageÁp dụng định dạng cho các ô có giá trị ở trên (hoặc dưới) trung bìnhcolorScaleÁp dụng nền màu cho các ô dựa trên vị trí giá trị của chúng nằm trong phạm vibiểu tượngSetThêm một trong các phạm vi

Sự biểu lộ

FieldOptionalDefaultDescriptiontype'expression'priorityYdetermines priority ordering of stylesformulaearray of 1 formula string that returns a true/false value. To reference the cell value, use the top-left cell addressstylestyle structure to apply if the formula returns true

ô là

FieldOptionalDefaultDescriptiontype'cellIs'priorityYdetermines priority ordering of stylesoperatorhow to compare cell value with formula resultformulaearray of 1 formula string that returns the value to compare against each cellstylestyle structure to apply if the comparison returns true

Tế bào là toán tử

Toán tử Mô tả bằngĐịnh dạng áp dụng nếu giá trị ô bằng giá trị công thứclớn hơnĐịnh dạng áp dụng nếu giá trị ô lớn hơn giá trị công thứckhông bằngĐịnh dạng áp dụng nếu giá trị ô nhỏ hơn giá trị công thứcgiữaĐịnh dạng áp dụng nếu giá trị ô nằm giữa hai giá trị công thức (bao gồm)

Tôp 10

FieldOptionalDefaultDescriptiontype'top10'priorityYdetermines priority ordering of stylesrankY10specifies how many top (or bottom) values are included in the formattingpercentYfalseif true, the rank field is a percentage, not an absolutebottomYfalseif true, the bottom values are included instead of the topstylestyle structure to apply if the comparison returns true

Trên mức trung bình

FieldOptionalDefaultDescriptiontype'aboveAverage'priorityYdetermines priority ordering of stylesaboveAverageYfalseif true, the rank field is a percentage, not an absolutestylestyle structure to apply if the comparison returns true

Thang màu

FieldOptionalDefaultDescriptiontype'colorScale'priorityYdetermines priority ordering of stylescfvoarray of 2 to 5 Conditional Formatting Value Objects specifying way-points in the value rangecolorcorresponding array of colours to use at given way pointsstylestyle structure to apply if the comparison returns true

Bộ biểu tượng

FieldOptionalDefaultDescriptiontype'iconSet'priorityYdetermines priority ordering of stylesiconSetY3TrafficLightsname of icon set to useshowValuetrueSpecifies whether the cells in the applied range display the icon and cell value, or the icon onlyreversefalseSpecifies whether the icons in the icon set specified in iconSet are show in reserve order. If custom equals "true" this value must be ignoredcustomfalseSpecifies whether a custom set of icons is usedcfvoarray of 2 to 5 Conditional Formatting Value Objects specifying way-points in the value rangestylestyle structure to apply if the comparison returns true

Thanh dữ liệu

FieldOptionalDefaultDescriptiontype'dataBar'priorityYdetermines priority ordering of stylesminLength0Specifies the length of the shortest data bar in this conditional formatting rangemaxLength100Specifies the length of the longest data bar in this conditional formatting rangeshowValuetrueSpecifies whether the cells in the conditional formatting range display both the data bar and the numeric value or the data bargradienttrueSpecifies whether the data bar has a gradient fillbordertrueSpecifies whether the data bar has a bordernegativeBarColorSameAsPositivetrueSpecifies whether the data bar has a negative bar color that is different from the positive bar colornegativeBarBorderColorSameAsPositivetrueSpecifies whether the data bar has a negative border color that is different from the positive border coloraxisPosition'auto'Specifies the axis position for the data bardirection'leftToRight'Specifies the direction of the data barcfvoarray of 2 to 5 Conditional Formatting Value Objects specifying way-points in the value rangestylestyle structure to apply if the comparison returns true

Chứa văn bản

FieldOptionalDefaultDescriptiontype'containsText'priorityYdetermines priority ordering of stylesoperatortype of text comparisontexttext to search forstylestyle structure to apply if the comparison returns true

Chứa toán tử văn bản

Toán tửMô tảchứaVăn bảnĐịnh dạng áp dụng nếu giá trị ô chứa giá trị được chỉ định trong trường 'văn bản'chứaBlanksĐịnh dạng áp dụng nếu giá trị ô chứa khoảng trốngkhông chứaChốngBlanksĐịnh dạng áp dụng nếu giá trị ô không chứa khoảng trốngchứaLỗiĐịnh dạng áp dụng nếu giá trị ô chứa lỗikhông chứa lỗiĐịnh dạng áp dụng nếu giá trị ô không chứa lỗi

Khoảng thời gian

FieldOptionalDefaultDescriptiontype'timePeriod'priorityYdetermines priority ordering of stylestimePeriodwhat time period to compare cell value tostylestyle structure to apply if the comparison returns true

Khoảng thời gian

Khoảng thời gian Mô tảcuối tuầnÁp dụng định dạng nếu giá trị ô rơi vào tuần trướcTuần nàyÁp dụng định dạng nếu giá trị ô rơi vào tuần này nextWeekÁp dụng định dạng nếu giá trị ô rơi vào tuần tiếp theohôm quaÁp dụng định dạng nếu giá trị ô bằng hôm quahôm nayÁp dụng định dạng nếu giá trị ô bằng hôm nayngày maiÁp dụng định dạng nếu giá trị ô bằng

Cấp phác thảo

Excel hỗ trợ lập dàn ý;

Mức độ phác thảo có thể được xác định trong thiết lập cột

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
3

Hoặc trực tiếp trên hàng hoặc cột

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
4

Các mức phác thảo trang tính có thể được đặt trên trang tính

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
5

Ghi chú. điều chỉnh mức đại cương trên hàng hoặc cột hoặc mức đại cương trên trang tính sẽ phát sinh tác dụng phụ của việc sửa đổi thuộc tính thu gọn của tất cả các hàng hoặc cột bị ảnh hưởng bởi thay đổi thuộc tính. e. g

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
6

Các thuộc tính phác thảo có thể được thiết lập trên trang tính

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
7

Hình ảnh

Thêm hình ảnh vào trang tính là quy trình gồm hai bước. Đầu tiên, hình ảnh được thêm vào sổ làm việc thông qua hàm addImage(), hàm này cũng sẽ trả về giá trị imageId. Sau đó, bằng cách sử dụng imageId, hình ảnh có thể được thêm vào trang tính dưới dạng nền lát gạch hoặc bao phủ một phạm vi ô

Ghi chú. Kể từ phiên bản này, việc điều chỉnh hoặc chuyển đổi hình ảnh không được hỗ trợ và hình ảnh không được hỗ trợ ở chế độ phát trực tuyến

Thêm hình ảnh vào sổ làm việc

sổ làm việc. Hàm addImage hỗ trợ thêm hình ảnh theo tên tệp hoặc theo Bộ đệm. Lưu ý rằng trong cả hai trường hợp, phần mở rộng phải được chỉ định. Các giá trị tiện ích mở rộng hợp lệ bao gồm 'jpeg', 'png', 'gif'

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
8

Thêm hình nền vào trang tính

Sử dụng id hình ảnh từ Workbook. addImage, nền cho trang tính có thể được đặt bằng hàm addBackgroundImage

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js"></script>
<script src="exceljs.js"></script>
9

Thêm hình ảnh trên một phạm vi

Sử dụng id hình ảnh từ Workbook. addImage, một hình ảnh có thể được nhúng trong trang tính để bao phủ một phạm vi. Các tọa độ được tính từ phạm vi sẽ bao gồm từ trên cùng bên trái của ô đầu tiên đến dưới cùng bên phải của ô thứ hai

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
0

Sử dụng một cấu trúc thay vì một chuỗi phạm vi, có thể che phủ một phần các ô

Lưu ý rằng hệ tọa độ được sử dụng cho điều này dựa trên số 0, vì vậy phía trên bên trái của A1 sẽ là { col. 0, hàng. 0 }. Phân số của các ô có thể được chỉ định bằng cách sử dụng số dấu chấm động, e. g. trung điểm của A1 là { col. 0. 5, hàng. 0. 5 }

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
1

Phạm vi ô cũng có thể có thuộc tính 'editAs' sẽ kiểm soát cách hình ảnh được neo vào (các) ô. Nó có thể có một trong các giá trị sau

ValueDescriptionundefinedNó chỉ định hình ảnh sẽ được di chuyển và định kích thước bằng celloneCellĐây là giá trị mặc định. Hình ảnh sẽ được di chuyển theo các ô nhưng không có kích thước tuyệt đốiHình ảnh sẽ không được di chuyển hoặc có kích thước theo các ô

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
2

Thêm hình ảnh vào một ô

Bạn có thể thêm hình ảnh vào một ô, sau đó xác định chiều rộng và chiều cao của nó bằng pixel ở 96dpi

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
3

Thêm hình ảnh với siêu liên kết

Bạn có thể thêm một hình ảnh có siêu kết nối vào một ô và xác định các siêu kết nối trong phạm vi hình ảnh

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
4

tấm bảo vệ

Trang tính có thể được bảo vệ khỏi sửa đổi bằng cách thêm mật khẩu

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
5

Bảo vệ trang tính cũng có thể được gỡ bỏ

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
6

Xem để biết chi tiết về cách sửa đổi bảo vệ ô riêng lẻ

Ghi chú. Mặc dù hàm protect() trả về một Lời hứa cho biết rằng nó không đồng bộ, nhưng việc triển khai hiện tại chạy trên luồng chính và sẽ sử dụng khoảng 600 mili giây trên một CPU trung bình. Điều này có thể được điều chỉnh bằng cách đặt spinCount, có thể được sử dụng để làm cho quy trình nhanh hơn hoặc linh hoạt hơn

Tùy chọn bảo vệ trang tính

FieldDefaultDescriptionselectLockedCellstrueLets the user select locked cellsselectUnlockedCellstrueLets the user select unlocked cellsformatCellsfalseLets the user format cellsformatColumnsfalseLets the user format columnsformatRowsfalseLets the user format rowsinsertRowsfalseLets the user insert rowsinsertColumnsfalseLets the user insert columnsinsertHyperlinksfalseLets the user insert hyperlinksdeleteRowsfalseLets the user delete rowsdeleteColumnsfalseLets the user delete columnssortfalseLets the user sort dataautoFilterfalseLets the user filter

Tập tin vào/ra

XLSX

Đọc XLSX

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
7

Viết XLSX

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
8

CSV

Đọc CSV

Các tùy chọn được hỗ trợ khi đọc tệp CSV

FieldRequiredTypeDescriptiondateFormatsNArrayChỉ định định dạng mã hóa ngày của dayjs. mapNFunctionMảng tùy chỉnh. nguyên mẫu. hàm gọi lại map() để xử lý dữ liệu. sheetNameNStringChỉ định tên trang tính. parserOptionsNObjectparseOptions tùy chọn @fast-csv/format mô-đun để ghi dữ liệu csv

<script src="--your-project's-pollyfills-here--"></script>
<script src="exceljs.bare.js"></script>
9

Trình phân tích cú pháp CSV sử dụng fast-csv để đọc tệp CSV. formatterOptions trong các tùy chọn được chuyển đến chức năng ghi ở trên sẽ được chuyển đến mô-đun @fast-csv/format để ghi dữ liệu csv. Vui lòng tham khảo README nhanh csv. md để biết chi tiết

Ngày được phân tích cú pháp bằng mô-đun npm dayjs. Nếu một mảng dateFormats không được cung cấp, các dateFormats sau đây được sử dụng

  • 'YYYY-MM-DD[T]HH. mm. ss'
  • 'MM-DD-YYYY'
  • 'YYYY-MM-DD'

Vui lòng tham khảo chi tiết về cách cấu trúc một dateFormat

Viết CSV

Các tùy chọn được hỗ trợ khi ghi vào tệp CSV

FieldRequiredTypeDescriptiondateFormatNStringChỉ định định dạng mã hóa ngày của dayjs. dateUTCNBooleanChỉ định xem ExcelJS có sử dụng
const ExcelJS = require('exceljs');
10 để chuyển đổi múi giờ để phân tích ngày hay không. mã hóaNStringChỉ định định dạng mã hóa tệp. (Chỉ áp dụng cho
const ExcelJS = require('exceljs');
11. )includeEmptyRowsNBooleanChỉ định xem có thể ghi các hàng trống hay không. mapNFunctionMảng tùy chỉnh. nguyên mẫu. hàm gọi lại map() để xử lý các giá trị hàng. sheetNameNStringChỉ định tên trang tính. sheetIdNNumberChỉ định ID trang tính. formatterOptionsNObjectformatterOptions tùy chọn @fast-csv/format mô-đun để ghi dữ liệu csv

const workbook = new ExcelJS.Workbook();
0

Trình phân tích cú pháp CSV sử dụng fast-csv để ghi tệp CSV. formatterOptions trong các tùy chọn được chuyển đến chức năng ghi ở trên sẽ được chuyển đến mô-đun @fast-csv/format để ghi dữ liệu csv. Vui lòng tham khảo README nhanh csv. md để biết chi tiết

Ngày được định dạng bằng mô-đun npm dayjs. Nếu không có dateFormat được cung cấp, dayjs. ISO_8601 được sử dụng. Khi viết CSV, bạn có thể cung cấp boolean dateUTC là true để ExcelJS phân tích cú pháp ngày mà không tự động chuyển đổi múi giờ bằng cách sử dụng

const ExcelJS = require('exceljs');
12

Truyền I/O

Tệp I/O được ghi lại ở trên yêu cầu toàn bộ sổ làm việc được tạo trong bộ nhớ trước khi tệp có thể được ghi. Mặc dù thuận tiện nhưng nó có thể giới hạn kích thước của tài liệu do dung lượng bộ nhớ cần thiết

Trình ghi trực tuyến (hoặc trình đọc) xử lý dữ liệu sổ làm việc hoặc trang tính khi nó được tạo, chuyển đổi nó thành dạng tệp khi nó di chuyển. Thông thường, điều này hiệu quả hơn nhiều đối với bộ nhớ vì dung lượng bộ nhớ cuối cùng và thậm chí cả dung lượng bộ nhớ trung gian nhỏ gọn hơn nhiều so với phiên bản tài liệu, đặc biệt khi bạn xem xét rằng các đối tượng hàng và ô được xử lý sau khi chúng được cam kết

Giao diện của sổ làm việc và trang tính phát trực tuyến gần giống như các phiên bản tài liệu với một số khác biệt nhỏ về mặt thực tế

  • Sau khi một trang tính được thêm vào sổ làm việc, nó không thể bị xóa
  • Sau khi một hàng được cam kết, nó sẽ không thể truy cập được nữa vì nó sẽ bị xóa khỏi trang tính
  • unMerge Cells() không được hỗ trợ

Lưu ý rằng có thể xây dựng toàn bộ sổ làm việc mà không cần cam kết bất kỳ hàng nào. Khi sổ làm việc được cam kết, tất cả các trang tính đã thêm (bao gồm tất cả các hàng không được cam kết) sẽ tự động được cam kết. Tuy nhiên, trong trường hợp này, sẽ thu được rất ít so với phiên bản Tài liệu

Truyền trực tuyến XLSX

Trình ghi XLSX trực tuyến(#contents)

Trình ghi sổ làm việc XLSX phát trực tuyến có sẵn trong ExcelJS. dòng. không gian tên xlsx

Hàm tạo lấy một đối tượng tùy chọn tùy chọn với các trường sau

FieldDescriptionstreamChỉ định luồng có thể ghi để ghi sổ làm việc XLSX vào. tên tệpNếu luồng không được chỉ định, trường này chỉ định đường dẫn đến tệp để ghi sổ làm việc XLSX vào. useSharedStringsChỉ định xem có sử dụng chuỗi chia sẻ trong sổ làm việc hay không. Mặc định là
const ExcelJS = require('exceljs');
13. useStylesChỉ định có thêm thông tin kiểu dáng vào sổ làm việc hay không. Các kiểu có thể thêm một số chi phí hoạt động. Mặc định là
const ExcelJS = require('exceljs');
13. zip mà ExcelJS chuyển nội bộ tới Archiver. Mặc định là
const ExcelJS = require('exceljs');
15

Nếu cả luồng và tên tệp đều không được chỉ định trong các tùy chọn, trình ghi sổ làm việc sẽ tạo một đối tượng StreamBuf sẽ lưu trữ nội dung của sổ làm việc XLSX trong bộ nhớ. Đối tượng StreamBuf này, có thể được truy cập thông qua sổ làm việc thuộc tính. luồng, có thể được sử dụng để truy cập trực tiếp các byte theo luồng. read() hoặc chuyển nội dung sang luồng khác

const workbook = new ExcelJS.Workbook();
1

Nói chung, giao diện của trình ghi XLSX phát trực tuyến giống như sổ làm việc Tài liệu (và trang tính) được mô tả ở trên, trên thực tế, các đối tượng hàng, ô và kiểu đều giống nhau

Tuy nhiên có một số khác biệt

Xây dựng

Như đã thấy ở trên, WorkbookWriter thường sẽ yêu cầu luồng đầu ra hoặc tệp được chỉ định trong hàm tạo

Cam kết dữ liệu

Khi một hàng của trang tính đã sẵn sàng, nó phải được cam kết để có thể giải phóng đối tượng hàng và nội dung. Thông thường, điều này sẽ được thực hiện khi mỗi hàng được thêm vào

const workbook = new ExcelJS.Workbook();
2

Lý do WorksheetWriter không cam kết các hàng khi chúng được thêm vào là để cho phép các ô được hợp nhất trên các hàng

const workbook = new ExcelJS.Workbook();
3

Khi mỗi trang tính được hoàn thành, nó cũng phải được cam kết

const workbook = new ExcelJS.Workbook();
4

Để hoàn thành tài liệu XLSX, sổ làm việc phải được cam kết. Nếu bất kỳ trang tính nào trong sổ làm việc không được cam kết, chúng sẽ được cam kết tự động như một phần của cam kết sổ làm việc

const workbook = new ExcelJS.Workbook();
5

Trình đọc XLSX trực tuyến(#contents)

Trình đọc sổ làm việc XLSX trực tuyến có sẵn trong ExcelJS. dòng. không gian tên xlsx

Hàm tạo nhận đối số đầu vào bắt buộc và đối số tùy chọn tùy chọn

ArgumentDescriptioninput (bắt buộc)Chỉ định tên của tệp hoặc luồng có thể đọc được để đọc sổ làm việc XLSX từ đó. tùy chọn (tùy chọn)Chỉ định cách xử lý các loại sự kiện xảy ra trong quá trình phân tích cú pháp đọc. tùy chọn. các mụcChỉ định có phát ra các mục (_______016) hay không (
const ExcelJS = require('exceljs');
17). Mặc định là
const ExcelJS = require('exceljs');
16. tùy chọn. sharedStringsChỉ định có lưu vào bộ nhớ đệm các chuỗi dùng chung (
const ExcelJS = require('exceljs');
19), chèn chúng vào các giá trị ô tương ứng hay phát ra chúng (
const ExcelJS = require('exceljs');
16) hay bỏ qua chúng (
const ExcelJS = require('exceljs');
17), trong cả hai trường hợp, giá trị ô sẽ là tham chiếu đến giá trị của chuỗi dùng chung . Mặc định là
const ExcelJS = require('exceljs');
19. tùy chọn. siêu liên kếtChỉ định có lưu siêu liên kết vào bộ đệm ẩn hay không (
const ExcelJS = require('exceljs');
19), siêu liên kết này sẽ chèn chúng vào các ô tương ứng của chúng, có phát ra chúng hay không (
const ExcelJS = require('exceljs');
16) hay có bỏ qua chúng hay không (
const ExcelJS = require('exceljs');
17). Mặc định là
const ExcelJS = require('exceljs');
19. tùy chọn. styleChỉ định có lưu các kiểu vào bộ nhớ cache (_______019) hay không, kiểu này sẽ chèn chúng vào các hàng và ô tương ứng của chúng hay có bỏ qua chúng hay không (
const ExcelJS = require('exceljs');
17). Mặc định là
const ExcelJS = require('exceljs');
19. tùy chọn. worksheetsChỉ định có phát ra worksheets (
const ExcelJS = require('exceljs');
16) hay không (
const ExcelJS = require('exceljs');
17). Mặc định là
const ExcelJS = require('exceljs');
16

const workbook = new ExcelJS.Workbook();
6

Xin lưu ý rằng

const ExcelJS = require('exceljs');
33 trả về một mảng các hàng thay vì từng hàng riêng lẻ vì lý do hiệu suất. https. //github. com/nodejs/nút/vấn đề/31979

Lặp lại tất cả các sự kiện(#contents)

Các sự kiện trên sổ làm việc là 'trang tính', 'chuỗi chia sẻ' và 'siêu liên kết'. Các sự kiện trên trang tính là 'hàng' và 'siêu liên kết'

const workbook = new ExcelJS.Workbook();
7

Luồng có thể đọc được(#contents)

Mặc dù chúng tôi đặc biệt khuyến khích sử dụng phép lặp không đồng bộ, nhưng chúng tôi cũng hiển thị giao diện phát trực tuyến để tương thích ngược

const workbook = new ExcelJS.Workbook();
8

trình duyệt

Một phần của thư viện này đã được tách biệt và thử nghiệm để sử dụng trong môi trường trình duyệt

Do tính chất phát trực tuyến của trình đọc sổ làm việc và trình ghi sổ làm việc, những thứ này chưa được đưa vào. Chỉ có thể sử dụng sổ làm việc dựa trên tài liệu (xem để biết chi tiết)

Ví dụ mã sử dụng ExcelJS trong trình duyệt, hãy xem thư mục spec/browser trong repo github

Gói sẵn

Các tệp sau được đóng gói sẵn và được bao gồm trong thư mục dist

  • exceljs. js
  • exceljs. tối thiểu. js
Các loại giá trị

Các loại giá trị sau được hỗ trợ

Giá trị Null

liệt kê. Excel. Loại giá trị. Vô giá trị

Giá trị null cho biết không có giá trị và thường sẽ không được lưu trữ khi ghi vào tệp (ngoại trừ các ô được hợp nhất). Nó có thể được sử dụng để xóa giá trị khỏi một ô

E. g

const workbook = new ExcelJS.Workbook();
9

Hợp nhất tế bào

liệt kê. Excel. Loại giá trị. hợp nhất

Một ô hợp nhất là một ô có giá trị được liên kết với một ô 'chính' khác. Việc gán cho một ô hợp nhất sẽ khiến ô chính bị sửa đổi

Giá trị số

liệt kê. Excel. Loại giá trị. Con số

Một giá trị số

E. g

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
0

Chuỗi giá trị

liệt kê. Excel. Loại giá trị. Chuỗi

Một chuỗi văn bản đơn giản

E. g

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
1

Giá trị ngày

liệt kê. Excel. Loại giá trị. Ngày tháng

Một giá trị ngày, được biểu thị bằng loại Ngày của JavaScript

E. g

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
2

Giá trị siêu liên kết

liệt kê. Excel. Loại giá trị. siêu liên kết

Một URL có cả văn bản và giá trị liên kết

E. g

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
3

Giá trị công thức

liệt kê. Excel. Loại giá trị. Công thức

Một công thức Excel để tính toán các giá trị một cách nhanh chóng. Lưu ý rằng mặc dù loại ô sẽ là Công thức, nhưng ô có thể có giá trị Kiểu hiệu quả sẽ được lấy từ giá trị kết quả

Lưu ý rằng ExcelJS không thể xử lý công thức để tạo ra kết quả, nó phải được cung cấp

E. g

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
4

Các ô cũng hỗ trợ getters tiện lợi để truy cập công thức và kết quả

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
5

Công thức chia sẻ

Các công thức được chia sẻ nâng cao khả năng nén của tài liệu xlsx bằng cách giảm sự lặp lại của văn bản trong trang tính xml. Ô trên cùng bên trái trong một phạm vi là ô chính được chỉ định và sẽ giữ công thức mà tất cả các ô khác trong phạm vi sẽ lấy từ đó. Sau đó, các ô 'nô lệ' khác có thể tham chiếu đến ô chính này thay vì xác định lại toàn bộ công thức một lần nữa. Lưu ý rằng công thức chính sẽ được dịch sang các ô phụ theo kiểu Excel thông thường để các tham chiếu đến các ô khác sẽ được chuyển xuống dưới và sang phải tùy thuộc vào độ lệch của ô phụ so với ô chính. Ví dụ. nếu ô chính A2 có công thức tham chiếu đến A1 thì nếu ô B2 chia sẻ công thức của A2 thì nó sẽ tham chiếu đến B1

Một công thức chính có thể được gán cho một ô cùng với các ô phụ trong phạm vi của nó

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
6

Một công thức được chia sẻ có thể được gán cho một ô bằng cách sử dụng biểu mẫu giá trị mới

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
7

Điều này chỉ định rằng ô B2 là một công thức sẽ được bắt nguồn từ công thức trong A2 và kết quả của nó là 10

Trình lấy công thức tiện lợi sẽ dịch công thức trong A2 thành công thức cần có trong B2

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
8

Các công thức được chia sẻ có thể được gán vào một trang tính bằng chức năng 'fillFormula'

workbook.creator = 'Me';
workbook.lastModifiedBy = 'Her';
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();
workbook.lastPrinted = new Date(2016, 9, 27);
9

fillFormula cũng có thể sử dụng hàm gọi lại để tính giá trị tại mỗi ô

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
0

Loại công thức

Để phân biệt giữa các ô công thức thực và đã dịch, hãy sử dụng công cụ lấy công thức

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
1

Loại công thức có các giá trị sau

TênGiá trịEnums. Loại công thức. Không có0Enums. Loại công thức. Master1Enums. Loại công thức. Chia sẻ2

Công thức mảng

Cách thể hiện công thức dùng chung mới trong Excel là công thức mảng. Trong biểu mẫu này, ô chính là ô duy nhất chứa bất kỳ thông tin nào liên quan đến công thức. Nó chứa 'mảng' shareType cùng với phạm vi ô mà nó áp dụng và công thức sẽ được sao chép. Các ô còn lại là các ô thông thường với các giá trị thông thường

Ghi chú. công thức mảng không được dịch theo cách công thức được chia sẻ. Vì vậy, nếu ô chủ A2 đề cập đến A1, thì ô phụ B2 cũng sẽ đề cập đến A1

E. g

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
2

Hàm fillFormula cũng có thể được sử dụng để điền vào công thức mảng

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
3

Giá trị văn bản đa dạng thức

liệt kê. Excel. Loại giá trị. RichText

Văn bản phong phú, có kiểu dáng

E. g

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
4

Giá trị Boolean

liệt kê. Excel. Loại giá trị. Boolean

E. g

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
5

Giá trị lỗi

liệt kê. Excel. Loại giá trị. Lỗi

E. g

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
6

Các giá trị văn bản Lỗi hợp lệ hiện tại là

TênGiá trịExcel. ErrorValue. NotApplicable#N/AExcel. ErrorValue. Tham chiếu #REF. Excel. ErrorValue. Tên#TÊN?Excel. ErrorValue. DivZero#DIV/0. Excel. ErrorValue. Null null. Excel. ErrorValue. Giá trị#VALUE. Excel. ErrorValue. Num num. Thay đổi giao diện

Mọi nỗ lực được thực hiện để tạo ra một giao diện nhất quán tốt không vượt qua các phiên bản nhưng rất tiếc, đôi khi một số thứ phải thay đổi để tốt hơn

0. 1. 0

bảng tính. từng hàng

Các đối số trong hàm gọi lại Worksheet. eachRow đã được hoán đổi và thay đổi; . each) và ưu tiên đối tượng hàng trên số hàng

bảng tính. getRow

Hàm này đã thay đổi từ trả về một mảng thưa thớt các giá trị ô thành trả về một đối tượng Row. Điều này cho phép truy cập các thuộc tính hàng và sẽ tạo điều kiện thuận lợi cho việc quản lý các kiểu hàng, v.v.

Mảng giá trị ô thưa thớt vẫn có sẵn qua Trang tính. getRow(số hàng). các giá trị;

0. 1. 1

tế bào. kiểu mẫu

tế bào. kiểu được đổi tên thành ô. Phong cách

0. 2. 44

Các lời hứa được trả về từ các chức năng được chuyển từ Bluebird sang nút gốc Lời hứa có thể phá vỡ mã gọi nếu chúng dựa vào các tính năng bổ sung của Bluebird

Để giảm thiểu điều này, hai thay đổi sau đã được thêm vào 0. 3. 0

  • Một lib lời hứa tương thích với trình duyệt vẫn có đầy đủ tính năng hơn được sử dụng theo mặc định. Thư viện này hỗ trợ nhiều tính năng của Bluebird nhưng với dung lượng thấp hơn nhiều
  • Một tùy chọn để thực hiện một Promise khác. Xem phần để biết thêm chi tiết
cấu hình

ExcelJS hiện hỗ trợ phép nội xạ phụ thuộc cho thư viện lời hứa. Bạn có thể khôi phục các lời hứa của Bluebird bằng cách đưa đoạn mã sau vào mô-đun của mình

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
7

Xin lưu ý. Tôi đã thử nghiệm cụ thể ExcelJS với bluebird (cho đến gần đây đây là thư viện mà nó đã sử dụng). Từ các bài kiểm tra tôi đã thực hiện, nó sẽ không hoạt động với Q

Hãy cẩn thận

thư mục quận

Trước khi xuất bản mô-đun này, mã nguồn được dịch mã và xử lý theo cách khác trước khi đặt vào thư mục dist/. README này xác định hai tệp - gói trình duyệt và phiên bản rút gọn. Không có nội dung nào khác của dist/thư mục được đảm bảo theo bất kỳ cách nào ngoài tệp được chỉ định là "chính" trong gói. json

Vấn đề đã biết

Thử nghiệm với Puppeteer

Bộ thử nghiệm có trong thư viện này bao gồm một tập lệnh nhỏ được thực thi trong trình duyệt không đầu để xác thực các gói đi kèm. Tại thời điểm viết bài này, có vẻ như thử nghiệm này không hoạt động tốt trong hệ thống con Windows Linux

Vì lý do này, kiểm tra trình duyệt có thể bị vô hiệu hóa bởi sự tồn tại của tệp có tên. vô hiệu hóa kiểm tra trình duyệt

// Set workbook dates to 1904 date system
workbook.properties.date1904 = true;
8

Nối vs Hợp nhất

Nếu bất kỳ thao tác nối nào ảnh hưởng đến ô đã hợp nhất, nhóm hợp nhất sẽ không được di chuyển chính xác

Lịch sử phát hànhVersionChanges0. 0. 9
0. 1. 0
  • Sửa lỗi
    • "<" and ">" text characters properly rendered in xlsx
0. 1. 1
  • Sửa lỗi
    • Nhiều dữ liệu văn bản hơn được ghi đúng vào xml (bao gồm văn bản, siêu liên kết, kết quả công thức và mã định dạng)
    • Nhận dạng mã định dạng ngày tốt hơn
0. 1. 2
  • Đã sửa lỗi điều kiện cuộc đua tiềm ẩn khi ghi zip
0. 1. 3
  • Một số tái cấu trúc nội bộ
0. 1. 5
  • Sửa lỗi
    • Bây giờ xử lý 10 trang tính trở lên trong một sổ làm việc
    • chủ đề1. tệp xml được thêm và tham chiếu đúng cách
0. 1. 6
  • Sửa lỗi
    • Chủ đề tương thích hơn1. xml có trong tệp XLSX
0. 1. 8
  • Sửa lỗi
    • Chủ đề tương thích hơn1. xml có trong tệp XLSX
    • Đã sửa lỗi trường hợp tên tệp
0. 1. 9
  • Sửa lỗi
    • Đã thêm tệp docProps để đáp ứng người dùng Mac Excel
    • Đã sửa lỗi trường hợp tên tệp
    • Đã khắc phục sự cố id trang tính
0. 1. 10
  • Sửa lỗi
    • Xử lý lỗi File Not Found
0. 1. 11
  • Sửa lỗi
    • Đã sửa lỗi căn giữa theo chiều dọc
0. 2. 0
    • Cuối cùng, ExcelJS có thể hỗ trợ ghi các tệp XLSX lớn theo cách hiệu quả về bộ nhớ có thể mở rộng. Hiệu suất đã được tối ưu hóa và thậm chí các bảng tính nhỏ hơn có thể ghi nhanh hơn so với trình soạn thảo tài liệu. Các tùy chọn đã được thêm vào để kiểm soát việc sử dụng các chuỗi và kiểu được chia sẻ vì cả hai đều có thể có ảnh hưởng đáng kể đến hiệu suất
    • Truy cập hàng có thể chỉnh sửa cuối cùng trong trang tính
    • Đối với người viết phát trực tuyến, phương thức này cam kết hàng (và bất kỳ hàng nào trước đó) cho luồng. Các hàng đã cam kết sẽ không thể chỉnh sửa được nữa (và thường bị xóa khỏi đối tượng trang tính). Đối với sổ làm việc kiểu Tài liệu, phương pháp này không có tác dụng
0. 2. 2
  • Một tỷ tế bào
    • Mở khóa thành tựu. Một thử nghiệm đơn giản sử dụng ExcelJS đã tạo một bảng tính với 1.000.000.000 ô. Được tạo bằng dữ liệu ngẫu nhiên với 100.000.000 hàng 10 ô mỗi hàng. Tôi chưa thể xác thực tệp vì Excel sẽ không mở tệp và tôi vẫn chưa triển khai trình đọc phát trực tuyến nhưng tôi hoàn toàn tin tưởng rằng nó tốt vì 1.000.000 hàng đã tải được.
0. 2. 3
  • Sửa lỗi
    • Hợp nhất các kiểu ô
      • Các ô đã hợp nhất hiện vẫn tồn tại (và phân tích cú pháp) kiểu của chúng
    • Cuối cùng, ExcelJS có thể hỗ trợ ghi các tệp XLSX lớn theo cách hiệu quả về bộ nhớ có thể mở rộng. Hiệu suất đã được tối ưu hóa và thậm chí các bảng tính nhỏ hơn có thể ghi nhanh hơn so với trình soạn thảo tài liệu. Các tùy chọn đã được thêm vào để kiểm soát việc sử dụng các chuỗi và kiểu được chia sẻ vì cả hai đều có thể có ảnh hưởng đáng kể đến hiệu suất
    • Truy cập hàng có thể chỉnh sửa cuối cùng trong trang tính
    • Đối với người viết phát trực tuyến, phương thức này cam kết hàng (và bất kỳ hàng nào trước đó) cho luồng. Các hàng đã cam kết sẽ không thể chỉnh sửa được nữa (và thường bị xóa khỏi đối tượng trang tính). Đối với sổ làm việc kiểu Tài liệu, phương pháp này không có tác dụng
0. 2. 4
  • Sửa lỗi
    • Trang tính có ký hiệu và tên
      • Tên trang tính hiện được mã hóa xml và sẽ hoạt động với tất cả các ký tự tương thích với xml
  • &
    • Hàng và Cột hiện hỗ trợ thuộc tính ẩn
    • Hàm mới để thêm một mảng các hàng (dạng mảng hoặc dạng đối tượng) vào cuối trang tính
0. 2. 6
  • Sửa lỗi
    • Chữ ký không hợp lệ. 0x80014. Cảm ơn hasanlussa đã PR
    • Các ô hiện có thể được gán tên mà sau đó có thể được sử dụng trong các công thức
  • Bluebird đã chuyển đổi. defer() sang Bluebird mới(chức năng(giải quyết, từ chối){}). Cảm ơn người dùng Nishchit về Yêu cầu kéo
0. 2. 7
    • Giờ đây, các ô có thể xác định các xác thực kiểm soát các giá trị hợp lệ mà ô có thể có
0. 2. 8
  • Giá trị văn bản đa dạng thức
    • Các ô hiện hỗ trợ định dạng trong ô - Cảm ơn Peter ADAM
  • Đã sửa lỗi đánh máy trong README - Cảm ơn MRdNk
  • Sửa lỗi phát ra trong trình đọc trang tính - Cảm ơn Alan Gunning
  • Clearer Docs - Cảm ơn miensol
0. 2. 9
  • Đã sửa lỗi "đọc thuộc tính 'richText' của lỗi không xác định. cảm ơn james075
0. 2. 10
  • Hoàn thành tái cấu trúc. Tất cả các bài kiểm tra đơn vị và tích hợp đều vượt qua
0. 2. 11
  • Cảm ơn cricri vì sự đóng góp
  • Tiếp tục tái cấu trúc trình soạn thảo trang tính
0. 2. 12
  • Cảm ơn cricri một lần nữa vì sự đóng góp
0. 2. 13
  • Bản sửa lỗi cho exceljs có thể dễ bị tấn công từ chối dịch vụ biểu thức chính quy. Kudos to yonjah và Josh Emerson cho giải pháp
  • Khắc phục sự cố Nhiều trang tính mở ở chế độ 'Nhóm' trong Excel. Lỗi của tôi - mã xem trang tính quá nhiệt tình
  • Cũng sửa lỗi cho trang trống tạo xlsx không hợp lệ
0. 2. 14
  • Bản sửa lỗi cho exceljs có thể dễ bị tấn công từ chối dịch vụ biểu thức chính quy. Kudos to yonjah và Josh Emerson cho giải pháp
  • Đã sửa lỗi Nhiều trang tính mở lại ở chế độ 'Nhóm' trong Excel. Thêm
  • Cũng sửa lỗi cho trang trống tạo xlsx không hợp lệ
0. 2. 15
  • Thêm. Cảm ơn Jackkum vì đã PR
0. 2. 16
  • tài sản mới. Khu vực in
0. 2. 17
  • Hợp nhất Sửa lỗi về ký tự phiên âm. Điều này khắc phục sự cố liên quan đến việc đọc sổ làm việc có văn bản phiên âm trong. Lưu ý văn bản ngữ âm chưa được hỗ trợ đúng cách - chỉ cần bỏ qua đúng cách. Cảm ơn zephyrrider và gen6033 vì sự đóng góp
0. 2. 18
  • Đã hợp nhất Sửa hồi quy #150. API luồng không thể ghi tệp XLSX. Lời xin lỗi cho hồi quy. Cảm ơn danieleds đã sửa lỗi
  • Hợp nhất Sửa lỗi về ký tự phiên âm. Điều này khắc phục sự cố liên quan đến việc đọc sổ làm việc có văn bản phiên âm trong. Lưu ý văn bản ngữ âm chưa được hỗ trợ đúng cách - chỉ cần bỏ qua đúng cách. Cảm ơn zephyrrider và gen6033 vì sự đóng góp
0. 2. 19
  • Bản cập nhật hợp nhất xlsx. #119. Điều này sẽ làm cho việc phân tích cú pháp linh hoạt hơn đối với các tài liệu văn phòng mở. Cảm ơn nvitaterna vì sự đóng góp
0. 2. 20
  • Các thay đổi được hợp nhất từ ​​exceljs/exceljs#127 được áp dụng cho phiên bản mới nhất #179. Sửa lỗi phân tích cú pháp các giá trị tên đã xác định. Cảm ơn agdevbridge và priitliivak vì sự đóng góp
0. 2. 21
  • Hợp nhất các tab màu cho worksheet-writer #135. Đã sửa đổi hành vi để in cảnh báo không dùng nữa khi tabColor đã chuyển sang tùy chọn. tính chất. Cảm ơn ethanlook vì sự đóng góp
0. 2. 22
  • Đã hợp nhất Ném lỗi rõ ràng khi không thành công Giá trị. getType() #136. Cảm ơn wulfsolter vì sự đóng góp
  • Đề cập đáng trân trọng đến những người đóng góp có PR đã được sửa trước khi tôi nhìn thấy chúng
    • haoliangyu
    • người đánh cá
0. 2. 23
  • Đã hợp nhất Quay trở lại JSON. stringify() nếu ô không xác định. Nhập #137 với một số sửa đổi. Nếu một giá trị ô được gán cho một đối tượng javascript không thể nhận dạng, thì giá trị được lưu trữ trong các tệp xlsx và csv sẽ được chuỗi hóa JSON. Lưu ý rằng nếu tệp được đọc lại, sẽ không có nỗ lực nào được thực hiện để phân tích cú pháp văn bản JSON được xâu chuỗi hóa. Cảm ơn wulfsolter vì sự đóng góp
0. 2. 24
  • Bản sửa lỗi bảo vệ ô đã hợp nhất #166. Điều này không có nghĩa là hỗ trợ đầy đủ cho các ô được bảo vệ chỉ đơn thuần là trình phân tích cú pháp không bị nhầm lẫn bởi xml bổ sung. Cảm ơn jayflo vì sự đóng góp
0. 2. 25
  • Đã thêm chức năng xóa ô, hàng và cột khỏi trang tính. Được mô phỏng theo phương thức ghép mảng, các hàm này cho phép xóa ô, hàng và cột (và chèn tùy chọn). Xem và để biết chi tiết.
    Lưu ý.
0. 2. 26
  • Cập nhật hợp nhất border-xform. js #184Các cạnh đường viền không có kiểu sẽ được phân tích cú pháp và hiển thị dưới dạng không có đường viền. Cảm ơn skumarnk2 vì sự đóng góp
0. 2. 27
  • Hợp nhất Chuyển dạng xem tới trình soạn thảo trang tính #187. Bây giờ cũng chuyển lượt xem cho người viết trang tính. Cảm ơn Temetz vì sự đóng góp
  • Hợp nhất Không thoát ký tự xml khi sử dụng chuỗi chia sẻ #189. Sửa lỗi trong chuỗi chia sẻ. Cảm ơn tkirda vì sự đóng góp
0. 2. 28
  • Hợp nhất Sửa lỗi nhỏ [Cập nhật bản đồ siêu liên kết. js] #190Cảm ơn lszlkss vì sự đóng góp
  • Đã hợp nhất sửa lỗi đánh máy trên chế độ xem trang tính tùy chọn showGridLines #196 "showGridlines" phải là "showGridLines". Cảm ơn gadiaz1 vì sự đóng góp
0. 2. 29
  • Đã hợp nhất sự kiện kết thúc Fire thay vì sự kiện kết thúc trên luồng ghi #199 và Lắng nghe sự kiện kết thúc trên luồng zip thay vì luồng trung gian #200. Khắc phục sự cố với các sự kiện hoàn thành luồng. Cảm ơn junajan vì sự đóng góp
0. 2. 30
  • Hợp nhất Khắc phục sự cố #178 #201. Thêm các thuộc tính sau vào sổ làm việc
    • Tiêu đề
    • vấn đề
    • từ khóa
    • thể loại
    • sự miêu tả
    • Công ty
    • người quản lý
    Cảm ơn stevenko vì sự đóng góp
0. 2. 31
  • Hợp nhất Khắc phục sự cố #163. thuộc tính "spans" của thành phần hàng là tùy chọn #203. Bây giờ phân tích cú pháp xlsx sẽ xử lý các tài liệu không có hàng kéo dài. Cảm ơn arturas-vitkauskas vì sự đóng góp
0. 2. 32
  • Hợp nhất Khắc phục sự cố 206 #208. Khắc phục sự cố đọc tệp xlsx đã được in. Đồng thời thêm thuộc tính "lastPrinted" vào Sổ làm việc. Cảm ơn arturas-vitkauskas vì sự đóng góp
0. 2. 33
  • Đã hợp nhất Cho phép tạo kiểu ô không có giá trị. #210. Bao gồm các ô loại Null có kiểu trong phân tích kết xuất. Cảm ơn oferns vì sự đóng góp
0. 2. 34
  • Đã hợp nhất Sửa lỗi "Nút xml không mong muốn trong parseOpen" trong tài liệu LibreOffice cho các thuộc tính dc. ngôn ngữ và cp. sửa đổi #212. Cảm ơn jessica-jordan vì sự đóng góp
0. 2. 35
  • Đã sửa lỗi Lấy số cột/hàng #74. hiện có các thuộc tính rowCount và columnCount (và các biến thể thực tế), Row có cellCount
0. 2. 36
  • Bản sửa lỗi trình đọc Luồng đã hợp nhất #217. Cảm ơn kturney vì sự đóng góp
0. 2. 37
  • Đã hợp nhất Sửa thứ tự đầu ra của Thuộc tính Trang tính #225. Cảm ơn kekeym vì sự đóng góp
  • Đã hợp nhất xóa trang tính trống[0] khỏi _worksheets #231. Cám ơn pookong đã đóng góp
  • Đã hợp nhất không bỏ qua chuỗi trống trong chuỗi được chia sẻ để các chỉ mục khớp với nhau #232. Một lần nữa cảm ơn pookong vì sự đóng góp
  • Đã hợp nhất sử dụng các chuỗi được chia sẻ để ghi trực tuyến #233. Một lần nữa cảm ơn pookong vì sự đóng góp
0. 2. 38
  • Hợp nhất Thêm nhận xét cho vấn đề #216 #236. Cảm ơn jsalwen vì sự đóng góp
  • Hợp nhất Bắt đầu dựa trên hỗ trợ cho các ngày dựa trên năm 1904 #237. Đã sửa lỗi xử lý ngày trong tài liệu với cờ 1904 được đặt. Cảm ơn holm vì sự đóng góp
0. 2. 39
  • Merged Stops Cảnh báo Bluebird về lời hứa không được đáp lại #245. Cảm ơn robinbullocks4rb vì sự đóng góp
  • Đã hợp nhất Đã thêm phụ thuộc bị thiếu. col-cache. #247. Cảm ơn Manish2005 vì sự đóng góp
0. 2. 42
  • Trình duyệt tương thích
    • Vâng chủ yếu. Tôi đã thêm một thư mục con của trình duyệt có chứa gói được trình duyệt hóa và một chỉ mục. js có thể được sử dụng để tạo một cái khác. Xem phần để biết chi tiết
  • Đã sửa lỗi chủ đề bị hỏng. xml. Xin lỗi vì đã để điều đó thông qua
  • Hợp nhất [SỬA LỖI] công thức xác thực dữ liệu không xác định #253. Cảm ơn jayflo vì sự đóng góp
0. 2. 43
  • Hợp nhất đã thêm một giải pháp (có thể một phần) cho vấn đề 99. tôi không thể tạo bài kiểm tra thích hợp #255. Bản sửa lỗi này Quá ít dữ liệu hoặc trang tính trống tạo tệp excel không đúng định dạng #99. Cảm ơn mminuti vì sự đóng góp
0. 2. 44
  • Giảm phụ thuộc
    • Tạm biệt lodash, tạm biệt bluebird. Gói rút gọn hiện chỉ còn hơn một nửa so với phiên bản đầu tiên
0. 2. 45
  • Trang tính đã hợp nhất với siêu liên kết và xác thực dữ liệu bị hỏng #256. Cảm ơn simon-stoic vì sự đóng góp
0. 2. 46
  • Hợp nhất Loại trừ các điều khiển ký tự khỏi đầu ra XML. Bản sửa lỗi #234 #262. Cảm ơn holm vì sự đóng góp
  • Đã hợp nhất Thêm hỗ trợ cho số nhận dạng #259. Điều này sửa lỗi XLSX bị hỏng do ký tự ascii "tab dọc" trong ô #234. Cảm ơn NOtherDev vì sự đóng góp
0. 3. 0
  • Đã giải quyết Thay đổi vi phạm khi xóa bluebird #266. Xin lỗi vì bất kỳ sự bất tiện nào
  • Đã thêm nội dung phụ thuộc vào thư viện Promise. Xem phần để biết thêm chi tiết
0. 3. 1
  • Hợp nhất Cập nhật phụ thuộc #279. Cảm ơn holm vì sự đóng góp
  • Các bản sửa lỗi nhỏ đã hợp nhất để xử lý luồng #267. Cảm ơn holm vì sự đóng góp
  • Đã thêm kiểm tra tự động trong ph Phantomjs cho mã trình duyệt
0. 4. 0
  • Đã sửa lỗi ô Boolean có giá trị = "true" được trả về là 1 #278. Bản sửa lỗi liên quan đến việc thêm hai loại Giá trị cuộc gọi mới
    Ghi chú. Phiên bản nhỏ đã được tăng lên 4 vì phiên bản này giới thiệu một vài thay đổi về giao diện
    • Các ô Boolean trước đây sẽ trả về 1 hoặc 0 giờ sẽ trả về true hoặc false
    • Các ô lỗi trước đây trả về giá trị chuỗi giờ sẽ trả về cấu trúc lỗi
  • Đã sửa lỗi Mã chính xác - setters không trả về giá trị #280
  • Đã giải quyết vấn đề v0. 3. 1 phá thiên thạch build #288
0. 4. 1
  • Hợp nhất Thêm hỗ trợ cho cp. nội dungStatus #285. Cảm ơn holm vì sự đóng góp
  • Đã hợp nhất Sửa các ký tự hợp lệ trong XML (cho phép \n và \r khi lưu) #286. Cảm ơn Rycochet vì sự đóng góp
  • Đã sửa lỗi siêu liên kết với các đối số truy vấn làm hỏng sổ làm việc #275. Mục tiêu siêu liên kết không được thoát trước khi sắp xếp theo thứ tự trong xml
0. 4. 2
  • Giải quyết các vấn đề sau

    • Văn bản và đường viền màu trắng được thay đổi thành màu đen #290
    • Mất định dạng/bảng tổng hợp từ tệp đã tải #261
    • Màu đặc trở thành màu đen #272
    Những sự cố này có khả năng do một lỗi khiến các màu không có chủ đề, sắc độ hoặc chỉ mục bị hiển thị và phân tích cú pháp không chính xác

    Về chủ đề. các tệp chủ đề được lưu trữ bên trong bộ chứa xlsx chứa thông tin quan trọng về màu sắc, kiểu, v.v. và nếu thông tin chủ đề từ tệp xlsx đã tải bị mất, kết quả có thể không dự đoán được và không mong muốn. Để giải quyết vấn đề này, khi Sổ làm việc ExcelJS phân tích cú pháp tệp XLSX, nó sẽ giữ nguyên mọi tệp chủ đề mà nó tìm thấy và bao gồm chúng khi ghi vào XLSX mới. Nếu hành vi này không được mong muốn, lớp Workbook sẽ hiển thị hàm clearThemes() sẽ loại bỏ nội dung chủ đề. Lưu ý rằng hành vi này chỉ được triển khai trong lớp Sổ làm việc dựa trên tài liệu, không phải Trình đọc và Trình ghi được phát trực tuyến

0. 4. 3
  • Tham chiếu lỗi hỗ trợ đã hợp nhất trong phạm vi ô #294. Cảm ơn holm vì sự đóng góp
0. 4. 4
  • Sự cố hợp nhất với các ô được sao chép #297. Sự hợp nhất này thêm hỗ trợ cho các công thức được chia sẻ. Cảm ơn muscapades vì ​​sự đóng góp
0. 4. 6
  • Hợp nhất Đúng chính tả #304. Cảm ơn toalien đã đóng góp
  • Hợp nhất Đã thêm hỗ trợ cho các bộ lọc tự động #306. Điều này thêm vào Worksheet. Cảm ơn C4rmond4i vì sự đóng góp
  • Đã khôi phục NodeJS 4. 0. 0 tương thích bằng cách loại bỏ mã phá hủy. lời xin lỗi của tôi cho bất kỳ sự bất tiện
0. 4. 9
  • Chuyển sang mã được dịch mã để phân phối. Điều này sẽ đảm bảo khả năng tương thích với 4. 0. 0 trở lên từ đây trở đi. Và nó cũng sẽ cho phép sử dụng mã JS biểu cảm hơn nhiều trong thư mục lib
  • Giờ đây, hình ảnh có thể được thêm vào trang tính dưới dạng nền lát gạch hoặc trải dài trên một phạm vi. Ghi chú. các tính năng khác như xoay, v.v. chưa được hỗ trợ và sẽ yêu cầu công việc tiếp theo
0. 4. 10
  • Đã hợp nhất Thêm Res Office bị thiếu #319. Cảm ơn mauricio villalobos vì sự đóng góp
  • Đã hợp nhất Thêm printTitlesRow Hỗ trợ #320 Xin cảm ơn pseller89 vì sự đóng góp
0. 4. 11
  • Hợp nhất Tránh lỗi trên neo không có phương tiện #327. Cảm ơn đến holm vì sự đóng góp
  • Hợp nhất các loại bản sửa lỗi để đọc trực tuyến #332. Cảm ơn tới holm vì sự đóng góp
0. 4. 12
  • Đã hợp nhất Không đặt địa chỉ nếu siêu liên kết r. id không xác định #334. Cảm ơn đến holm vì sự đóng góp
0. 4. 13
  • Vấn đề hợp nhất 296 #343. Điều này khắc phục Sự cố khi viết dòng mới #296. Cảm ơn holly-weisser vì sự đóng góp
0. 4. 14
  • Đã thêm tô sáng cú pháp hợp nhất✨#350. Cảm ơn rmariuzzo vì sự đóng góp
0. 5. 0
  • Đã hợp nhất Khắc phục sự cố từ phải sang trái #356. Sửa lỗi Thêm tùy chọn vào tệp RTL #72 và Thêm tùy chọn để đặt trang tính RTL #126. Xin chân thành cảm ơn alitaheri vì sự đóng góp này
0. 5. 1
  • Bản sửa lỗi hợp nhất #345 TypeError. Không thể đọc thuộc tính 'date1904' của #364 không xác định. Điều này sửa lỗi TypeError. Không thể đọc thuộc tính 'date1904' của #345 không xác định. Cảm ơn Diluka vì sự đóng góp này
0. 6. 0
  • Đã hợp nhất Thêm tính năng RowBreaks. #389. Cảm ơn brucejo75 vì sự đóng góp này
0. 6. 1
  • Các trường mô hình null của Bộ bảo vệ hợp nhất - sửa chữa và kiểm tra #403. Cảm ơn thecjharries vì ​​sự đóng góp này. Cũng xin cảm ơn Ryc O'Chet đã giúp đánh giá
0. 6. 2
  • Đã hợp nhất Thêm một số nhận xét trong readme theo nhập csv #396. Cảm ơn Michael Lelyakin vì sự đóng góp này. Cũng cảm ơn planmar đã giúp xem xét. Điều này cũng đóng csv để truyền phát không hoạt động #395
0. 7. 0
  • Merged Impl #407. Thanks to Ocke Janssen and Kay Ramme for this contribution. This change allows control on how images are anchored to cells.
0. 7. 1
  • Đã hợp nhất Không bị ngắt khi cố gắng nhập tệp zip không phải là tệp Excel (ví dụ:. . số) #423. Cảm ơn Andreas Lind vì sự đóng góp này. Thay đổi này làm cho exceljs linh hoạt hơn khi mở các tệp không phải excel
  • Bản sửa lỗi hợp nhất #419. Cập nhật readme. #434. Cảm ơn Vishnu Kyatannawar vì sự đóng góp này
  • Merged Don't break when docProps/core.xml contains a tag #436. Thanks to Andreas Lind for this contribution. This change handles core.xml files with empty version tags.
0. 8. 0
  • Đã hợp nhất Thêm Hỗ trợ hình ảnh Base64 cho. phương thức addImage() #442. Cảm ơn James W Mann vì sự đóng góp này
  • Đã hợp nhất thời điểm cập nhật thành 2. 19. 3 #453. Cảm ơn Markan Patel vì sự đóng góp này
0. 8. 1
  • Hợp nhất Thông tin bổ sung về thuộc tính họ phông chữ #457. Cảm ơn kayakyakr vì sự đóng góp này
  • Bản sửa lỗi hợp nhất #458 #459. Bản sửa lỗi này Thêm kiểu vào cột khiến nó bị ẩn #458. Cảm ơn Alexander James Phillips vì sự đóng góp này
0. 8. 2
  • Đã hợp nhất Không bị ngắt khi tải tệp Excel có chứa biểu đồ #466. Cảm ơn Andreas Lind vì sự đóng góp này
  • Hotfix/sheet order#257 #471 đã hợp nhất. Điều này sửa thứ tự trang tính #257. Cảm ơn Robbi vì sự đóng góp này
0. 8. 3
  • Đồng hóa sửa lỗi #79 phụ thuộc lỗi thời trong giải nén2. Cảm ơn Jules Sam. Randolph vì đã bắt đầu sửa lỗi này và xin chân thành cảm ơn Alexander Kachkaev vì đã tìm ra giải pháp cuối cùng
0. 8. 4
  • Đã hợp nhất ngày Round Excel thành mili giây gần nhất khi chuyển đổi sang ngày javascript #479. Cảm ơn Benoit Jean vì sự đóng góp này
0. 8. 5
  • Sửa lỗi hợp nhất. wb. bảng tính/wb. eachSheet khiến getWorksheet(0) trả về sheet #485. Cảm ơn mah110020 vì sự đóng góp này
0. 9. 0
  • Tính năng hợp nhất/vấn đề 424 #489. Bản sửa lỗi này Không có cách nào để kiểm soát tóm tắtDưới đây hoặc tóm tắtNgay #424. Rất cám ơn Sarah vì sự đóng góp này
0. 9. 1
  • Hợp nhất thêm định nghĩa loại #490. Điều này thêm các định nghĩa kiểu vào ExcelJS. Rất cảm ơn taoqf vì sự đóng góp này
1. 0. 0
  • Đã hợp nhất Thêm Nút 8 và Nút 9 vào thử nghiệm tích hợp liên tục #494. Rất cám ơn Markan Patel vì sự đóng góp này
  • Đã hợp nhất bản sửa lỗi README nhỏ #508. Xin chân thành cảm ơn Guilherme Bernal vì sự đóng góp này
  • Đã hợp nhất Thêm hỗ trợ cho inlineStr, bao gồm cả văn bản có định dạng #501. Rất cám ơn linguamatics-pdenes và Rob Scott vì những nỗ lực của họ đối với sự đóng góp này. Vì thay đổi này về mặt kỹ thuật là một thay đổi đột phá (XML được hiển thị cho các chuỗi nội tuyến sẽ thay đổi) nên tôi sẽ phát hành bản phát hành chính này
1. 0. 1
  • Đã sửa lỗi spliceColumns khi số cột quan trọng #520
1. 0. 2
  • Hợp nhất Nới lỏng các yêu cầu phụ thuộc của exceljs cho thời điểm #524. Rất cảm ơn nicoladefranceschi vì sự đóng góp này. Thay đổi này giải quyết khả năng sử dụng gói "khoảnh khắc" bên ngoài #517
1. 1. 0
  • Đã giải quyết Có cách nào để chèn giá trị vào cột không. #514. Đã thêm thuộc tính getter/setter mới vào Cột để nhận và đặt giá trị cột (xem để biết chi tiết)
1. 1. 1
  • Hợp nhất Bao gồm chỉ mục. d. ts trong các gói đã xuất bản #532. Để sửa các định nghĩa TypeScript bị thiếu trong gói npm #525. Rất cảm ơn Kagami Sascha Rosylight vì sự đóng góp này
1. 1. 2
  • Merged Don't break when docProps/core.xml contains #536. Many thanks to Andreas Lind (and reviewers) for this contribution.
1. 1. 3
  • Merged Try to handle the case where a element is missing an r attribute #537. Many thanks to Andreas Lind for this contribution.
1. 2. 0
  • Hợp nhất Thêm cờ dateUTC vào CSV Viết #544. Xin chân thành cảm ơn Zackery Griesinger vì sự đóng góp này
1. 2. 1
  • Tên trang tính đã hợp nhất có thể ghi được #547. Rất cám ơn xzper vì sự đóng góp này
1. 3. 0
  • Đã hợp nhất Thêm hỗ trợ bộ đệm ghi CSV #549. Rất cảm ơn Jarom Loveridge vì sự đóng góp này
1. 4. 2
  • thảo luận hợp nhất. Giới hạn hàng/ô có thể tùy chỉnh #541. Rất cám ơn Andreas Lind vì sự đóng góp này
1. 4. 3
  • Hợp nhất Lấy đúng văn bản ra khỏi ô công thức siêu liên kết #552. Xin chân thành cảm ơn Andreas Lind và Christian Holm vì sự đóng góp này
1. 4. 5
  • Đã hợp nhất Thêm trường hợp thử nghiệm với tệp lớn #556. Xin chân thành cảm ơn Andreas Lind và Christian Holm vì sự đóng góp này
1. 4. 6
  • Cập nhật hợp nhất README. md để phản ánh đúng chức năng của hàng. addPageBreak() #557. Rất cám ơn RajDesai vì sự đóng góp này
  • Hợp nhất sửa chữa chỉ số. d. #558. Rất cảm ơn Diluka vì sự đóng góp này
1. 4. 7
  • Danh sách hợp nhất /xl/sharedStrings. xml trong [Content_Types]. xml chỉ khi một trong… #562. Rất cám ơn Priidik Vaikla vì sự đóng góp này
1. 4. 8
  • Danh sách hợp nhất /xl/sharedStrings. xml trong [Content_Types]. xml chỉ khi một trong… #562. Rất cám ơn Priidik Vaikla vì sự đóng góp này
  • Đã khắc phục sự cố ở trên khi sử dụng chuỗi chia sẻ nhưng loại nội dung không được thêm vào
1. 4. 9
  • Danh sách hợp nhất /xl/sharedStrings. xml trong [Content_Types]. xml chỉ khi một trong… #562. Rất cám ơn Priidik Vaikla vì sự đóng góp này
  • Đã khắc phục sự cố ở trên khi sử dụng chuỗi chia sẻ nhưng loại nội dung không được thêm vào
  • Đã sửa lỗi 1. 4. 8 lỗi ghi file Excel với useSharedStrings. đúng #581
1. 4. 10
  • Hợp nhất lõi-xform. Chịu 1 cp thiếu. không gian tên cho phần tử coreProperties #564. Rất cám ơn Andreas Lind vì sự đóng góp này
1. 4. 12
  • Hợp nhất Tránh lỗi trên địa chỉ không đúng định dạng #567. Rất cám ơn Andreas Lind vì sự đóng góp này
  • Merged Added a missing Promise in index.d.ts #571. Many thanks to Gabriel Fournier for this contribution. This release should fix Is workbook.commit() still a promise or not #548
1. 4. 13
  • Vấn đề hợp nhất #488 #574. Rất cám ơn dljenkins vì sự đóng góp này. Bản phát hành này sẽ khắc phục Ngoại lệ giá trị thời gian không hợp lệ #488
1. 5. 0
  • Trang được hợp nhất thêm trạng thái cho ẩn hoặc hiển thị #577. Xin chân thành cảm ơn Freddie Hsinfu Huang vì sự đóng góp này. Bản phát hành này sẽ sửa lỗi ẩn trang tính và sắp xếp lại trang tính #226
1. 5. 1
  • Hợp nhất Cập nhật chỉ mục. d. #582. Rất cảm ơn hankolsen vì sự đóng góp này
  • Merged Decode the x<4 hex chars> escape notation in shared strings #584. Many thanks to Andreas Lind for this contribution.
1. 6. 0
  • Thêm. html vào Ô để tạo điều kiện hiển thị an toàn html. Xem để biết chi tiết
1. 6. 1
  • Đã hợp nhất Khắc phục sự cố #488 trong đó dt là định dạng ngày không hợp lệ. #587 để sửa Giá trị thời gian không hợp lệ Ngoại lệ #488. Rất cám ơn Iliya Zubakin vì sự đóng góp này
1. 6. 2
  • Đã hợp nhất Khắc phục sự cố #488 trong đó dt là định dạng ngày không hợp lệ. #587 để sửa Giá trị thời gian không hợp lệ Ngoại lệ #488. Rất cám ơn Iliya Zubakin vì sự đóng góp này
  • Phần tử bản vẽ được hợp nhất phải ở bên dưới hàngBreaks theo thông số kỹ thuật hoặc trang tính bị hỏng #590 Rất cám ơn Liam Neville vì đóng góp này
1. 6. 3
  • Loại tập hợp đã hợp nhất tùy chọn #595 Rất cảm ơn taoqf vì đóng góp này
  • Đã hợp nhất Khắc phục sự cố một số luồng xlsx đọc xlsx không theo thứ tự được đảm bảo #578 Rất cám ơn KMethod vì đóng góp này
  • Hợp nhất Khắc phục sự cố định dạng trong README #599 Rất cám ơn Vishnu Kyatannawar vì đóng góp này
1. 7. 0
  • Hợp nhất Khả năng đặt chú giải công cụ cho siêu liên kết #602 Rất cám ơn Kuznetsov Aleksey vì đóng góp này
1. 8. 0
  • Merged Fix misinterpreted ranges from #636 Many thanks to Andreas Lind for this contribution.
  • Hợp nhất Thêm huy hiệu chất lượng mã LGTM #640 Xin chân thành cảm ơn Xavier RENE-CORAIL vì đóng góp này
  • Đã hợp nhất Thêm định nghĩa kiểu cho Cột. các giá trị #646 Rất cám ơn Emil Laine vì sự đóng góp này. Điều này sửa cột. các giá trị bị thiếu định nghĩa TypeScript #645
  • Cập nhật hợp nhất README. md với tùy chọn load() #663 Rất cám ơn Joanna Walker vì đóng góp này
  • Đã hợp nhất các gói cố định theo kiểm toán npm #677 Rất cám ơn Manuel Minuti vì đóng góp này
  • Hợp nhất Cập nhật chỉ mục. d. ts #699 Rất cảm ơn Ray Yen vì sự đóng góp này
  • Hợp nhất Đã thay nút-unzip-2 thành gói giải nén mạnh mẽ hơn #708 Rất cám ơn johnmalkovich100 vì đóng góp này
  • Đã hợp nhất Trạng thái ẩn trang tính Đọc #728 Rất cám ơn Dishu(Lester) Lyu vì đóng góp này
  • Đã hợp nhất thêm Bảng tính. sửa lỗi định nghĩa bản thảo trạng thái #714 #736 Rất cám ơn Ilyes Kechidi vì đóng góp này. Bản sửa lỗi này Trạng thái trang tính không tồn tại trong chỉ mục. d. #714
1. 9. 0
  • Hợp nhất các cải tiến cho hình ảnh (đúng vị trí đọc/viết) #702. Điều này sửa lỗi Vị trí hình ảnh không tôn trọng Chiều rộng cột #650 và Vị trí hình ảnh - kéo dài hình ảnh #467. Xin chân thành cảm ơn Siemienik Paweł vì sự đóng góp này
1. 9. 1
  • Đã hợp nhất Thêm hỗ trợ TypeScript cho các công thức không có kết quả #619. Rất cảm ơn Loursin vì sự đóng góp này
  • Đã hợp nhất Sửa các kiểu hàng hiện có khi sử dụng spliceRows #737. Rất cảm ơn cxam vì sự đóng góp này
  • Đã hợp nhất Chất lượng mã nhất quán #774. Xin chân thành cảm ơn Andreas Lubbe vì sự đóng góp này
1. 10. 0
  • Đã sửa lỗi nối các hàng và cột trên các tên đã xác định
  • Đã hợp nhất Thêm hỗ trợ để thêm hình ảnh được neo vào một ô #746. Rất cám ơn Karl von Randow vì sự đóng góp này
  • Đã hợp nhất Thêm thuộc tính căn chỉnh dọc #758. Rất cám ơn MikeZyatkov vì sự đóng góp này
  • Đã hợp nhất Thay thế lib tạm thời thành tmp #775. Xin chân thành cảm ơn Ivan Sotnikov vì sự đóng góp này
  • Đã hợp nhất Thay thế lib tạm thời thành tmp #775. Xin chân thành cảm ơn Andreas Lubbe vì sự đóng góp này
  • Bảng tính cập nhật được hợp nhất. kiểu trả về kích thước #793. Xin chân thành cảm ơn Siemienik Paweł vì sự đóng góp này
  • Đã hợp nhất Thêm một loại sửa lỗi #795. Xin chân thành cảm ơn Siemienik Paweł vì sự đóng góp này
1. 11. 0
  • Hợp nhất Thêm khả năng thoát khỏi phân tích cú pháp nếu số lượng cột vượt quá giới hạn nhất định #776. Rất cám ơn Andreas Lind vì sự đóng góp này
  • Đã hợp nhất Thêm hỗ trợ cho các cột lặp lại trên mỗi trang khi in. #799. Rất cám ơn Jasmin Auger vì sự đóng góp này
  • Đã hợp nhất Không sử dụng một polyfill hứa hẹn trên các thiết lập hiện đại #815. Xin chân thành cảm ơn Andreas Lubbe vì sự đóng góp này
  • Đã hợp nhất sao chép LICENSE vào thư mục dist #807. Rất cảm ơn Yuping Zuo vì sự đóng góp này
  • Hợp nhất Tránh từ chối chưa được xử lý đối với lỗi phân tích cú pháp XML #813. Rất cám ơn Andreas Lind vì sự đóng góp này
1. 12. 0
  • Đã hợp nhất (việc vặt) tăng giải nén thành 0. 9. 12 để giải quyết tư vấn npm 886 #819. Rất cám ơn Kreig Zimmerman vì sự đóng góp này
  • Tài liệu hợp nhất(README). cải thiện tài liệu #817. Rất cảm ơn Yuping Zuo vì sự đóng góp này
  • Hợp nhất thêm bình luận hỗ trợ #529 #823. Rất cảm ơn ilemei vì sự đóng góp này

    Điều này khắc phục các sự cố sau

    • Có thể thêm nhận xét trên một ô không?
    • Thêm nhận xét vào ô #451
    • Excel thêm nhận xét vào ô #503
    • Cách thêm Cell comment #529
    • Vui lòng thêm ví dụ về cách tôi có thể chèn nhận xét cho ô #707
1. 12. 1
  • Khắc phục sự cố hợp nhất với tệp làm hỏng tên được xác định vùng in #822. Rất cám ơn Julia Donaldson vì sự đóng góp này. Điều này khắc phục sự cố Tên được xác định Phá vỡ/Tệp Excel bị hỏng vào Chế độ sửa chữa #664
  • Đã hợp nhất Chỉ giữ tối đa 31 ký tự cho sheetname #831. Rất cám ơn Xuebin He vì sự đóng góp này. Điều này khắc phục sự cố Giới hạn độ dài tên trang tính thành 31 ký tự #398
1. 12. 2
  • Đã hợp nhất thêm tài liệu cn #834 và cập nhật tài liệu cn #852. Rất cảm ơn flydragon vì sự đóng góp này
  • Hợp nhất sửa lỗi chính tả nhỏ trong readme #853. Rất cám ơn John Varga vì sự đóng góp này
  • Hợp nhất Sửa defaultRowHeight không hoạt động #855. Rất cám ơn autukill vì sự đóng góp này. Điều này sẽ khắc phục chiều cao hàng không áp dụng cho hàng #422, Trang tính. tính chất. defaultRowHeight không thể hoạt động. Làm cách nào để đặt chiều cao hàng, giúp đỡ. #634 và Chiều cao hàng mặc định không hoạt động?
  • Đã hợp nhất Luôn giữ phông chữ đầu tiên #854. Rất cám ơn Dmitriy Gusev vì sự đóng góp này. Điều này sẽ khắc phục sự khác biệt về tỷ lệ tài liệu (chỉ chiều rộng) sau khi đọc và ghi #816, Không thể phân tích cú pháp phông chữ mặc định từ tài liệu nguồn. #833 và Phông chữ cơ sở sai. Calibri được mã hóa cứng thay vì phông chữ từ tài liệu #849
1. 13. 0
  • zip hợp nhất. cho phép điều chỉnh nén cho hiệu suất hoặc kích thước #862. Rất cảm ơn myfreeer vì sự đóng góp này
  • Hợp nhất Feat định cấu hình đầu trang và chân trang #863. Rất cám ơn autukill vì sự đóng góp này
  • Đã khắc phục sự cố với defaultRowHeight trong đó giá trị mặc định dẫn đến thuộc tính 'customHeight' được đặt
1. 14. 0
  • Hợp nhất Sửa lỗi định dạng văn bản đầu trang và chân trang trong README. md #874. Rất cám ơn autukill vì sự đóng góp này
  • Bảng đã thêm. Xem để biết chi tiết
  • sửa chữa hợp nhất. #877 và #880. Rất cám ơn Alexander Heinrich vì sự đóng góp này. Điều này sửa lỗi. Siêu liên kết không có sự cố văn bản viết #877 và lỗi. nhận xét không đúng định dạng gặp sự cố khi ghi #880
1. 15. 0
  • Đã hợp nhất Thêm tùy chọn mức nén vào WorkbookWriterOptions để phát trực tuyến #889. Rất cám ơn Alfredo Benassi vì sự đóng góp này
  • Hợp nhất Tính năng/Bảo vệ Tế bào #903 và Tính năng/Bảo vệ Trang tính #907. Rất cảm ơn karabaesh vì những đóng góp này
2. 0. 1

Thay đổi phiên bản chính

Giới thiệu async/await cho ExcelJS

Các tính năng không đồng bộ và chờ đợi mới của JavaScript có thể giúp ích rất nhiều để làm cho mã dễ đọc và dễ bảo trì hơn. Để tránh nhầm lẫn, đặc biệt với các lời hứa được trả về từ các hàm không đồng bộ, chúng tôi đã phải xóa tùy chọn cấu hình lớp Promise và từ v2 trở đi, ExcelJS sẽ sử dụng Promise gốc. Vì đây có khả năng là một thay đổi đột phá nên chúng tôi sẽ nâng cấp phiên bản chính cho bản phát hành này

Thay đổi

  • Hợp nhất Giới thiệu async/await #829. Xin chân thành cảm ơn Andreas Lubbe vì sự đóng góp này
  • Hợp nhất Cập nhật chỉ mục. d. #930. Rất cám ơn cosmonovallc vì những đóng góp này
  • TS hợp nhất. Thêm các loại cho chức năng addTable #940. Rất cám ơn egmen vì những đóng góp này
  • Hợp nhất đã thêm các loại trả về rõ ràng vào định nghĩa loại của Bảng tính. bảo vệ () và Bảng tính. không bảo vệ() #926. Rất cảm ơn Tamas Czinege vì những đóng góp này
  • Bỏ phụ thuộc vào thư viện Promise
3. 0. 0

Thay đổi phiên bản chính khác

Javascript đã thay đổi rất nhiều trong những năm qua và các mô-đun và công nghệ xung quanh nó cũng vậy. Cuối cùng, phiên bản chính này của ExcelJS thay đổi cấu trúc của các tạo phẩm xuất bản

Xuất chính hiện là Nguồn Javascript gốc

Trước bản phát hành này, mã ES5 được dịch mã đã được xuất dưới dạng gói chính. Từ bây giờ, gói chính đến trực tiếp từ thư mục lib/. Điều này có nghĩa là một số phụ thuộc đã bị loại bỏ, bao gồm cả các polyfill

ES5 và Browserify vẫn được bao gồm

Để hỗ trợ những người vẫn yêu cầu mã sẵn sàng ES5 (e. g. dưới dạng phần phụ thuộc trong ứng dụng web), mã nguồn sẽ vẫn được dịch mã và có sẵn trong dist/es5

Làm cách nào để tải xuống tệp excel trong js?

Cách nhập và xuất Excel XLSX bằng JavaScript .
Thiết lập Dự án Bảng tính JavaScript
Thêm mã nhập Excel
Thêm dữ liệu vào tệp Excel đã nhập
Thêm một biểu đồ thu nhỏ
Thêm mã xuất Excel

Làm cách nào để xuất tệp excel trong nodejs?

Cách tạo Bảng tính Excel từ Nút của bạn. .
Bắt đầu với SpreadJS và Node. js
Sử dụng gói npm SpreadJS
Tải tệp Excel vào nút của bạn. ứng dụng js
Thu thập đầu vào của người dùng
Điền vào tệp Excel của bạn
Xuất nút. js ra Excel

Exceljs có hỗ trợ XLS không?

exceljs không hỗ trợ xls , đây là định dạng độc quyền, cũ hơn. xlsx là một tiêu chuẩn mở và chỉ nén xml, rất dễ hỗ trợ.

Làm cách nào để sử dụng exceljs trong nodejs?

exceljs để tạo tệp Excel .
tạo một sổ làm việc mới
thêm một WorkSheet mới bằng Workbook. addWorksheet()
định cấu hình các cột WorkSheet với tiêu đề, khóa, chiều rộng
sử dụng WorkSheet. addRows() với mảng đối tượng bạn muốn thêm làm tham số
sử dụng sổ làm việc. xlsx. write() để ghi Luồng dưới dạng phản hồi