スプレッドシートのデータとスタイルを読み取り、操作し、XLSX および JSON に書き込みます。
Excel スプレッドシート ファイルからプロジェクトとしてリバース エンジニアリングされます。
npm install exceljs
貢献は大歓迎です!どの機能が望まれているか、どのバグが最も問題を引き起こしているかを知るのに役立ちます。
一つだけお願いがあります。バグ修正のプル リクエストを送信する場合は、問題を検出する単体テストまたは統合テスト (仕様フォルダー内) を追加してください。テストが失敗しただけの PR であっても問題はありません。テストで何が行われているかを分析し、そこからコードを修正できます。
注: PR でパッケージのバージョンを変更しないようにしてください。バージョンはリリース時に更新され、変更が行われるとマージ衝突が発生する可能性が高くなります。
明確にしておきますが、このライブラリに追加されたすべての貢献は、ライブラリの MIT ライセンスに含まれます。
const ExcelJS = require ( 'exceljs' ) ;
ES5 のトランスパイルされたコードを使用するには (たとえば、node.js バージョン 10 より古い場合)、dist/es5 パスを使用します。
const ExcelJS = require ( 'exceljs/dist/es5' ) ;
注: ES5 ビルドには、exceljs によって明示的に追加されなくなった多数のポリフィルに対する暗黙的な依存関係があります。 ExcelJS をインポートする前に、「core-js」と「regenerator-runtime」を依存関係に追加し、コードに次の要件を含める必要があります。
// 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' ) ;
IE 11 の場合、Unicode 正規表現パターンをサポートするためにポリフィルも必要になります。例えば、
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 . prototype ;
}
ExcelJS は、dist/ フォルダー内で 2 つのブラウザー対応バンドルを公開します。
core-js ポリフィルへの暗黙的な依存関係を持つもの...
< script src =" https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.26.0/polyfill.js " > </ script >
< script src =" exceljs.js " > </ script >
そして、ないものは...
< script src =" --your-project's-pollyfills-here-- " > </ script >
< script src =" exceljs.bare.js " > </ script >
const workbook = new ExcelJS . Workbook ( ) ;
workbook . creator = 'Me' ;
workbook . lastModifiedBy = 'Her' ;
workbook . created = new Date ( 1985 , 8 , 30 ) ;
workbook . modified = new Date ( ) ;
workbook . lastPrinted = new Date ( 2016 , 9 , 27 ) ;
// Set workbook dates to 1904 date system
workbook . properties . date1904 = true ;
// Force workbook calculation on load
workbook . calcProperties . fullCalcOnLoad = true ;
ワークブック ビューは、ワークブックを表示するときに Excel が開く個別のウィンドウの数を制御します。
workbook . views = [
{
x : 0 , y : 0 , width : 10000 , height : 20000 ,
firstSheet : 0 , activeTab : 1 , visibility : 'visible'
}
]
const sheet = workbook . addWorksheet ( 'My Sheet' ) ;
addWorksheet 関数の 2 番目のパラメーターを使用して、ワークシートのオプションを指定します。
例えば:
// create a sheet with red tab colour
const sheet = workbook . addWorksheet ( 'My Sheet' , { properties : { tabColor : { argb : 'FFC0000' } } } ) ;
// create a sheet where the grid lines are hidden
const sheet = workbook . addWorksheet ( 'My Sheet' , { views : [ { showGridLines : false } ] } ) ;
// create a sheet with the first row and column frozen
const sheet = workbook . addWorksheet ( 'My Sheet' , { views : [ { state : 'frozen' , xSplit : 1 , ySplit : 1 } ] } ) ;
// Create worksheets with headers and footers
const sheet = workbook . addWorksheet ( 'My Sheet' , {
headerFooter : { firstHeader : "Hello Exceljs" , firstFooter : "Hello World" }
} ) ;
// create new sheet with pageSetup settings for A4 - landscape
const worksheet = workbook . addWorksheet ( 'My Sheet' , {
pageSetup : { paperSize : 9 , orientation : 'landscape' }
} ) ;
ワークシートid
を使用して、ワークブックからシートを削除します。
例えば:
// Create a worksheet
const sheet = workbook . addWorksheet ( 'My Sheet' ) ;
// Remove the worksheet using worksheet id
workbook . removeWorksheet ( sheet . id )
// Iterate over all sheets
// Note: workbook.worksheets.forEach will still work but this is better
workbook . eachSheet ( function ( worksheet , sheetId ) {
// ...
} ) ;
// fetch sheet by name
const worksheet = workbook . getWorksheet ( 'My Sheet' ) ;
// fetch sheet by id
// INFO: Be careful when using it!
// It tries to access to `worksheet.id` field. Sometimes (really very often) workbook has worksheets with id not starting from 1.
// For instance It happens when any worksheet has been deleted.
// It's much more safety when you assume that ids are random. And stop to use this function.
// If you need to access all worksheets in a loop please look to the next example.
const worksheet = workbook . getWorksheet ( 1 ) ;
// access by `worksheets` array:
workbook . worksheets [ 0 ] ; //the first one;
workbook.worksheets[0].id
任意の値が含まれる可能性があるため、 workbook.getWorksheet(1) != Workbook.worksheets[0]
workbook.getWorksheet(1) != Workbook.worksheets[1]
であることを理解しておくことが重要です。
// make worksheet visible
worksheet . state = 'visible' ;
// make worksheet hidden
worksheet . state = 'hidden' ;
// make worksheet hidden from 'hide/unhide' dialog
worksheet . state = 'veryHidden' ;
ワークシートは、ワークシートの一部の機能を制御できるプロパティ バケットをサポートしています。
// create new sheet with properties
const worksheet = workbook . addWorksheet ( 'sheet' , { properties : { tabColor : { argb : 'FF00FF00' } } } ) ;
// create a new sheet writer with properties
const worksheetWriter = workbookWriter . addWorksheet ( 'sheet' , { properties : { outlineLevelCol : 1 } } ) ;
// adjust properties afterwards (not supported by worksheet-writer)
worksheet . properties . outlineLevelCol = 2 ;
worksheet . properties . defaultRowHeight = 15 ;
サポートされているプロパティ
名前 | デフォルト | 説明 |
---|---|---|
タブの色 | 未定義 | タブの色 |
アウトラインレベルCol | 0 | ワークシート列のアウトライン レベル |
アウトラインレベル行 | 0 | ワークシート行のアウトライン レベル |
デフォルト行高さ | 15 | デフォルトの行の高さ |
デフォルトのColWidth | (オプション) | デフォルトの列幅 |
ディディセント | 55 | 未定 |
いくつかの新しい指標がワークシートに追加されました...
名前 | 説明 |
---|---|
行数 | ドキュメントの合計行サイズ。値を含む最後の行の行番号と同じです。 |
実際の行数 | 値を含む行の数のカウント。ドキュメントの途中の行が空の場合、その行はカウントに含まれません。 |
列数 | ドキュメントの合計列サイズ。すべての行の最大セル数に等しい |
実際の列数 | 値を持つ列の数のカウント。 |
シートの印刷に影響を与える可能性のあるすべてのプロパティは、シートの pageSetup オブジェクトに保持されます。
// create new sheet with pageSetup settings for A4 - landscape
const worksheet = workbook . addWorksheet ( 'sheet' , {
pageSetup : { paperSize : 9 , orientation : 'landscape' }
} ) ;
// create a new sheet writer with pageSetup settings for fit-to-page
const worksheetWriter = workbookWriter . addWorksheet ( 'sheet' , {
pageSetup : { fitToPage : true , fitToHeight : 5 , fitToWidth : 7 }
} ) ;
// adjust pageSetup settings afterwards
worksheet . pageSetup . margins = {
left : 0.7 , right : 0.7 ,
top : 0.75 , bottom : 0.75 ,
header : 0.3 , footer : 0.3
} ;
// Set Print Area for a sheet
worksheet . pageSetup . printArea = 'A1:G20' ;
// Set multiple Print Areas by separating print areas with '&&'
worksheet . pageSetup . printArea = 'A1:G10&&A11:G20' ;
// Repeat specific rows on every printed page
worksheet . pageSetup . printTitlesRow = '1:3' ;
// Repeat specific columns on every printed page
worksheet . pageSetup . printTitlesColumn = 'A:C' ;
サポートされているページセットアップ設定
名前 | デフォルト | 説明 |
---|---|---|
余白 | ページの境界線にある空白。単位はインチです。 | |
向き | 「肖像画」 | ページの向き - つまり、縦長 (縦長) または幅広 (横長) |
水平Dpi | 4294967295 | 1 インチあたりの水平ドット数。デフォルト値は -1 です |
垂直Dpi | 4294967295 | 1 インチあたりの垂直ドット数。デフォルト値は -1 です |
ページに合わせる | fitToWidth と fitToHeight を使用するか、スケール設定を使用するか。デフォルトは、pageSetup オブジェクト内のこれらの設定の存在に基づきます。両方が存在する場合、スケールが優先されます (つまり、デフォルトは false になります)。 | |
ページ注文 | 「ダウンしてからオーバー」 | ページを印刷する順序 - ['downThenOver'、'overThenDown'] のいずれか |
黒と白 | 間違い | カラーなしで印刷する |
下書き | 間違い | 低品質 (およびインク) で印刷します |
セルコメント | 'なし' | コメントを配置する場所 - ['atEnd'、'asDisplayed'、'None'] のいずれか |
エラー | 「表示された」 | エラーを表示する場所 - ['ダッシュ'、'空白'、'NA'、'表示'】のいずれか |
規模 | 100 | 印刷サイズを拡大または縮小するパーセンテージ値。 fitToPage が false の場合にアクティブになります |
幅に合わせる | 1 | シートを何ページ幅に印刷するか。 fitToPage が true の場合にアクティブになります |
高さに合わせる | 1 | シートを何ページの高さに印刷するか。 fitToPage が true の場合にアクティブになります |
用紙サイズ | 使用する用紙サイズ (下記を参照) | |
showRowColHeaders | 間違い | 行番号と列文字を表示するかどうか |
showGridLines | 間違い | グリッド線を表示するかどうか |
最初のページ番号 | 最初のページにどの番号を使用するか | |
水平中央 | 間違い | シートデータを横方向に中央揃えにするかどうか |
垂直中央 | 間違い | シートデータを垂直方向の中央に配置するかどうか |
用紙サイズの例
名前 | 価値 |
---|---|
手紙 | 未定義 |
法律上の | 5 |
エグゼクティブ | 7 |
A3 | 8 |
A4 | 9 |
A5 | 11 |
B5(JIS) | 13 |
封筒 #10 | 20 |
エンベロープDL | 27 |
封筒 C5 | 28 |
封筒B5 | 34 |
エンベロープモナーク | 37 |
往復はがきを回転させた状態 | 82 |
16K 197x273 mm | 119 |
ヘッダーとフッターを追加する方法は次のとおりです。追加されるコンテンツは主に時間、紹介、ファイル情報などのテキストであり、テキストのスタイルを設定できます。さらに、最初のページと偶数ページに異なるテキストを設定できます。
注: 画像は現在サポートされていません。
// Create worksheets with headers and footers
var sheet = workbook . addWorksheet ( 'sheet' , {
headerFooter : { firstHeader : "Hello Exceljs" , firstFooter : "Hello World" }
} ) ;
// Create worksheets with headers and footers
var worksheetWriter = workbookWriter . addWorksheet ( 'sheet' , {
headerFooter : { firstHeader : "Hello Exceljs" , firstFooter : "Hello World" }
} ) ;
// Set footer (default centered), result: "Page 2 of 16"
worksheet . headerFooter . oddFooter = "Page &P of &N" ;
// Set the footer (default centered) to bold, resulting in: "Page 2 of 16"
worksheet . headerFooter . oddFooter = "Page &P of &N" ;
// Set the left footer to 18px and italicize. Result: "Page 2 of 16"
worksheet . headerFooter . oddFooter = "&LPage &P of &N" ;
// Set the middle header to gray Aril, the result: "52 exceljs"
worksheet . headerFooter . oddHeader = "&C&KCCCCCC&"Aril"52 exceljs" ;
// Set the left, center, and right text of the footer. Result: “Exceljs” in the footer left. “demo.xlsx” in the footer center. “Page 2” in the footer right
worksheet . headerFooter . oddFooter = "&Lexceljs&C&F&RPage &P" ;
// Add different header & footer for the first page
worksheet . headerFooter . differentFirst = true ;
worksheet . headerFooter . firstHeader = "Hello Exceljs" ;
worksheet . headerFooter . firstFooter = "Hello World"
サポートされているヘッダーフッター設定
名前 | デフォルト | 説明 |
---|---|---|
違う最初 | 間違い | DifferentFirst の値を true に設定します。これは、最初のページのヘッダー/フッターが他のページと異なることを示します。 |
異なる奇数偶数 | 間違い | DifferentOddEven の値を true に設定します。これは、奇数ページと偶数ページのヘッダー/フッターが異なることを示します。 |
奇数ヘッダー | ヌル | 奇数(デフォルト)ページのヘッダー文字列を設定します。文字列をフォーマットできます |
奇数フッター | ヌル | 奇数(デフォルト)ページのフッター文字列を設定します。文字列をフォーマットできます |
偶数ヘッダー | ヌル | 偶数ページのヘッダー文字列を設定します。文字列をフォーマットできます |
偶数フッター | ヌル | 偶数ページのフッター文字列を設定します。文字列をフォーマットできます |
最初のヘッダー | ヌル | 最初のページのヘッダー文字列を設定します。文字列をフォーマットすることもできます |
最初のフッター | ヌル | 最初のページのフッター文字列を設定します。文字列をフォーマットできます |
スクリプトコマンド
コマンド | 説明 |
---|---|
&L | 位置を左に設定 |
&C | 位置を中心に設定 |
&R | 位置を右に設定 |
&P | 現在のページ番号 |
&N | 総ページ数 |
&D | 現在の日付 |
&T | 現在時刻 |
&G | 写真 |
&A | ワークシート名 |
&F | ファイル名 |
&B | テキストを太字にする |
&私 | テキストを斜体にする |
&U | テキストに下線を引く |
&「フォント名」 | フォント名 (例: &"Aril") |
フォントサイズ(&F) | フォント サイズ、たとえば 12 |
&KHEXコード | フォントの色 (例: &KCCCCCC) |
ワークシートは、Excel でシートを表示する方法を制御するビューのリストをサポートするようになりました。
各ビューはさまざまなプロパティもサポートしています。
名前 | デフォルト | 説明 |
---|---|---|
州 | '普通' | ビューの状態を制御します - 通常、フリーズ、または分割のいずれか |
右から左へ | 間違い | ワークシートビューの方向を右から左に設定します。 |
アクティブセル | 未定義 | 現在選択されているセル |
showルーラー | 真実 | ページレイアウトでルーラーを表示または非表示にします |
showRowColHeaders | 真実 | 行ヘッダーと列ヘッダーを表示または非表示にします (例: 上部に A1、B1、左側に 1、2、3) |
showGridLines | 真実 | グリッド線を表示または非表示にします (境界線が定義されていないセルに表示されます)。 |
ズームスケール | 100 | ビューに使用するズーム率 |
ズームスケールノーマル | 100 | ビューの通常のズーム |
スタイル | 未定義 | プレゼンテーション スタイル - pageBreakPreview または pageLayout のいずれか。注 pageLayout は固定ビューと互換性がありません |
固定ビューは、次の追加プロパティをサポートします。
名前 | デフォルト | 説明 |
---|---|---|
x分割 | 0 | 凍結する列の数。行のみを固定するには、これを 0 または未定義に設定します。 |
y分割 | 0 | 凍結する行数。列のみを固定するには、これを 0 または未定義に設定します。 |
左上のセル | 特別 | 右下のペインの左上にあるセルはどれですか。注: 凍結細胞は使用できません。デフォルトは最初の非凍結セル |
worksheet . views = [
{ state : 'frozen' , xSplit : 2 , ySplit : 3 , topLeftCell : 'G10' , activeCell : 'A1' }
] ;
分割ビューは、次の追加プロパティをサポートします。
名前 | デフォルト | 説明 |
---|---|---|
x分割 | 0 | スプリッターを配置する左から何ポイントか。垂直に分割するには、これを 0 または未定義に設定します。 |
y分割 | 0 | スプリッターを配置する上からのポイント数。水平方向に分割するには、これを 0 または未定義に設定します。 |
左上のセル | 未定義 | 右下のペインの左上にあるセルはどれですか。 |
アクティブペイン | 未定義 | どのペインがアクティブになるか - topLeft、topRight、bottomLeft、bottomRight のいずれか |
worksheet . views = [
{ state : 'split' , xSplit : 2000 , ySplit : 3000 , topLeftCell : 'G10' , activeCell : 'A1' }
] ;
ワークシートに自動フィルターを適用することができます。
worksheet . autoFilter = 'A1:C1' ;
範囲文字列は autoFilter の標準形式ですが、ワークシートは次の値もサポートします。
// Set an auto filter from A1 to C1
worksheet . autoFilter = {
from : 'A1' ,
to : 'C1' ,
}
// Set an auto filter from the cell in row 3 and column 1
// to the cell in row 5 and column 12
worksheet . autoFilter = {
from : {
row : 3 ,
column : 1
} ,
to : {
row : 5 ,
column : 12
}
}
// Set an auto filter from D3 to the
// cell in row 7 and column 5
worksheet . autoFilter = {
from : 'D3' ,
to : {
row : 7 ,
column : 5
}
}
// Add column headers and define column keys and widths
// Note: these column structures are a workbook-building convenience only,
// apart from the column width, they will not be fully persisted.
worksheet . columns = [
{ header : 'Id' , key : 'id' , width : 10 } ,
{ header : 'Name' , key : 'name' , width : 32 } ,
{ header : 'D.O.B.' , key : 'DOB' , width : 10 , outlineLevel : 1 }
] ;
// Access an individual columns by key, letter and 1-based column number
const idCol = worksheet . getColumn ( 'id' ) ;
const nameCol = worksheet . getColumn ( 'B' ) ;
const dobCol = worksheet . getColumn ( 3 ) ;
// set column properties
// Note: will overwrite cell value C1
dobCol . header = 'Date of Birth' ;
// Note: this will overwrite cell values C1:C2
dobCol . header = [ 'Date of Birth' , 'A.K.A. D.O.B.' ] ;
// from this point on, this column will be indexed by 'dob' and not 'DOB'
dobCol . key = 'dob' ;
dobCol . width = 15 ;
// Hide the column if you'd like
dobCol . hidden = true ;
// set an outline level for columns
worksheet . getColumn ( 4 ) . outlineLevel = 0 ;
worksheet . getColumn ( 5 ) . outlineLevel = 1 ;
// columns support a readonly field to indicate the collapsed state based on outlineLevel
expect ( worksheet . getColumn ( 4 ) . collapsed ) . to . equal ( false ) ;
expect ( worksheet . getColumn ( 5 ) . collapsed ) . to . equal ( true ) ;
// iterate over all current cells in this column
dobCol . eachCell ( function ( cell , rowNumber ) {
// ...
} ) ;
// iterate over all current cells in this column including empty cells
dobCol . eachCell ( { includeEmpty : true } , function ( cell , rowNumber ) {
// ...
} ) ;
// add a column of new values
worksheet . getColumn ( 6 ) . values = [ 1 , 2 , 3 , 4 , 5 ] ;
// add a sparse column of values
worksheet . getColumn ( 7 ) . values = [ , , 2 , 3 , , 5 , , 7 , , , , 11 ] ;
// cut one or more columns (columns to the right are shifted left)
// If column properties have been defined, they will be cut or moved accordingly
// Known Issue: If a splice causes any merged cells to move, the results may be unpredictable
worksheet . spliceColumns ( 3 , 2 ) ;
// remove one column and insert two more.
// Note: columns 4 and above will be shifted right by 1 column.
// Also: If the worksheet has more rows than values in the column inserts,
// the rows will still be shifted as if the values existed
const newCol3Values = [ 1 , 2 , 3 , 4 , 5 ] ;
const newCol4Values = [ 'one' , 'two' , 'three' , 'four' , 'five' ] ;
worksheet . spliceColumns ( 3 , 1 , newCol3Values , newCol4Values ) ;
// Get a row object. If it doesn't already exist, a new empty one will be returned
const row = worksheet . getRow ( 5 ) ;
// Get multiple row objects. If it doesn't already exist, new empty ones will be returned
const rows = worksheet . getRows ( 5 , 2 ) ; // start, length (>0, else undefined is returned)
// Get the last editable row in a worksheet (or undefined if there are none)
const row = worksheet . lastRow ;
// Set a specific row height
row . height = 42.5 ;
// make row hidden
row . hidden = true ;
// set an outline level for rows
worksheet . getRow ( 4 ) . outlineLevel = 0 ;
worksheet . getRow ( 5 ) . outlineLevel = 1 ;
// rows support a readonly field to indicate the collapsed state based on outlineLevel
expect ( worksheet . getRow ( 4 ) . collapsed ) . to . equal ( false ) ;
expect ( worksheet . getRow ( 5 ) . collapsed ) . to . equal ( true ) ;
row . getCell ( 1 ) . value = 5 ; // A5's value set to 5
row . getCell ( 'name' ) . value = 'Zeb' ; // B5's value set to 'Zeb' - assuming column 2 is still keyed by name
row . getCell ( 'C' ) . value = new Date ( ) ; // C5's value set to now
// Get a row as a sparse array
// Note: interface change: worksheet.getRow(4) ==> worksheet.getRow(4).values
row = worksheet . getRow ( 4 ) . values ;
expect ( row [ 5 ] ) . toEqual ( 'Kyle' ) ;
// assign row values by contiguous array (where array element 0 has a value)
row . values = [ 1 , 2 , 3 ] ;
expect ( row . getCell ( 1 ) . value ) . toEqual ( 1 ) ;
expect ( row . getCell ( 2 ) . value ) . toEqual ( 2 ) ;
expect ( row . getCell ( 3 ) . value ) . toEqual ( 3 ) ;
// assign row values by sparse array (where array element 0 is undefined)
const values = [ ]
values [ 5 ] = 7 ;
values [ 10 ] = 'Hello, World!' ;
row . values = values ;
expect ( row . getCell ( 1 ) . value ) . toBeNull ( ) ;
expect ( row . getCell ( 5 ) . value ) . toEqual ( 7 ) ;
expect ( row . getCell ( 10 ) . value ) . toEqual ( 'Hello, World!' ) ;
// assign row values by object, using column keys
row . values = {
id : 13 ,
name : 'Thing 1' ,
dob : new Date ( )
} ;
// Insert a page break below the row
row . addPageBreak ( ) ;
// Iterate over all rows that have values in a worksheet
worksheet . eachRow ( function ( row , rowNumber ) {
console . log ( 'Row ' + rowNumber + ' = ' + JSON . stringify ( row . values ) ) ;
} ) ;
// Iterate over all rows (including empty rows) in a worksheet
worksheet . eachRow ( { includeEmpty : true } , function ( row , rowNumber ) {
console . log ( 'Row ' + rowNumber + ' = ' + JSON . stringify ( row . values ) ) ;
} ) ;
// Iterate over all non-null cells in a row
row . eachCell ( function ( cell , colNumber ) {
console . log ( 'Cell ' + colNumber + ' = ' + cell . value ) ;
} ) ;
// Iterate over all cells in a row (including empty cells)
row . eachCell ( { includeEmpty : true } , function ( cell , colNumber ) {
console . log ( 'Cell ' + colNumber + ' = ' + cell . value ) ;
} ) ;
// Commit a completed row to stream
row . commit ( ) ;
// row metrics
const rowSize = row . cellCount ;
const numValues = row . actualCellCount ;
// Add a couple of Rows by key-value, after the last current row, using the column keys
worksheet . addRow ( { id : 1 , name : 'John Doe' , dob : new Date ( 1970 , 1 , 1 ) } ) ;
worksheet . addRow ( { id : 2 , name : 'Jane Doe' , dob : new Date ( 1965 , 1 , 7 ) } ) ;
// Add a row by contiguous Array (assign to columns A, B & C)
worksheet . addRow ( [ 3 , 'Sam' , new Date ( ) ] ) ;
// Add a row by sparse Array (assign to columns A, E & I)
const rowValues = [ ] ;
rowValues [ 1 ] = 4 ;
rowValues [ 5 ] = 'Kyle' ;
rowValues [ 9 ] = new Date ( ) ;
worksheet . addRow ( rowValues ) ;
// Add a row with inherited style
// This new row will have same style as last row
// And return as row object
const newRow = worksheet . addRow ( rowValues , 'i' ) ;
// Add an array of rows
const rows = [
[ 5 , 'Bob' , new Date ( ) ] , // row by array
{ id : 6 , name : 'Barbara' , dob : new Date ( ) }
] ;
// add new rows and return them as array of row objects
const newRows = worksheet . addRows ( rows ) ;
// Add an array of rows with inherited style
// These new rows will have same styles as last row
// and return them as array of row objects
const newRowsStyled = worksheet . addRows ( rows , 'i' ) ;
パラメータ | 説明 | デフォルト値 |
---|---|---|
値/秒 | 新しい行の値 | |
スタイル | 上の行から継承する場合は「i」、空のセルを含める場合は「i+」、何も含まない場合は「n」 | 「ん」 |
const cell = worksheet . getCell ( 'C3' ) ;
// Modify/Add individual cell
cell . value = new Date ( 1968 , 5 , 1 ) ;
// query a cell's type
expect ( cell . type ) . toEqual ( Excel . ValueType . Date ) ;
// use string value of cell
myInput . value = cell . text ;
// use html-safe string for rendering...
const html = '<div>' + cell . html + '</div>' ;
// merge a range of cells
worksheet . mergeCells ( 'A4:B5' ) ;
// ... merged cells are linked
worksheet . getCell ( 'B5' ) . value = 'Hello, World!' ;
expect ( worksheet . getCell ( 'B5' ) . value ) . toBe ( worksheet . getCell ( 'A4' ) . value ) ;
expect ( worksheet . getCell ( 'B5' ) . master ) . toBe ( worksheet . getCell ( 'A4' ) ) ;
// ... merged cells share the same style object
expect ( worksheet . getCell ( 'B5' ) . style ) . toBe ( worksheet . getCell ( 'A4' ) . style ) ;
worksheet . getCell ( 'B5' ) . style . font = myFonts . arial ;
expect ( worksheet . getCell ( 'A4' ) . style . font ) . toBe ( myFonts . arial ) ;
// unmerging the cells breaks the style links
worksheet . unMergeCells ( 'A4' ) ;
expect ( worksheet . getCell ( 'B5' ) . style ) . not . toBe ( worksheet . getCell ( 'A4' ) . style ) ;
expect ( worksheet . getCell ( 'B5' ) . style . font ) . not . toBe ( myFonts . arial ) ;
// merge by top-left, bottom-right
worksheet . mergeCells ( 'K10' , 'M12' ) ;
// merge by start row, start column, end row, end column (equivalent to K10:M12)
worksheet . mergeCells ( 10 , 11 , 12 , 13 ) ;
insertRow ( pos , value , style = 'n' )
insertRows ( pos , values , style = 'n' )
// Insert a couple of Rows by key-value, shifting down rows every time
worksheet . insertRow ( 1 , { id : 1 , name : 'John Doe' , dob : new Date ( 1970 , 1 , 1 ) } ) ;
worksheet . insertRow ( 1 , { id : 2 , name : 'Jane Doe' , dob : new Date ( 1965 , 1 , 7 ) } ) ;
// Insert a row by contiguous Array (assign to columns A, B & C)
worksheet . insertRow ( 1 , [ 3 , 'Sam' , new Date ( ) ] ) ;
// Insert a row by sparse Array (assign to columns A, E & I)
var rowValues = [ ] ;
rowValues [ 1 ] = 4 ;
rowValues [ 5 ] = 'Kyle' ;
rowValues [ 9 ] = new Date ( ) ;
// insert new row and return as row object
const insertedRow = worksheet . insertRow ( 1 , rowValues ) ;
// Insert a row, with inherited style
// This new row will have same style as row on top of it
// And return as row object
const insertedRowInherited = worksheet . insertRow ( 1 , rowValues , 'i' ) ;
// Insert a row, keeping original style
// This new row will have same style as it was previously
// And return as row object
const insertedRowOriginal = worksheet . insertRow ( 1 , rowValues , 'o' ) ;
// Insert an array of rows, in position 1, shifting down current position 1 and later rows by 2 rows
var rows = [
[ 5 , 'Bob' , new Date ( ) ] , // row by array
{ id : 6 , name : 'Barbara' , dob : new Date ( ) }
] ;
// insert new rows and return them as array of row objects
const insertedRows = worksheet . insertRows ( 1 , rows ) ;
// Insert an array of rows, with inherited style
// These new rows will have same style as row on top of it
// And return them as array of row objects
const insertedRowsInherited = worksheet . insertRows ( 1 , rows , 'i' ) ;
// Insert an array of rows, keeping original style
// These new rows will have same style as it was previously in 'pos' position
const insertedRowsOriginal = worksheet . insertRows ( 1 , rows , 'o' ) ;
パラメータ | 説明 | デフォルト値 |
---|---|---|
位置 | 挿入したい行番号をそこからすべての行を押し下げます | |
値/秒 | 新しい行の値 | |
スタイル | 上の行から継承する場合は「i」、空のセルを含める場合は「i+」、元のスタイルの場合は「o」、空のセルを含める場合は「o+」、なしの場合は「n」 | 「ん」 |
// Cut one or more rows (rows below are shifted up)
// Known Issue: If a splice causes any merged cells to move, the results may be unpredictable
worksheet . spliceRows ( 4 , 3 ) ;
// remove one row and insert two more.
// Note: rows 4 and below will be shifted down by 1 row.
const newRow3Values = [ 1 , 2 , 3 , 4 , 5 ] ;
const newRow4Values = [ 'one' , 'two' , 'three' , 'four' , 'five' ] ;
worksheet . spliceRows ( 3 , 1 , newRow3Values , newRow4Values ) ;
// Cut one or more cells (cells to the right are shifted left)
// Note: this operation will not affect other rows
row . splice ( 3 , 2 ) ;
// remove one cell and insert two more (cells to the right of the cut cell will be shifted right)
row . splice ( 4 , 1 , 'new value 1' , 'new value 2' ) ;
パラメータ | 説明 | デフォルト値 |
---|---|---|
始める | スプライスの開始点 | |
カウント | 削除する行/セルの数 | |
...挿入 | 挿入する新しい行/セル値 |
duplicateRow ( start , amount = 1 , insert = true )
const wb = new ExcelJS . Workbook ( ) ;
const ws = wb . addWorksheet ( 'duplicateTest' ) ;
ws . getCell ( 'A1' ) . value = 'One' ;
ws . getCell ( 'A2' ) . value = 'Two' ;
ws . getCell ( 'A3' ) . value = 'Three' ;
ws . getCell ( 'A4' ) . value = 'Four' ;
// This line will duplicate the row 'One' twice but it will replace rows 'Two' and 'Three'
// if third param was true so it would insert 2 new rows with the values and styles of row 'One'
ws . duplicateRow ( 1 , 2 , false ) ;
パラメータ | 説明 | デフォルト値 |
---|---|---|
始める | 複製したい行番号(Excelでは先頭が1) | |
額 | 行を複製する回数 | 1 |
入れる | 重複に対して新しい行を挿入する場合はtrue 、置換する場合はfalse | 真実 |
個々のセル (または複数のセルのグループ) に名前を割り当てることができます。名前は数式やデータ検証 (おそらくそれ以外にも) で使用できます。
// assign (or get) a name for a cell (will overwrite any other names that cell had)
worksheet . getCell ( 'A1' ) . name = 'PI' ;
expect ( worksheet . getCell ( 'A1' ) . name ) . to . equal ( 'PI' ) ;
// assign (or get) an array of names for a cell (cells can have more than one name)
worksheet . getCell ( 'A1' ) . names = [ 'thing1' , 'thing2' ] ;
expect ( worksheet . getCell ( 'A1' ) . names ) . to . have . members ( [ 'thing1' , 'thing2' ] ) ;
// remove a name from a cell
worksheet . getCell ( 'A1' ) . removeName ( 'thing1' ) ;
expect ( worksheet . getCell ( 'A1' ) . names ) . to . have . members ( [ 'thing2' ] ) ;
セルは、どの値が有効かどうかを定義し、ユーザーにガイドを示すプロンプトを表示できます。
検証タイプは次のいずれかになります。
タイプ | 説明 |
---|---|
リスト | 有効な値の離散セットを定義します。 Excel では、簡単に入力できるようにこれらをドロップダウンで提供します。 |
全体 | 値は整数でなければなりません |
10進数 | 値は 10 進数でなければなりません |
テキストの長さ | 値はテキストでも構いませんが、長さは制御されます |
カスタム | カスタム式が有効な値を制御します |
リストまたはカスタム以外の型の場合、次の演算子が検証に影響します。
オペレーター | 説明 |
---|---|
間 | 値は数式の結果の間にある必要があります |
間ではありません | 値が数式の結果の間に存在してはなりません |
等しい | 値は数式の結果と等しくなければなりません |
等しくない | 値は数式の結果と等しくない |
より大きい | 値は数式の結果より大きくなければなりません |
未満 | 値は数式の結果より小さくなければなりません |
より大きいか等しい | 値は数式の結果以上である必要があります |
以下または等しい | 値は数式の結果以下でなければなりません |
// Specify list of valid values (One, Two, Three, Four).
// Excel will provide a dropdown with these values.
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'list' ,
allowBlank : true ,
formulae : [ '"One,Two,Three,Four"' ]
} ;
// Specify list of valid values from a range.
// Excel will provide a dropdown with these values.
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'list' ,
allowBlank : true ,
formulae : [ '$D$5:$F$5' ]
} ;
// Specify Cell must be a whole number that is not 5.
// Show the user an appropriate error message if they get it wrong
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'whole' ,
operator : 'notEqual' ,
showErrorMessage : true ,
formulae : [ 5 ] ,
errorStyle : 'error' ,
errorTitle : 'Five' ,
error : 'The value must not be Five'
} ;
// Specify Cell must be a decimal number between 1.5 and 7.
// Add 'tooltip' to help guid the user
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'decimal' ,
operator : 'between' ,
allowBlank : true ,
showInputMessage : true ,
formulae : [ 1.5 , 7 ] ,
promptTitle : 'Decimal' ,
prompt : 'The value must between 1.5 and 7'
} ;
// Specify Cell must be have a text length less than 15
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'textLength' ,
operator : 'lessThan' ,
showErrorMessage : true ,
allowBlank : true ,
formulae : [ 15 ]
} ;
// Specify Cell must be have be a date before 1st Jan 2016
worksheet . getCell ( 'A1' ) . dataValidation = {
type : 'date' ,
operator : 'lessThan' ,
showErrorMessage : true ,
allowBlank : true ,
formulae : [ new Date ( 2016 , 0 , 1 ) ]
} ;
古いスタイルのコメントをセルに追加する
// plain text note
worksheet . getCell ( 'A1' ) . note = 'Hello, ExcelJS!' ;
// colourful formatted note
ws . getCell ( 'B1' ) . note = {
texts : [
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 0 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : 'This is ' } ,
{ 'font' : { 'italic' : true , 'size' : 12 , 'color' : { 'theme' : 0 } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'a' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' ' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'argb' : 'FFFF6600' } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'colorful' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' text ' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'argb' : 'FFCCFFCC' } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'with' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' in-cell ' } ,
{ 'font' : { 'bold' : true , 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : 'format' } ,
] ,
margins : {
insetmode : 'custom' ,
inset : [ 0.25 , 0.25 , 0.35 , 0.35 ]
} ,
protection : {
locked : True ,
lockText : False
} ,
editAs : 'twoCells' ,
} ;
次の表は、セル コメントでサポートされるプロパティを定義します。
分野 | 必須 | デフォルト値 | 説明 |
---|---|---|---|
テキスト | Y | コメントの本文 | |
余白 | N | {} | 自動またはカスタムセルコメントの余白の値を決定します。 |
保護 | N | {} | 保護属性を使用したオブジェクトおよびオブジェクト テキストのロック ステータスの指定 |
編集して | N | '絶対' | 'editAs' 属性を使用して、注釈をセルに固定する方法を指定します |
セル注釈のページ余白設定モード、自動モードまたはカスタム モードを決定します。
ws . getCell ( 'B1' ) . note . margins = {
insetmode : 'custom' ,
inset : [ 0.25 , 0.25 , 0.35 , 0.35 ]
}
財産 | 必須 | デフォルト値 | 説明 |
---|---|---|---|
インセットモード | N | 「自動」 | コメントの余白を自動的に設定するかどうかを決定します。値は「自動」または「カスタム」です。 |
差し込み | N | [0.13、0.13、0.25、0.25] | コメントの境界線の空白。単位はセンチメートルです。方向は左、上、右、下です |
注: このinset
設定は、 insetmode
の値が「custom」の場合にのみ有効です。
保護属性を使用してオブジェクトとオブジェクト テキストのロック ステータスを指定します。
ws . getCell ( 'B1' ) . note . protection = {
locked : 'False' ,
lockText : 'False' ,
} ;
財産 | 必須 | デフォルト値 | 説明 |
---|---|---|---|
ロックされた | N | '真実' | この要素は、シートが保護されているときにオブジェクトがロックされることを指定します |
ロックテキスト | N | '真実' | この要素は、オブジェクトのテキストがロックされていることを指定します |
注: ロックされたオブジェクトは、ワークシートが保護されている場合にのみ有効です。
セルのコメントには、コメントをセルに固定する方法を制御するプロパティ「editAs」を持つこともできます。次のいずれかの値を指定できます。
ws . getCell ( 'B1' ) . note . editAs = 'twoCells' ;
価値 | 説明 |
---|---|
2つのセル | メモのサイズと位置がセルによって異なることを指定します |
ワンセル | ノートのサイズは固定で、セルに応じて位置が変わることを指定します。 |
絶対 | これがデフォルトです。コメントはセルと一緒に移動したりサイズ変更されません |
テーブルを使用すると、表形式データをシート内で操作できます。
ワークシートにテーブルを追加するには、テーブル モデルを定義して addTable を呼び出します。
// add a table to a sheet
ws . addTable ( {
name : 'MyTable' ,
ref : 'A1' ,
headerRow : true ,
totalsRow : true ,
style : {
theme : 'TableStyleDark3' ,
showRowStripes : true ,
} ,
columns : [
{ name : 'Date' , totalsRowLabel : 'Totals:' , filterButton : true } ,
{ name : 'Amount' , totalsRowFunction : 'sum' , filterButton : false } ,
] ,
rows : [
[ new Date ( '2019-07-20' ) , 70.10 ] ,
[ new Date ( '2019-07-21' ) , 70.60 ] ,
[ new Date ( '2019-07-22' ) , 70.10 ] ,
] ,
} ) ;
注: ワークシートにテーブルを追加すると、ヘッダーと行データがシートに配置されてシートが変更されます。結果のテーブルがカバーするシート上のデータ (ヘッダーと合計を含む) は上書きされます。
次の表は、テーブルでサポートされるプロパティを定義します。
テーブルのプロパティ | 説明 | 必須 | デフォルト値 |
---|---|---|---|
名前 | テーブルの名前 | Y | |
表示名 | テーブルの表示名 | N | 名前 |
参照 | 表の左上のセル | Y | |
ヘッダー行 | 表の上部にヘッダーを表示 | N | 真実 |
合計行 | 表の下部に合計を表示 | N | 間違い |
スタイル | 追加のスタイルプロパティ | N | {} |
列 | 列の定義 | Y | |
行 | データの行 | Y |
次の表は、テーブル スタイル プロパティ内でサポートされるプロパティを定義します。
スタイルプロパティ | 説明 | 必須 | デフォルト値 |
---|---|---|---|
テーマ | テーブルのテーマカラー | N | 'テーブルスタイル中2' |
showFirstColumn | 最初の列を強調表示します (太字) | N | 間違い |
showLastColumn | 最後の列を強調表示します (太字) | N | 間違い |
showRowストライプ | 行を交互に背景色で表示 | N | 間違い |
showColumnStripes | 行を交互に背景色で表示 | N | 間違い |
次の表は、テーブルの各列内でサポートされるプロパティを定義します。
列プロパティ | 説明 | 必須 | デフォルト値 |
---|---|---|---|
名前 | 列の名前。ヘッダーにも使用されます。 | Y | |
フィルターボタン | ヘッダー内のフィルターコントロールを切り替えます | N | 間違い |
合計行ラベル | 合計行を説明するラベル (最初の列) | N | '合計' |
合計行関数 | 合計関数の名前 | N | 'なし' |
合計行数式 | カスタム関数のオプションの式 | N |
次の表に、列によって定義される totalsRowFunction プロパティの有効な値を示します。 「カスタム」以外の値が使用される場合、関連する数式はテーブルによって挿入されるため、これを含める必要はありません。
合計関数 | 説明 |
---|---|
なし | この列には合計関数がありません |
平均 | 列の平均を計算する |
countNums | 数値であるエントリを数える |
カウント | エントリ数 |
最大 | この列の最大値 |
分 | この列の最小値 |
標準開発 | この列の標準偏差 |
変数 | この列の分散 |
和 | この列のエントリの合計 |
カスタム | カスタム式。関連付けられた totalsRowFormula 値が必要です。 |
有効なテーマ名は次のパターンに従います。
シェード、数値は次のいずれかになります。
テーマがない場合は、値 null を使用します。
注: カスタム テーブル テーマは、exceljs ではまだサポートされていません。
テーブルは、データの追加または削除、および一部のプロパティの変更を可能にする一連の操作関数をサポートしています。これらの操作の多くはシート上に影響を与える可能性があるため、完了後に変更をコミットする必要があります。
テーブル内のすべてのインデックス値はゼロベースであるため、最初の行番号と最初の列番号は 0 になります。
ヘッダーと合計の追加または削除
const table = ws . getTable ( 'MyTable' ) ;
// turn header row on
table . headerRow = true ;
// turn totals row off
table . totalsRow = false ;
// commit the table changes into the sheet
table . commit ( ) ;
テーブルの再配置
const table = ws . getTable ( 'MyTable' ) ;
// table top-left move to D4
table . ref = 'D4' ;
// commit the table changes into the sheet
table . commit ( ) ;
行の追加と削除
const table = ws . getTable ( 'MyTable' ) ;
// remove first two rows
table . removeRows ( 0 , 2 ) ;
// insert new rows at index 5
table . addRow ( [ new Date ( '2019-08-05' ) , 5 , 'Mid' ] , 5 ) ;
// append new row to bottom of table
table . addRow ( [ new Date ( '2019-08-10' ) , 10 , 'End' ] ) ;
// commit the table changes into the sheet
table . commit ( ) ;
列の追加と削除
const table = ws . getTable ( 'MyTable' ) ;
// remove second column
table . removeColumns ( 1 , 1 ) ;
// insert new column (with data) at index 1
table . addColumn (
{ name : 'Letter' , totalsRowFunction : 'custom' , totalsRowFormula : 'ROW()' , totalsRowResult : 6 , filterButton : true } ,
[ 'a' , 'b' , 'c' , 'd' ] ,
2
) ;
// commit the table changes into the sheet
table . commit ( ) ;
列プロパティの変更
const table = ws . getTable ( 'MyTable' ) ;
// Get Column Wrapper for second column
const column = table . getColumn ( 1 ) ;
// set some properties
column . name = 'Code' ;
column . filterButton = true ;
column . style = { font : { bold : true , name : 'Comic Sans MS' } } ;
column . totalsRowLabel = 'Totals' ;
column . totalsRowFunction = 'custom' ;
column . totalsRowFormula = 'ROW()' ;
column . totalsRowResult = 10 ;
// commit the table changes into the sheet
table . commit ( ) ;
セル、行、列はそれぞれ、セルの表示方法に影響を与える豊富なスタイルと形式のセットをサポートしています。
スタイルは、次のプロパティを割り当てることによって設定されます。
// assign a style to a cell
ws . getCell ( 'A1' ) . numFmt = '0.00%' ;
// Apply styles to worksheet columns
ws . columns = [
{ header : 'Id' , key : 'id' , width : 10 } ,
{ header : 'Name' , key : 'name' , width : 32 , style : { font : { name : 'Arial Black' } } } ,
{ header : 'D.O.B.' , key : 'DOB' , width : 10 , style : { numFmt : 'dd/mm/yyyy' } }
] ;
// Set Column 3 to Currency Format
ws . getColumn ( 3 ) . numFmt = '"£"#,##0.00;[Red]-"£"#,##0.00' ;
// Set Row 2 to Comic Sans.
ws . getRow ( 2 ) . font = { name : 'Comic Sans MS' , family : 4 , size : 16 , underline : 'double' , bold : true } ;
スタイルが行または列に適用されると、その行または列に現在存在するすべてのセルに適用されます。また、作成された新しいセルは、そのセルが属する行と列から初期スタイルを継承します。
セルの行と列の両方が特定のスタイル (フォントなど) を定義している場合、セルは列スタイルではなく行スタイルを使用します。ただし、行と列で異なるスタイルが定義されている場合 (たとえば、column.numFmt と row.font)、セルは行からフォントを継承し、列から numFmt を継承します。
注意: 上記のプロパティはすべて (文字列である numFmt を除く)、JS オブジェクト構造です。同じスタイル オブジェクトが複数のスプレッドシート エンティティに割り当てられている場合、各エンティティは同じスタイル オブジェクトを共有します。スプレッドシートがシリアル化される前にスタイル オブジェクトが後で変更されると、そのスタイル オブジェクトを参照するすべてのエンティティも変更されます。この動作は、作成される JS オブジェクトの数を減らすことでパフォーマンスを優先することを目的としています。スタイル オブジェクトを独立させたい場合は、割り当てる前にクローンを作成する必要があります。また、デフォルトでは、スプレッドシート エンティティが同様のスタイルを共有している場合、ドキュメントがファイル (またはストリーム) から読み取られるときに、同じスタイル オブジェクトも参照します。
// display value as '1 3/5'
ws . getCell ( 'A1' ) . value = 1.6 ;
ws . getCell ( 'A1' ) . numFmt = '# ?/?' ;
// display value as '1.60%'
ws . getCell ( 'B1' ) . value = 0.016 ;
ws . getCell ( 'B1' ) . numFmt = '0.00%' ;
// for the wannabe graphic designers out there
ws . getCell ( 'A1' ) . font = {
name : 'Comic Sans MS' ,
family : 4 ,
size : 16 ,
underline : true ,
bold : true
} ;
// for the graduate graphic designers...
ws . getCell ( 'A2' ) . font = {
name : 'Arial Black' ,
color : { argb : 'FF00FF00' } ,
family : 2 ,
size : 14 ,
italic : true
} ;
// for the vertical align
ws . getCell ( 'A3' ) . font = {
vertAlign : 'superscript'
} ;
// note: the cell will store a reference to the font object assigned.
// If the font object is changed afterwards, the cell font will change also...
const font = { name : 'Arial' , size : 12 } ;
ws . getCell ( 'A3' ) . font = font ;
font . size = 20 ; // Cell A3 now has font size 20!
// Cells that share similar fonts may reference the same font object after
// the workbook is read from file or stream
フォントのプロパティ | 説明 | 値の例 |
---|---|---|
名前 | フォント名。 | 「エリアル」「カリブリ」など。 |
家族 | フォールバック用のフォント ファミリー。整数値。 | 1 - セリフ、2 - サンセリフ、3 - モノラル、その他 - 不明 |
スキーム | フォントスキーム。 | 「マイナー」、「メジャー」、「なし」 |
文字セット | フォントの文字セット。整数値。 | 1、2など |
サイズ | フォントサイズ。整数値。 | 9、10、12、16など |
色 | 色の説明。ARGB 値を含むオブジェクト。 | { 引数: 'FFFF0000'} |
大胆な | フォントの太さ | 真、偽 |
イタリック | フォントの傾き | 真、偽 |
下線 | フォントの下線スタイル | true、false、'none'、'single'、'double'、'singleAccounting'、'doubleAccounting' |
ストライク | フォントの | 真、偽 |
概要 | フォントのアウトライン | 真、偽 |
垂直整列 | 垂直方向の整列 | 「上付き文字」、「下付き文字」 |
// set cell alignment to top-left, middle-center, bottom-right
ws . getCell ( 'A1' ) . alignment = { vertical : 'top' , horizontal : 'left' } ;
ws . getCell ( 'B1' ) . alignment = { vertical : 'middle' , horizontal : 'center' } ;
ws . getCell ( 'C1' ) . alignment = { vertical : 'bottom' , horizontal : 'right' } ;
// set cell to wrap-text
ws . getCell ( 'D1' ) . alignment = { wrapText : true } ;
// set cell indent to 1
ws . getCell ( 'E1' ) . alignment = { indent : 1 } ;
// set cell text rotation to 30deg upwards, 45deg downwards and vertical text
ws . getCell ( 'F1' ) . alignment = { textRotation : 30 } ;
ws . getCell ( 'G1' ) . alignment = { textRotation : - 45 } ;
ws . getCell ( 'H1' ) . alignment = { textRotation : 'vertical' } ;
有効な配置プロパティ値
水平 | 垂直 | ラップテキスト | 縮めてフィット | インデント | 読書注文 | テキスト回転 |
---|---|---|---|---|---|---|
左 | トップ | 真実 | 真実 | 整数 | rtl | 0~90 |
中心 | 真ん中 | 間違い | 間違い | ltr | -1 ~ -90 | |
右 | 底 | 垂直 | ||||
埋める | 配布された | |||||
正当化する | 正当化する | |||||
センター連続 | ||||||
配布された |
// set single thin border around A1
ws . getCell ( 'A1' ) . border = {
top : { style : 'thin' } ,
left : { style : 'thin' } ,
bottom : { style : 'thin' } ,
right : { style : 'thin' }
} ;
// set double thin green border around A3
ws . getCell ( 'A3' ) . border = {
top : { style : 'double' , color : { argb : 'FF00FF00' } } ,
left : { style : 'double' , color : { argb : 'FF00FF00' } } ,
bottom : { style : 'double' , color : { argb : 'FF00FF00' } } ,
right : { style : 'double' , color : { argb : 'FF00FF00' } }
} ;
// set thick red cross in A5
ws . getCell ( 'A5' ) . border = {
diagonal : { up : true , down : true , style : 'thick' , color : { argb : 'FFFF0000' } }
} ;
有効な枠線スタイル
// fill A1 with red darkVertical stripes
ws . getCell ( 'A1' ) . fill = {
type : 'pattern' ,
pattern : 'darkVertical' ,
fgColor : { argb : 'FFFF0000' }
} ;
// fill A2 with yellow dark trellis and blue behind
ws . getCell ( 'A2' ) . fill = {
type : 'pattern' ,
pattern : 'darkTrellis' ,
fgColor : { argb : 'FFFFFF00' } ,
bgColor : { argb : 'FF0000FF' }
} ;
// fill A3 with solid coral
ws . getCell ( 'A3' ) . fill = {
type : 'pattern' ,
pattern : 'solid' ,
fgColor : { argb : 'F08080' } ,
} ;
// fill A4 with blue-white-blue gradient from left to right
ws . getCell ( 'A4' ) . fill = {
type : 'gradient' ,
gradient : 'angle' ,
degree : 0 ,
stops : [
{ position : 0 , color : { argb : 'FF0000FF' } } ,
{ position : 0.5 , color : { argb : 'FFFFFFFF' } } ,
{ position : 1 , color : { argb : 'FF0000FF' } }
]
} ;
// fill A5 with red-green gradient from center
ws . getCell ( 'A5' ) . fill = {
type : 'gradient' ,
gradient : 'path' ,
center : { left : 0.5 , top : 0.5 } ,
stops : [
{ position : 0 , color : { argb : 'FFFF0000' } } ,
{ position : 1 , color : { argb : 'FF00FF00' } }
]
} ;
財産 | 必須 | 説明 |
---|---|---|
タイプ | Y | 値: 'パターン' この塗りつぶしがパターンを使用することを指定します |
パターン | Y | パターンのタイプを指定します (下記の有効なパターン タイプを参照) |
fgカラー | N | パターンの前景色を指定します。デフォルトは黒です。 |
背景色 | N | パターンの背景色を指定します。デフォルトは白です。 |
注: solid
パターンを使用してセルを塗りつぶす場合は、 bgColor
指定する必要はありません。 solid
パターンとサンゴのfgColor
を含むセルA3
については、上記の例を参照してください。
有効なパターンの種類
財産 | 必須 | 説明 |
---|---|---|
タイプ | Y | 値: 'グラデーション' この塗りつぶしにグラデーションを使用することを指定します |
勾配 | Y | グラデーションの種類を指定します。 ['角度'、'パス'] のいずれか |
程度 | 角度 | 「角度」グラデーションの場合、グラデーションの方向を指定します。 0は左から右へです。 1 ~ 359 の値は時計回りに回転します。 |
中心 | パス | 「パス」グラデーションの場合。パスの開始点の相対座標を指定します。 「左」と「上」の値の範囲は 0 から 1 です。 |
止まる | Y | グラデーションの色の順序を指定します。位置 0 から始まり位置 1 で終わる位置と色を含むオブジェクトの配列です。パス上の他の色を指定するために中間位置を使用できます。 |
注意事項
上記のインターフェースを使用すると、XLSX エディター プログラムでは不可能なグラデーション塗りつぶし効果を作成できる場合があります。たとえば、Excel は 0、45、90、および 135 の角度勾配のみをサポートします。同様に、ストップの順序も UI によって制限され、位置 [0,1] または [0,0.5,1] が唯一のオプションとなる場合があります。この塗りつぶしがターゲットの XLSX ビューアでサポートされていることを確認するために注意してください。
個々のセルがリッチ テキストまたはセル内の書式設定をサポートするようになりました。リッチ テキスト値は、テキスト値内の任意の数の部分文字列のフォント プロパティを制御できます。サポートされているフォント プロパティの詳細については、「フォント」を参照してください。
ws . getCell ( 'A1' ) . value = {
'richText' : [
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 0 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : 'This is ' } ,
{ 'font' : { 'italic' : true , 'size' : 12 , 'color' : { 'theme' : 0 } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'a' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' ' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'argb' : 'FFFF6600' } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'colorful' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' text ' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'argb' : 'FFCCFFCC' } , 'name' : 'Calibri' , 'scheme' : 'minor' } , 'text' : 'with' } ,
{ 'font' : { 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : ' in-cell ' } ,
{ 'font' : { 'bold' : true , 'size' : 12 , 'color' : { 'theme' : 1 } , 'name' : 'Calibri' , 'family' : 2 , 'scheme' : 'minor' } , 'text' : 'format' }
]
} ;
expect ( ws . getCell ( 'A1' ) . text ) . to . equal ( 'This is a colorful text with in-cell format' ) ;
expect ( ws . getCell ( 'A1' ) . type ) . to . equal ( Excel . ValueType . RichText ) ;
セルレベルの保護は、保護プロパティを使用して変更できます。
ws . getCell ( 'A1' ) . protection = {
locked : false ,
hidden : true ,
} ;
サポートされている保護プロパティ
財産 | デフォルト | 説明 |
---|---|---|
ロックされた | 真実 | シートが保護されている場合にセルをロックするかどうかを指定します。 |
隠れた | 間違い | シートが保護されている場合にセルの数式を表示するかどうかを指定します。 |
条件付き書式設定を使用すると、セルの値または任意の数式に応じて、シートに特定のスタイル、アイコンなどを表示できます。
条件付き書式設定ルールはシート レベルで追加され、通常はセルの範囲をカバーします。
複数のルールを特定のセル範囲に適用でき、各ルールは独自のスタイルを適用します。
複数のルールが特定のセルに影響を与える場合、競合するスタイルが衝突した場合に、ルールの優先順位の値によってどのルールが優先されるかが決まります。優先順位の値が低いルールが優先されます。特定のルールに優先順位の値が指定されていない場合、ExcelJS はそれらを昇順で割り当てます。
注: 現時点では、条件付き書式設定ルールのサブセットのみがサポートされています。具体的には、<extLst> 要素内の XML レンダリングを必要としない書式設定ルールのみです。これは、データセットと 3 つの特定のアイコン セット (3Triangles、3Stars、5Boxes) がサポートされていないことを意味します。
// add a checkerboard pattern to A1:E7 based on row + col being even or odd
worksheet . addConditionalFormatting ( {
ref : 'A1:E7' ,
rules : [
{
type : 'expression' ,
formulae : [ 'MOD(ROW()+COLUMN(),2)=0' ] ,
style : { fill : { type : 'pattern' , pattern : 'solid' , bgColor : { argb : 'FF00FF00' } } } ,
}
]
} )
サポートされている条件付き書式設定ルールのタイプ
タイプ | 説明 |
---|---|
表現 | ルールをアクティブにするために任意のカスタム関数を使用できます。 |
セル | 指定された演算子を使用してセル値を指定された数式と比較します |
トップ10 | 上位 (または下位) 範囲の値を持つセルに書式設定を適用します |
平均以上 | 平均を上回る (または下回る) 値を持つセルに書式設定を適用します |
カラースケール | 値が範囲内のどこにあるかに基づいてセルに色付きの背景を適用します。 |
アイコンセット | 値に基づいて一連のアイコンの 1 つをセルに追加します |
テキストを含む | セルが特定のテキストであるかどうかに基づいて書式設定を適用します |
時間期間 | セルの日時値が指定された範囲内にあるかどうかに基づいて書式設定を適用します。 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | '表現' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
数式 | true/false 値を返す 1 つの数式文字列の配列。セル値を参照するには、左上のセルアドレスを使用します。 | ||
スタイル | 数式が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 'セル' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
オペレーター | セルの値と数式の結果を比較する方法 | ||
数式 | 各セルと比較する値を返す 1 つの数式文字列の配列 | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
セル演算子
オペレーター | 説明 |
---|---|
等しい | セル値が数式値と等しい場合に書式を適用する |
より大きい | セルの値が数式の値より大きい場合に書式を適用する |
未満 | セル値が数式値より小さい場合に書式を適用する |
間 | セル値が 2 つの数式値の間にある場合に書式を適用します (両端を含む) |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 「トップ10」 | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
ランク | Y | 10 | 書式設定に含まれる上位 (または下位) の値の数を指定します |
パーセント | Y | 間違い | true の場合、ランク フィールドは絶対値ではなくパーセンテージです。 |
底 | Y | 間違い | true の場合、上部の値ではなく下部の値が含まれます。 |
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 「平均以上」 | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
平均以上 | Y | 間違い | true の場合、ランク フィールドは絶対値ではなくパーセンテージです。 |
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 'カラースケール' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
CFVO | 値の範囲内のウェイポイントを指定する 2 ~ 5 個の条件付き書式設定値オブジェクトの配列 | ||
色 | 指定されたウェイポイントで使用する対応する色の配列 | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 'アイコンセット' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
アイコンセット | Y | 3トラフィックライト | 使用するアイコンセットの名前 |
showValue | 真実 | 適用範囲内のセルにアイコンとセル値を表示するか、アイコンのみを表示するかを指定します | |
逆行する | 間違い | iconSet で指定されたアイコン セット内のアイコンを予約順に表示するかどうかを指定します。カスタムが「true」に等しい場合、この値は無視される必要があります | |
カスタム | 間違い | カスタムのアイコンセットを使用するかどうかを指定します | |
CFVO | 値の範囲内のウェイポイントを指定する 2 ~ 5 個の条件付き書式設定値オブジェクトの配列 | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 'データバー' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
最小の長さ | 0 | この条件付き書式範囲内の最も短いデータバーの長さを指定します | |
最大長さ | 100 | この条件付き書式範囲内の最長のデータバーの長さを指定します | |
showValue | 真実 | 条件付き書式範囲のセルにデータ バーと数値の両方を表示するか、データ バーを表示するかを指定します | |
勾配 | 真実 | データバーにグラデーション塗りつぶしがあるかどうかを指定します | |
国境 | 真実 | データバーに境界線があるかどうかを指定します | |
負のバーの色と同じ正 | 真実 | データバーが正のバーの色とは異なる負のバーの色を持つかどうかを指定します | |
負のバー境界線色と同じ正 | 真実 | データバーに正の境界線の色とは異なる負の境界線の色があるかどうかを指定します | |
軸位置 | 「自動」 | データバーの軸位置を指定します | |
方向 | '左から右' | データバーの方向を指定します | |
CFVO | 値の範囲内のウェイポイントを指定する 2 ~ 5 個の条件付き書式設定値オブジェクトの配列 | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | 'テキストを含む' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
オペレーター | テキスト比較の種類 | ||
文章 | 検索するテキスト | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
テキスト演算子が含まれています
オペレーター | 説明 |
---|---|
テキストを含む | セル値に「テキスト」フィールドで指定された値が含まれている場合にフォーマットを適用します |
空白を含む | セル値に空白が含まれる場合に書式を適用する |
空白が含まれていない | セル値に空白が含まれていない場合に書式を適用する |
エラーを含む | セル値にエラーが含まれている場合にフォーマットを適用する |
エラーが含まれていません | セル値にエラーが含まれていない場合にフォーマットを適用する |
分野 | オプション | デフォルト | 説明 |
---|---|---|---|
タイプ | '時間期間' | ||
優先度 | Y | <自動> | スタイルの優先順位を決定します |
時間期間 | セル値を比較する期間 | ||
スタイル | 比較が true を返した場合に適用されるスタイル構造 |
期間
期間 | 説明 |
---|---|
先週 | セル値が過去 1 週間以内に該当する場合に形式を適用する |
今週 | セル値が今週に該当する場合にフォーマットを適用する |
来週 | セル値が次の週に該当する場合にフォーマットを適用する |
昨日 | セル値が昨日と等しい場合にフォーマットを適用する |
今日 | セル値が今日と等しい場合にフォーマットを適用する |
明日 | セル値が明日と等しい場合にフォーマットを適用する |
過去7日間 | セル値が過去 7 日間以内の場合に形式を適用する |
先月 | セル値が先月に該当する場合にフォーマットを適用する |
今月 | セル値が今月に該当する場合にフォーマットを適用する |
来月 | セル値が翌月に該当する場合にフォーマットを適用する |
Excel はアウトラインをサポートしています。ユーザーが表示したい詳細レベルに応じて、行や列を展開したり折りたたんだりできます。
アウトライン レベルは列設定で定義できます。
worksheet . columns = [
{ header : 'Id' , key : 'id' , width : 10 } ,
{ header : 'Name' , key : 'name' , width : 32 } ,
{ header : 'D.O.B.' , key : 'DOB' , width : 10 , outlineLevel : 1 }
] ;
または行または列に直接
worksheet . getColumn ( 3 ) . outlineLevel = 1 ;
worksheet . getRow ( 3 ) . outlineLevel = 1 ;
シートアウトラインレベルはワークシート上で設定できます
// set column outline level
worksheet . properties . outlineLevelCol = 1 ;
// set row outline level
worksheet . properties . outlineLevelRow = 1 ;
注: 行または列のアウトライン レベル、またはワークシートのアウトライン レベルを調整すると、プロパティの変更の影響を受けるすべての行または列の折りたたまれたプロパティも変更されるという副作用が発生します。例えば:
worksheet . properties . outlineLevelCol = 1 ;
worksheet . getColumn ( 3 ) . outlineLevel = 1 ;
expect ( worksheet . getColumn ( 3 ) . collapsed ) . to . be . true ;
worksheet . properties . outlineLevelCol = 2 ;
expect ( worksheet . getColumn ( 3 ) . collapsed ) . to . be . false ;
アウトラインのプロパティはワークシート上で設定できます
worksheet . properties . outlineProperties = {
summaryBelow : false ,
summaryRight : false ,
} ;
ワークシートへの画像の追加は 2 段階のプロセスです。まず、addImage() 関数を介して画像がワークブックに追加されます。この関数は imageId 値も返します。次に、imageId を使用して、タイル状の背景として、またはセル範囲をカバーする画像としてワークシートに画像を追加できます。
注: このバージョンでは、画像の調整または変換はサポートされておらず、ストリーミング モードでの画像はサポートされていません。
Workbook.addImage 関数は、ファイル名またはバッファーによる画像の追加をサポートします。どちらの場合も、拡張子を指定する必要があることに注意してください。有効な拡張子の値には、「jpeg」、「png」、「gif」が含まれます。
// add image to workbook by filename
const imageId1 = workbook . addImage ( {
filename : 'path/to/image.jpg' ,
extension : 'jpeg' ,
} ) ;
// add image to workbook by buffer
const imageId2 = workbook . addImage ( {
buffer : fs . readFileSync ( 'path/to.image.png' ) ,
extension : 'png' ,
} ) ;
// add image to workbook by base64
const myBase64Image = "data:image/png;base64,iVBORw0KG..." ;
const imageId2 = workbook . addImage ( {
base64 : myBase64Image ,
extension : 'png' ,
} ) ;
Workbook.addImage のイメージ ID を使用して、addBackgroundImage 関数を使用してワークシートの背景を設定できます。
// set background
worksheet . addBackgroundImage ( imageId1 ) ;
Workbook.addImage の画像 ID を使用して、画像をワークシート内に埋め込んで範囲をカバーできます。範囲から計算された座標は、最初のセルの左上から 2 番目のセルの右下までをカバーします。
// insert an image over B2:D6
worksheet . addImage ( imageId2 , 'B2:D6' ) ;
範囲文字列の代わりに構造体を使用すると、セルを部分的にカバーすることができます。
これに使用される座標系はゼロベースであるため、A1 の左上は {col:0,row:0} になることに注意してください。セルの部分は浮動小数点数を使用して指定できます。たとえば、A1 の中点は {col: 0.5, row: 0.5 } です。
// insert an image over part of B2:D6
worksheet . addImage ( imageId2 , {
tl : { col : 1.5 , row : 1.5 } ,
br : { col : 3.5 , row : 5.5 }
} ) ;
セル範囲には、画像をセルに固定する方法を制御するプロパティ「editAs」を持つこともできます。これは、次のいずれかの値を持つことができます。
価値 | 説明 |
---|---|
未定義 | 画像がセルに合わせて移動およびサイズ変更されることを指定します |
ワンセル | これがデフォルトです。画像はセルと一緒に移動されますが、サイズは調整されません |
絶対 | 画像はセルと一緒に移動したりサイズ変更されません |
ws . addImage ( imageId , {
tl : { col : 0.1125 , row : 0.4 } ,
br : { col : 2.101046875 , row : 3.4 } ,
editAs : 'oneCell'
} ) ;
画像をセルに追加し、その幅と高さを 96dpi のピクセル単位で定義できます。
worksheet . addImage ( imageId2 , {
tl : { col : 0 , row : 0 } ,
ext : { width : 500 , height : 200 }
} ) ;
ハイパーリンク付きの画像をセルに追加し、画像範囲内のハイパーリンクを定義できます。
worksheet . addImage ( imageId2 , {
tl : { col : 0 , row : 0 } ,
ext : { width : 500 , height : 200 } ,
hyperlinks : {
hyperlink : 'http://www.somewhere.com' ,
tooltip : 'http://www.somewhere.com'
}
} ) ;
パスワードを追加することで、ワークシートを変更から保護できます。
await worksheet . protect ( 'the-password' , options ) ;
ワークシートの保護は次のように削除することもできます。
worksheet . unprotect ( ) ;
個々のセル保護を変更する方法の詳細については、「セル保護」を参照してください。
注: Protect()関数は、それが非同期であることを示す約束を返しますが、現在の実装はメインスレッドで実行され、平均CPUで約600msを使用します。これは、スパインクロンスを設定することで調整できます。これは、プロセスをより高速またはより弾力性のあるものにするために使用できます。
分野 | デフォルト | 説明 |
---|---|---|
SelectLockedCells | 真実 | ユーザーがロックされたセルを選択できるようにします |
selectunlockedcells | 真実 | ユーザーがロック解除されたセルを選択できるようにします |
フォーマットセル | 間違い | ユーザーがセルをフォーマットすることができます |
FormatColumns | 間違い | ユーザーフォーマット列を使用します |
フォーマトロウ | 間違い | ユーザーが行をフォーマットします |
挿入物 | 間違い | ユーザーが行を挿入できるようにします |
挿入コラム | 間違い | ユーザーが列を挿入します |
Inserthyperlinks | 間違い | ユーザーがハイパーリンクを挿入できるようにします |
行の削除 | 間違い | ユーザーが行を削除します |
deleteColumns | 間違い | ユーザーが列を削除します |
選別 | 間違い | ユーザーがデータをソートします |
オートフィルター | 間違い | ユーザーがテーブルにデータをフィルタリングできるようにします |
pivottables | 間違い | ユーザーがピボットテーブルを使用します |
スパインカウント | 100000 | 保護または保護するときに実行されるハッシュ反復の数 |
XLSXファイルを読み取るときにサポートされるオプション。
分野 | 必須 | タイプ | 説明 |
---|---|---|---|
無知 | N | 配列 | XLSXドキュメントのロード中に無視するノード名のリスト。状況によってはパフォーマンスが向上します。 利用可能: sheetPr 、 dimension 、 sheetViews 、 sheetFormatPr 、 cols 、 sheetData 、 autoFilter 、 mergeCells 、 rowBreaks 、 hyperlinks 、 pageMargins 、 dataValidations 、 pageSetup 、 headerFooter 、 printOptions 、 picture 、 drawing 、 sheetProtection 、 tableParts 、 conditionalFormatting 、 extLst 、extlst、 |
// read from a file
const workbook = new Excel . Workbook ( ) ;
await workbook . xlsx . readFile ( filename ) ;
// ... use workbook
// read from a stream
const workbook = new Excel . Workbook ( ) ;
await workbook . xlsx . read ( stream ) ;
// ... use workbook
// load from buffer
const workbook = new Excel . Workbook ( ) ;
await workbook . xlsx . load ( data ) ;
// ... use workbook
// using additional options
const workbook = new Excel . Workbook ( ) ;
await workbook . xlsx . load ( data , {
ignoreNodes : [
'dataValidations' // ignores the workbook's Data Validations
] ,
} ) ;
// ... use workbook
// write to a file
const workbook = createAndFillWorkbook ( ) ;
await workbook . xlsx . writeFile ( filename ) ;
// write to a stream
await workbook . xlsx . write ( stream ) ;
// write to a new buffer
const buffer = await workbook . xlsx . writeBuffer ( ) ;
CSVファイルを読み取るときにサポートされるオプション。
分野 | 必須 | タイプ | 説明 |
---|---|---|---|
DateFormats | N | 配列 | Dayjsの日付エンコード形式を指定します。 |
地図 | N | 関数 | Custom Array.prototype.map()データの処理のコールバック関数。 |
SheetName | N | 弦 | ワークシート名を指定します。 |
パーセロプション | N | 物体 | ParseOptions options @fast-csv/formatモジュールCSVデータを書き込む。 |
// read from a file
const workbook = new Excel . Workbook ( ) ;
const worksheet = await workbook . csv . readFile ( filename ) ;
// ... use workbook or worksheet
// read from a stream
const workbook = new Excel . Workbook ( ) ;
const worksheet = await workbook . csv . read ( stream ) ;
// ... use workbook or worksheet
// read from a file with European Dates
const workbook = new Excel . Workbook ( ) ;
const options = {
dateFormats : [ 'DD/MM/YYYY' ]
} ;
const worksheet = await workbook . csv . readFile ( filename , options ) ;
// ... use workbook or worksheet
// read from a file with custom value parsing
const workbook = new Excel . Workbook ( ) ;
const options = {
map ( value , index ) {
switch ( index ) {
case 0 :
// column 1 is string
return value ;
case 1 :
// column 2 is a date
return new Date ( value ) ;
case 2 :
// column 3 is JSON of a formula value
return JSON . parse ( value ) ;
default :
// the rest are numbers
return parseFloat ( value ) ;
}
} ,
// https://c2fo.github.io/fast-csv/docs/parsing/options
parserOptions : {
delimiter : 't' ,
quote : false ,
} ,
} ;
const worksheet = await workbook . csv . readFile ( filename , options ) ;
// ... use workbook or worksheet
CSVパーサーは、高速CSVを使用してCSVファイルを読み取ります。上記の書き込み関数に渡されたオプションのフォーマッタプティオンは、 @Fast-CSV/Formatモジュールに渡され、CSVデータを書き込みます。詳細については、高速CSV readme.mdを参照してください。
日付は、NPMモジュールDayjsを使用して解析されます。 DateFormatsアレイが提供されていない場合、次のDateFormatsが使用されます。
DayJS CustomParseFormatプラグインを参照してください。詳細については、DateFormatの構造方法をご覧ください。
CSVファイルに書き込むときにサポートされるオプション。
分野 | 必須 | タイプ | 説明 |
---|---|---|---|
日付形式 | N | 弦 | Dayjsの日付エンコード形式を指定します。 |
dateutc | N | ブール値 | Exceljsがdayjs.utc () 使用して解析日にタイムゾーンを変換するかどうかを指定します。 |
エンコーディング | N | 弦 | ファイルエンコード形式を指定します。 ( .writeFile にのみ適用されます。) |
IncludeEmptyRows | N | ブール値 | 空の行を書くことができるかどうかを指定します。 |
地図 | N | 関数 | custom array.prototype.map()行の値を処理するためのコールバック関数。 |
SheetName | N | 弦 | ワークシート名を指定します。 |
sheetid | N | 番号 | ワークシートIDを指定します。 |
フォーマッタオプション | N | 物体 | formatteroptions options @fast-csv/formatモジュールCSVデータを書き込む。 |
// write to a file
const workbook = createAndFillWorkbook ( ) ;
await workbook . csv . writeFile ( filename ) ;
// write to a stream
// Be careful that you need to provide sheetName or
// sheetId for correct import to csv.
await workbook . csv . write ( stream , { sheetName : 'Page name' } ) ;
// write to a file with European Date-Times
const workbook = new Excel . Workbook ( ) ;
const options = {
dateFormat : 'DD/MM/YYYY HH:mm:ss' ,
dateUTC : true , // use utc when rendering dates
} ;
await workbook . csv . writeFile ( filename , options ) ;
// write to a file with custom value formatting
const workbook = new Excel . Workbook ( ) ;
const options = {
map ( value , index ) {
switch ( index ) {
case 0 :
// column 1 is string
return value ;
case 1 :
// column 2 is a date
return dayjs ( value ) . format ( 'YYYY-MM-DD' ) ;
case 2 :
// column 3 is a formula, write just the result
return value . result ;
default :
// the rest are numbers
return value ;
}
} ,
// https://c2fo.github.io/fast-csv/docs/formatting/options
formatterOptions : {
delimiter : 't' ,
quote : false ,
} ,
} ;
await workbook . csv . writeFile ( filename , options ) ;
// write to a new buffer
const buffer = await workbook . csv . writeBuffer ( ) ;
CSVパーサーは、高速CSVを使用してCSVファイルを書き込みます。上記の書き込み関数に渡されたオプションのフォーマッタプティオンは、 @Fast-CSV/Formatモジュールに渡され、CSVデータを書き込みます。詳細については、高速CSV readme.mdを参照してください。
日付は、NPMモジュールDayjsを使用してフォーマットされます。 DateFormatが提供されていない場合は、Dayjs.iso_8601が使用されます。 CSVを書くときは、 dayjs.utc()
を使用してタイムゾーンを自動的に変換せずに、exceljsが日付を解析するために真実としてboolean dateutcを供給できます。
上記のファイルI/Oは、ファイルを書き込む前に、ワークブック全体がメモリに構築されることを要求します。便利ですが、必要なメモリの量により、ドキュメントのサイズを制限できます。
ストリーミングライター(またはリーダー)は、生成されたときにワークブックまたはワークシートデータを処理し、それをファイル形式に変換します。通常、最終的なメモリフットプリントと中間メモリフットプリントでさえ、ドキュメントバージョンよりもはるかにコンパクトであるため、これはメモリ上ではるかに効率的です。特に、行とセルオブジェクトがコミットされたら廃棄されると考える場合。
ストリーミングワークブックとワークシートへのインターフェイスは、いくつかの小さな実用的な違いを持つドキュメントバージョンとほぼ同じです。
行をコミットせずにワークブック全体を構築することが可能であることに注意してください。ワークブックがコミットされると、追加されたすべてのワークシート(コミットされていないすべての行を含む)が自動的にコミットされます。ただし、この場合、ドキュメントバージョンではほとんど得られませんでした。
ストリーミングXLSXワークブックライターは、exceljs.stream.xlsxネームスペースで入手できます。
コンストラクターは、次のフィールドでオプションのオプションオブジェクトを取得します。
分野 | 説明 |
---|---|
ストリーム | XLSXワークブックを書くための書き込み可能なストリームを指定します。 |
ファイル名 | ストリームが指定されていない場合、このフィールドは、XLSXワークブックを書き込むためのファイルへのパスを指定します。 |
USESHAREDSTRINGS | ワークブックで共有文字列を使用するかどうかを指定します。デフォルトはfalse です。 |
ユーザースタイル | ワークブックにスタイル情報を追加するかどうかを指定します。スタイルは、いくつかのパフォーマンスオーバーヘッドを追加できます。デフォルトはfalse です。 |
ジップ | Exceljsが内部的にArchiverに渡されるzipオプション。デフォルトはundefined です。 |
ストリームもファイル名もオプションで指定されていない場合、ワークブックライターはXLSXワークブックの内容をメモリに保存するStreamBufオブジェクトを作成します。プロパティWorkbook.StreamからアクセスできるこのStreamBufオブジェクトは、Stream.Read()によって直接バイトにアクセスするか、コンテンツを別のストリームにパイプするために使用できます。
// construct a streaming XLSX workbook writer with styles and shared strings
const options = {
filename : './streamed-workbook.xlsx' ,
useStyles : true ,
useSharedStrings : true
} ;
const workbook = new Excel . stream . xlsx . WorkbookWriter ( options ) ;
一般に、ストリーミングXLSXライターへのインターフェイスは、上記のドキュメントワークブック(およびワークシート)と同じです。実際、行、セル、スタイルのオブジェクトは同じです。
しかし、いくつかの違いがあります...
工事
上記のように、ワークブックライターは通常、コンストラクターで出力ストリームまたはファイルを指定する必要があります。
データのコミット
ワークシートの行の準備ができたら、行とコンテンツを解放できるようにコミットする必要があります。通常、これは各行が追加されると行われます...
worksheet . addRow ( {
id : i ,
name : theName ,
etc : someOtherDetail
} ) . commit ( ) ;
ワークシートライターが追加されたときに行をコミットしない理由は、セルを行間でマージできるようにするためです。
worksheet . mergeCells ( 'A1:B2' ) ;
worksheet . getCell ( 'A1' ) . value = 'I am merged' ;
worksheet . getCell ( 'C1' ) . value = 'I am not' ;
worksheet . getCell ( 'C2' ) . value = 'Neither am I' ;
worksheet . getRow ( 2 ) . commit ( ) ; // now rows 1 and two are committed.
各ワークシートが完了すると、コミットする必要があります。
// Finished adding data. Commit the worksheet
worksheet . commit ( ) ;
XLSXドキュメントを完成させるには、ワークブックをコミットする必要があります。ワークブックのワークシートがコミットされていない場合、ワークブックのコミットの一部として自動的にコミットされます。
// Finished the workbook.
await workbook . commit ( ) ;
// ... the stream has been written
ストリーミングXLSXワークブックリーダーは、exceljs.stream.xlsxネームスペースで利用できます。
コンストラクターは、必要な入力引数とオプションのオプション引数を取得します。
口論 | 説明 |
---|---|
入力(必須) | ファイルの名前またはXLSXワークブックを読み取る読み取り可能なストリームを指定します。 |
オプション(オプション) | 読み取り解析中に発生するイベントタイプを処理する方法を指定します。 |
options.entries | エントリ( 'emit' )を排出するかどうか( 'ignore' )かどうかを指定します。デフォルトは'emit' です。 |
options.sharedstrings | 共有された文字列( 'cache' )をキャッシュするかどうかを指定します。これは、それぞれのセル値に挿入するか、それらを放出する( 'emit' )または無視するか( 'ignore' )かどうかを指定します。共有文字列のインデックスへの参照。デフォルトは'cache' です。 |
options.hyperlinks | ハイパーリンク( 'cache' )をキャッシュするかどうかを指定します。これは、それらをそれぞれのセルに挿入するか、それらを放出するか( 'emit' )かどうか、またはそれらを無視するか( 'ignore' )かどうかを指定します。デフォルトは'cache' です。 |
options.styles | スタイルをキャッシュするか( 'cache' )かどうかを指定します。スタイルは、それぞれの行とセルに挿入するか、無視するか( 'ignore' )かどうかを指定します。デフォルトは'cache' です。 |
options.worksheets | ワークシート( 'emit' )を排出するかどうか( 'ignore' )かどうかを指定します。デフォルトは'emit' です。 |
const workbookReader = new ExcelJS . stream . xlsx . WorkbookReader ( './file.xlsx' ) ;
for await ( const worksheetReader of workbookReader ) {
for await ( const row of worksheetReader ) {
// ...
}
}
worksheetReader
パフォーマンスの理由で各行ではなく、各行の配列を個別に返すことに注意してください:nodejs/node#31979
ワークブックのイベントは、「ワークシート」、「共有ストリング」、「ハイパーリンク」です。ワークシートのイベントは「行」と「ハイパーリンク」です。
const options = {
sharedStrings : 'emit' ,
hyperlinks : 'emit' ,
worksheets : 'emit' ,
} ;
const workbook = new ExcelJS . stream . xlsx . WorkbookReader ( './file.xlsx' , options ) ;
for await ( const { eventType , value } of workbook . parse ( ) ) {
switch ( eventType ) {
case 'shared-strings' :
// value is the shared string
case 'worksheet' :
// value is the worksheetReader
case 'hyperlinks' :
// value is the hyperlinksReader
}
}
非同期反復を使用することを強くお勧めしますが、後方互換性のためにストリーミングインターフェイスも公開します。
const options = {
sharedStrings : 'emit' ,
hyperlinks : 'emit' ,
worksheets : 'emit' ,
} ;
const workbookReader = new ExcelJS . stream . xlsx . WorkbookReader ( './file.xlsx' , options ) ;
workbookReader . read ( ) ;
workbookReader . on ( 'worksheet' , worksheet => {
worksheet . on ( 'row' , row => {
} ) ;
} ) ;
workbookReader . on ( 'shared-strings' , sharedString => {
// ...
} ) ;
workbookReader . on ( 'hyperlinks' , hyperlinksReader => {
// ...
} ) ;
workbookReader . on ( 'end' , ( ) => {
// ...
} ) ;
workbookReader . on ( 'error' , ( err ) => {
// ...
} ) ;
このライブラリの一部は分離され、ブラウザ環境内で使用されるためにテストされています。
ワークブックリーダーとワークブックライターのストリーミングの性質により、これらは含まれていません。ドキュメントベースのワークブックのみを使用できます(詳細については、ワークブックの作成を参照してください)。
たとえば、ブラウザでExceljsを使用するコードは、GitHubリポジトリのSpec/Browserフォルダーをご覧ください。
次のファイルは事前にバンドルされ、DISTフォルダー内に含まれています。
次の値タイプがサポートされています。
列挙:Excel.ValueType.Null
ヌル値は値がないことを示し、通常、ファイルに書き込まれたときに保存されません(マージされたセルを除く)。セルから値を削除するために使用できます。
例えば
worksheet . getCell ( 'A1' ) . value = null ;
列挙:Excel.ValueType.Merge
マージセルは、その値が別の「マスター」セルにバインドされているものです。マージセルに割り当てると、マスターセルが変更されます。
列挙:Excel.ValueType.Number
数値。
例えば
worksheet . getCell ( 'A1' ) . value = 5 ;
worksheet . getCell ( 'A2' ) . value = 3.14159 ;
列挙:Excel.ValueType.String
単純なテキスト文字列。
例えば
worksheet . getCell ( 'A1' ) . value = 'Hello, World!' ;
列挙:excel.valueType.date
JavaScriptの日付タイプで表される日付値。
例えば
worksheet . getCell ( 'A1' ) . value = new Date ( 2017 , 2 , 15 ) ;
列挙:excel.valueetype.hyperlink
テキスト値とリンク値の両方を持つURL。
例えば
// link to web
worksheet . getCell ( 'A1' ) . value = {
text : 'www.mylink.com' ,
hyperlink : 'http://www.mylink.com' ,
tooltip : 'www.mylink.com'
} ;
// internal link
worksheet . getCell ( 'A1' ) . value = { text : 'Sheet2' , hyperlink : '#'Sheet2'!A1' } ;
列挙:Excel.ValueType.Formula
その場で値を計算するためのExcel式。セルタイプは式になりますが、セルは結果値から導出される効果的な値を持っている可能性があることに注意してください。
Exceljsは、結果を生成するために式を処理できないため、提供する必要があることに注意してください。
関数セマンティック名は英語で、セパレーターはコンマでなければならないことに注意してください。
例えば
worksheet . getCell ( 'A3' ) . value = { formula : 'A1+A2' , result : 7 } ;
worksheet . getCell ( 'A3' ) . value = { formula : 'SUM(A1,A2)' , result : 7 } ;
セルはまた、式と結果にアクセスするための利便性のゲッターもサポートします。
worksheet . getCell ( 'A3' ) . formula === 'A1+A2' ;
worksheet . getCell ( 'A3' ) . result === 7 ;
共有式は、ワークシートXML内のテキストの繰り返しを減らすことにより、XLSXドキュメントの圧縮を強化します。範囲内の左上セルは指定されたマスターであり、範囲内の他のすべてのセルが導出する式を保持します。他の「奴隷」セルは、式全体を再び再定義する代わりに、このマスターセルを参照できます。マスターフォーミュラは、通常のExcelファッションで奴隷セルに翻訳され、他のセルへの参照がマスターへの奴隷のオフセットに応じて、右に移動するようにすることに注意してください。例:マスターセルA2にA1を参照する式がある場合、セルB2がA2の式を共有する場合、B1を参照します。
マスターフォーミュラは、その範囲の奴隷セルとともにセルに割り当てることができます
worksheet . getCell ( 'A2' ) . value = {
formula : 'A1' ,
result : 10 ,
shareType : 'shared' ,
ref : 'A2:B3'
} ;
共有フォーミュラは、新しい値フォームを使用してセルに割り当てることができます。
worksheet . getCell ( 'B2' ) . value = { sharedFormula : 'A2' , result : 10 } ;
これは、セルB2がA2の式から導出される式であり、その結果は10であることを指定します。
フォーミュラコンビニエンスゲッターは、A2のフォーミュラをB2にあるべきものに変換します。
expect ( worksheet . getCell ( 'B2' ) . formula ) . to . equal ( 'B1' ) ;
共有式は、「fillformula」関数を使用してシートに割り当てることができます。
// set A1 to starting number
worksheet . getCell ( 'A1' ) . value = 1 ;
// fill A2 to A10 with ascending count starting from A1
worksheet . fillFormula ( 'A2:A10' , 'A1+1' , [ 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ) ;
fillformulaはコールバック関数を使用して、各セルの値を計算することもできます
// fill A2 to A100 with ascending count starting from A1
worksheet . fillFormula ( 'A2:A100' , 'A1+1' , ( row , col ) => row ) ;
実際の式セルと翻訳された式セルを区別するには、式ゲッターを使用します。
worksheet . getCell ( 'A3' ) . formulaType === Enums . FormulaType . Master ;
worksheet . getCell ( 'B3' ) . formulaType === Enums . FormulaType . Shared ;
フォーミュラタイプには次の値があります。
名前 | 価値 |
---|---|
enums.formulatype.none | 0 |
enums.formulatype.master | 1 |
enums.formulatype.shared | 2 |
Excelで共有式を表現する新しい方法は、配列式です。この形式では、マスターセルは、式に関連する情報を含む唯一のセルです。これには、適用されるセルの範囲とコピーされる式の範囲とともに、シェラタイプの「配列」が含まれています。残りの細胞は、通常の値を持つ通常のセルです。
注:配列式は、共有式の方法で翻訳されていません。したがって、マスターセルA2がA1を指す場合、スレーブセルB2もA1を参照します。
例えば
// assign array formula to A2:B3
worksheet . getCell ( 'A2' ) . value = {
formula : 'A1' ,
result : 10 ,
shareType : 'array' ,
ref : 'A2:B3'
} ;
// it may not be necessary to fill the rest of the values in the sheet
fillformula関数を使用して、配列式を埋めることもできます
// fill A2:B3 with array formula "A1"
worksheet . fillFormula ( 'A2:B3' , 'A1' , [ 1 , 1 , 1 , 1 ] , 'array' ) ;
列挙:Excel.ValueType.RichText
リッチ、スタイルのテキスト。
例えば
worksheet . getCell ( 'A1' ) . value = {
richText : [
{ text : 'This is ' } ,
{ font : { italic : true } , text : 'italic' } ,
]
} ;
列挙:excel.valueType.boolean
例えば
worksheet . getCell ( 'A1' ) . value = true ;
worksheet . getCell ( 'A2' ) . value = false ;
列挙:Excel.ValueType.Error
例えば
worksheet . getCell ( 'A1' ) . value = { error : '#N/A' } ;
worksheet . getCell ( 'A2' ) . value = { error : '#VALUE!' } ;
現在の有効なエラーテキスト値は次のとおりです。
名前 | 価値 |
---|---|
Excel.ErrorValue.NotApplable | #N/A |
Excel.ErrorValue.Ref | #REF! |
Excel.ErrorValue.Name | #名前? |
excel.errorvalue.divzero | #DIV/0! |
Excel.ErrorValue.Null | #null! |
Excel.ErrorValue.Value | #価値! |
excel.errorvalue.num | #NUM! |
バージョンを突破しないが残念ながら、時々、より大きな利益のためにいくつかのことを変えなければならない、一貫したインターフェイスを作成するためにあらゆる努力が払われています。
ワークシートへのコールバック関数の引数は、交換され、変更されました。それは関数(Rownumber、RowValues)でしたが、今では関数(Row、Rownumber)であり、アンダースコア(_.each)関数と行番号の優先順位に似ています。
この関数は、セル値のまばらな配列を返すことから、行オブジェクトの返却に変更されました。これにより、行プロパティにアクセスできるようになり、行スタイルの管理などが容易になります。
セル値のまばらな配列は、worksheet.getrow(rowthumber).valuesから引き続き利用できます。
Cell.Stylesに改名されたCell.Styles
ブルーバードからネイティブノードの約束に切り替えられた関数から返された約束は、ブルーバードの追加機能に依存している場合に通話コードを破ることができます。
これを軽減するために、次の2つの変更が0.3.0に追加されました。
Exceljsは、Promise Libraryの依存噴射をサポートするようになりました。モジュールに次のコードを含めることで、Bluebirdの約束を復元できます...
ExcelJS . config . setValue ( 'promise' , require ( 'bluebird' ) ) ;
注:特にBluebirdでExceljsをテストしました(最近までこれが使用されていたライブラリでした)。私が行ったテストからQで動作しません。
このモジュールを公開する前に、ソースコードは導入され、その他の方法で処理されてからDIST/フォルダーに配置されます。このREADMEは、ブラウザー化されたバンドルとマイニフィスバージョンの2つのファイルを識別します。 dist/フォルダーの他のコンテンツは、package.jsonで「メイン」として指定されたファイル以外の方法で保証されていません。
このLIBに含まれるテストスイートには、バンドルパッケージを検証するためにヘッドレスブラウザで実行された小さなスクリプトが含まれています。この執筆時点では、このテストはWindows Linuxサブシステムでうまく機能しないようです。
このため、ブラウザテストは、.disable-test-browserという名前のファイルの存在によって無効になる可能性があります
sudo apt-get install libfontconfig
スプライス操作がマージされたセルに影響を与える場合、マージグループは正しく移動しません
バージョン | 変更点 |
---|---|
0.0.9 |
|
0.1.0 |
|
0.1.1 |
|
0.1.2 |
|
0.1.3 |
|
0.1.5 |
|
0.1.6 |
|
0.1.8 |
|
0.1.9 |
|
0.1.10 |
|
0.1.11 |
|
0.2.0 |
|
0.2.2 |
|
0.2.3 |
|
0.2.4 |
|
0.2.6 |
|
0.2.7 |
|
0.2.8 |
|
0.2.9 |
|
0.2.10 |
|
0.2.11 |
|
0.2.12 |
|
0.2.13 |
|
0.2.14 |
|
0.2.15 |
|
0.2.16 |
|
0.2.17 |
|
0.2.18 |
|
0.2.19 |
|
0.2.20 |
|
0.2.21 |
|
0.2.22 |
|
0.2.23 |
|
0.2.24 |
|
0.2.25 |
|
0.2.26 |
|
0.2.27 |
|
0.2.28 |
|
0.2.29 |
|
0.2.30 |
|
0.2.31 |
|
0.2.32 |
|
0.2.33 |
|
0.2.34 |
|
0.2.35 |
|
0.2.36 |
|
0.2.37 |
|
0.2.38 |
|
0.2.39 |
|
0.2.42 |
|
0.2.43 |
|
0.2.44 |
|
0.2.45 |
|
0.2.46 |
|
0.3.0 |
|
0.3.1 |
|
0.4.0 |
|
0.4.1 |
|
0.4.2 |
|
0.4.3 |
|
0.4.4 |
|
0.4.6 |
|
0.4.9 |
|
0.4.10 |
|
0.4.11 |
|
0.4.12 |
|
0.4.13 |
|
0.4.14 |
|
0.5.0 |
|
0.5.1 |
|
0.6.0 |
|
0.6.1 |
|
0.6.2 |
|
0.7.0 |
|
0.7.1 |
|
0.8.0 |
|
0.8.1 |
|
0.8.2 |
|
0.8.3 |
|
0.8.4 |
|
0.8.5 |
|
0.9.0 |
|
0.9.1 |
|
1.0.0 |
|
1.0.1 |
|
1.0.2 |
|
1.1.0 |
|
1.1.1 |
|
1.1.2 |
|
1.1.3 |
|
1.2.0 |
|
1.2.1 |
|
1.3.0 |
|
1.4.2 |
|
1.4.3 |
|
1.4.5 |
|
1.4.6 |
|
1.4.7 |
|
1.4.8 |
|
1.4.9 |
|
1.4.10 |
|
1.4.12 |
|
1.4.13 |
|
1.5.0 |
|
1.5.1 |
|
1.6.0 |
|
1.6.1 |
|
1.6.2 |
|
1.6.3 |
|
1.7.0 |
|
1.8.0 |
|
1.9.0 |
|
1.9.1 |
|
1.10.0 |
|
1.11.0 |
|
1.12.0 |
|
1.12.1 |
|
1.12.2 |
|
1.13.0 |
|
1.14.0 |
|
1.15.0 |
|
2.0.1 | Major Version ChangeIntroducing async/await to ExcelJS! The new async and await features of JavaScript can help a lot to make code more readable and maintainable. To avoid confusion, particularly with returned promises from async functions, we have had to remove the Promise class configuration option and from v2 onwards ExcelJS will use native Promises. Since this is potentially a breaking change we're bumping the major version for this release. 変更点
|
3.0.0 | Another Major Version ChangeJavascript has changed a lot over the years, and so have the modules and technologies surrounding it. To this end, this major version of ExcelJS changes the structure of the publish artefacts: Main Export is now the Original Javascript SourcePrior to this release, the transpiled ES5 code was exported as the package main. From now on, the package main comes directly from the lib/ folder. This means a number of dependencies have been removed, including the polyfills. ES5 and Browserify are Still IncludedIn order to support those that still require ES5 ready code (eg as dependencies in web apps) the source code will still be transpiled and available in dist/es5. The ES5 code is also browserified and available as dist/exceljs.js or dist/exceljs.min.js See the section Importing for details |
3.1.0 |
|
3.2.0 |
|
3.3.0 |
|
3.3.1 |
|
3.4.0 |
|
3.5.0 |
|
3.6.0 |
|
3.6.1 |
|
3.7.0 |
|
3.8.0 |
|
3.8.1 |
|
3.8.2 |
|
3.9.0 |
|
3.10.0 |
|
4.0.1 |
|
4.1.0 |
|
4.1.1 |
|
4.2.0 |
|
4.2.1 |
|
4.3.0 |
|