Ai
1 Star 3 Fork 1

饺子大魔王/exceljs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.d.ts 47.08 KB
一键复制 编辑 原始数据 按行查看 历史
Raouf Albeni 提交于 2023-08-24 00:25 +08:00 . Fix: Sheet Properties Types (#2327)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024
declare interface Buffer extends ArrayBuffer { }
export declare enum RelationshipType {
None = 0,
OfficeDocument = 1,
Worksheet = 2,
CalcChain = 3,
SharedStrings = 4,
Styles = 5,
Theme = 6,
Hyperlink = 7
}
export declare enum DocumentType {
Xlsx = 1
}
export const enum PaperSize {
Legal = 5,
Executive = 7,
A4 = 9,
A5 = 11,
B5 = 13,
Envelope_10 = 20,
Envelope_DL = 27,
Envelope_C5 = 28,
Envelope_B5 = 34,
Envelope_Monarch = 37,
Double_Japan_Postcard_Rotated = 82,
K16_197x273_mm = 119,
}
export interface WorksheetViewCommon {
/**
* Sets the worksheet view's orientation to right-to-left, `false` by default
*/
rightToLeft: boolean;
/**
* The currently selected cell
*/
activeCell: string;
/**
* Shows or hides the ruler in Page Layout, `true` by default
*/
showRuler: boolean;
/**
* Shows or hides the row and column headers (e.g. A1, B1 at the top and 1,2,3 on the left,
* `true` by default
*/
showRowColHeaders: boolean;
/**
* Shows or hides the gridlines (shown for cells where borders have not been defined),
* `true` by default
*/
showGridLines: boolean;
/**
* Percentage zoom to use for the view, `100` by default
*/
zoomScale: number;
/**
* Normal zoom for the view, `100` by default
*/
zoomScaleNormal: number;
}
export interface WorksheetViewNormal {
/**
* Controls the view state
*/
state: 'normal';
/**
* Presentation style
*/
style: 'pageBreakPreview' | 'pageLayout';
}
export interface WorksheetViewFrozen {
/**
* Where a number of rows and columns to the top and left are frozen in place.
* Only the bottom left section will scroll
*/
state: 'frozen';
/**
* Presentation style
*/
style?: 'pageBreakPreview';
/**
* How many columns to freeze. To freeze rows only, set this to 0 or undefined
*/
xSplit?: number;
/**
* How many rows to freeze. To freeze columns only, set this to 0 or undefined
*/
ySplit?: number;
/**
* Which cell will be top-left in the bottom-right pane. Note: cannot be a frozen cell.
* Defaults to first unfrozen cell
*/
topLeftCell?: string;
}
export interface WorksheetViewSplit {
/**
* Where the view is split into 4 sections, each semi-independently scrollable.
*/
state: 'split';
/**
* Presentation style
*/
style?: 'pageBreakPreview' | 'pageLayout';
/**
* How many points from the left to place the splitter.
* To split vertically, set this to 0 or undefined
*/
xSplit?: number;
/**
* How many points from the top to place the splitter.
* To split horizontally, set this to 0 or undefined
*/
ySplit?: number;
/**
* Which cell will be top-left in the bottom-right pane
*/
topLeftCell?: string;
/**
* Which pane will be active
*/
activePane?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';
}
export type WorksheetView =
& WorksheetViewCommon
& (WorksheetViewNormal | WorksheetViewFrozen | WorksheetViewSplit);
export interface WorkbookView {
x: number;
y: number;
width: number;
height: number;
firstSheet: number;
activeTab: number;
visibility: string;
}
export type FillPatterns =
| 'none' | 'solid'
| 'darkVertical' | 'darkHorizontal' | 'darkGrid' | 'darkTrellis' | 'darkDown' | 'darkUp'
| 'lightVertical' | 'lightHorizontal' | 'lightGrid' | 'lightTrellis' | 'lightDown' | 'lightUp'
| 'darkGray' | 'mediumGray' | 'lightGray' | 'gray125' | 'gray0625';
export interface FillPattern {
type: 'pattern';
pattern: FillPatterns;
fgColor?: Partial<Color>;
bgColor?: Partial<Color>;
}
export interface GradientStop {
position: number;
color: Partial<Color>;
}
export interface FillGradientAngle {
type: 'gradient';
gradient: 'angle';
/**
* For 'angle' gradient, specifies the direction of the gradient. 0 is from the left to the right.
* Values from 1 - 359 rotates the direction clockwise
*/
degree: number;
/**
* Specifies the gradient colour sequence. Is an array of objects containing position and
* color starting with position 0 and ending with position 1.
* Intermediary positions may be used to specify other colours on the path.
*/
stops: GradientStop[];
}
export interface FillGradientPath {
type: 'gradient';
gradient: 'path';
/**
* For 'path' gradient. Specifies the relative coordinates for the start of the path.
* 'left' and 'top' values range from 0 to 1
*/
center: { left: number; top: number };
/**
* Specifies the gradient colour sequence. Is an array of objects containing position and
* color starting with position 0 and ending with position 1.
* Intermediary positions may be used to specify other colours on the path.
*/
stops: GradientStop[];
}
export type Fill = FillPattern | FillGradientAngle | FillGradientPath;
export interface Font {
name: string;
size: number;
family: number;
scheme: 'minor' | 'major' | 'none';
charset: number;
color: Partial<Color>;
bold: boolean;
italic: boolean;
underline: boolean | 'none' | 'single' | 'double' | 'singleAccounting' | 'doubleAccounting';
vertAlign: 'superscript' | 'subscript';
strike: boolean;
outline: boolean;
}
export type BorderStyle =
| 'thin' | 'dotted' | 'hair' | 'medium' | 'double' | 'thick' | 'dashDot'
| 'dashDotDot' | 'slantDashDot' | 'mediumDashed' | 'mediumDashDotDot' | 'mediumDashDot';
export interface Color {
/**
* Hex string for alpha-red-green-blue e.g. FF00FF00
*/
argb: string;
/**
* Choose a theme by index
*/
theme: number;
}
export interface Border {
style: BorderStyle;
color: Partial<Color>;
}
export interface BorderDiagonal extends Border {
up: boolean;
down: boolean;
}
export interface Borders {
top: Partial<Border>;
left: Partial<Border>;
bottom: Partial<Border>;
right: Partial<Border>;
diagonal: Partial<BorderDiagonal>;
}
export interface Margins {
top: number;
left: number;
bottom: number;
right: number;
header: number;
footer: number;
}
export declare enum ReadingOrder {
LeftToRight = 1,
RightToLeft = 2,
}
export interface Alignment {
horizontal: 'left' | 'center' | 'right' | 'fill' | 'justify' | 'centerContinuous' | 'distributed';
vertical: 'top' | 'middle' | 'bottom' | 'distributed' | 'justify';
wrapText: boolean;
shrinkToFit: boolean;
indent: number;
readingOrder: 'rtl' | 'ltr';
textRotation: number | 'vertical';
}
export interface Protection {
locked: boolean;
}
export interface Style {
numFmt: string;
font: Partial<Font>;
alignment: Partial<Alignment>;
protection: Partial<Protection>;
border: Partial<Borders>;
fill: Fill;
}
export type DataValidationOperator =
| 'between' | 'notBetween' | 'equal' | 'notEqual' | 'greaterThan' | 'lessThan'
| 'greaterThanOrEqual' | 'lessThanOrEqual';
export interface DataValidation {
type: 'list' | 'whole' | 'decimal' | 'date' | 'textLength' | 'custom';
formulae: any[];
allowBlank?: boolean;
operator?: DataValidationOperator;
error?: string;
errorTitle?: string;
errorStyle?: string;
prompt?: string;
promptTitle?: string;
showErrorMessage?: boolean;
showInputMessage?: boolean;
}
export declare enum ErrorValue {
NotApplicable = '#N/A',
Ref = '#REF!',
Name = '#NAME?',
DivZero = '#DIV/0!',
Null = '#NULL!',
Value = '#VALUE!',
Num = '#NUM!',
}
export interface CellErrorValue {
error: '#N/A' | '#REF!' | '#NAME?' | '#DIV/0!' | '#NULL!' | '#VALUE!' | '#NUM!';
}
export interface RichText {
text: string;
font?: Partial<Font>;
}
export interface CellRichTextValue {
richText: RichText[];
}
export interface CellHyperlinkValue {
text: string;
hyperlink: string;
}
export interface CellFormulaValue {
formula: string;
result?: number | string | Date | { error: CellErrorValue };
date1904: boolean;
}
export interface CellSharedFormulaValue {
sharedFormula: string;
readonly formula?: string;
result?: number | string | Date | { error: CellErrorValue };
date1904: boolean;
}
export declare enum ValueType {
Null = 0,
Merge = 1,
Number = 2,
String = 3,
Date = 4,
Hyperlink = 5,
Formula = 6,
SharedString = 7,
RichText = 8,
Boolean = 9,
Error = 10
}
export declare enum FormulaType {
None = 0,
Master = 1,
Shared = 2
}
export type CellValue =
| null | number | string | boolean | Date | undefined
| CellErrorValue
| CellRichTextValue | CellHyperlinkValue
| CellFormulaValue | CellSharedFormulaValue;
export interface CommentMargins {
insetmode: 'auto' | 'custom';
inset: Number[];
}
export interface CommentProtection {
locked: 'True' | 'False';
lockText: 'True' | 'False';
}
export type CommentEditAs = 'twoCells' | 'oneCells' | 'absolute';
export interface Comment {
texts?: RichText[];
margins?: Partial<CommentMargins>;
protection?: Partial<CommentProtection>;
editAs?: CommentEditAs;
}
export interface CellModel {
address: Address;
style: Style;
type: ValueType;
text?: string;
hyperlink?: string;
value?: CellValue;
master: string;
formula?: string;
sharedFormula?: string;
result?: string | number | any;
comment: Comment;
}
export interface Cell extends Style, Address {
readonly worksheet: Worksheet;
readonly workbook: Workbook;
readonly effectiveType: ValueType;
readonly isMerged: boolean;
readonly master: Cell;
readonly isHyperlink: boolean;
readonly hyperlink: string; // todo
readonly text: string;
readonly fullAddress: {
sheetName: string;
address: string;
row: number;
col: number;
};
model: CellModel;
/**
* Assign (or get) a name for a cell (will overwrite any other names that cell had)
*/
name: string;
/**
* Assign (or get) an array of names for a cell (cells can have more than one name)
*/
names: string[];
/**
* Cells can define what values are valid or not and provide
* prompting to the user to help guide them.
*/
dataValidation: DataValidation;
/**
* Value of the cell
*/
value: CellValue;
/**
* comment of the cell
*/
note: string | Comment;
/**
* convenience getter to access the formula
*/
readonly formula: string;
/**
* convenience getter to access the formula result
*/
readonly result: number | string | Date;
/**
* The type of the cell's value
*/
readonly type: ValueType;
/**
* The type of the cell's formula
*/
readonly formulaType: FormulaType;
/**
* The styles of the cell
*/
style: Partial<Style>;
addName(name: string): void;
/**
* Remove a name from a cell
*/
removeName(name: string): void;
removeAllNames(): void;
destroy(): void;
toCsvString(): string;
release(): void;
addMergeRef(): void;
releaseMergeRef(): void;
merge(master: Cell, ignoreStyle?: boolean): void;
unmerge(): void;
isMergedTo(master: Cell): boolean;
toString(): string;
}
export interface RowModel {
cells: CellModel[];
number: number;
min: number;
max: number;
height: number;
style: Partial<Style>;
hidden: boolean;
outlineLevel: number;
collapsed: boolean;
}
export interface Row extends Style {
readonly worksheet: Worksheet;
readonly hasValues: boolean;
readonly dimensions: number;
model: Partial<RowModel> | null;
/**
* Set a specific row height
*/
height: number;
/**
* Make row hidden
*/
hidden: boolean;
/**
* Get a row as a sparse array
*/
// readonly values: CellValue[];
values: CellValue[] | { [key: string]: CellValue };
/**
* Set an outline level for rows
*/
outlineLevel?: number;
/**
* The row number
*/
readonly number: number;
/**
* Indicate the collapsed state based on outlineLevel
*/
readonly collapsed: boolean;
/**
* Number of cells including empty ones
*/
readonly cellCount: number;
/**
* Number of non-empty cells
*/
readonly actualCellCount: number;
/**
* Get cell by number, column letter or column key
*/
getCell(indexOrKey: number | string): Cell;
findCell(colNumber: number): Cell | undefined;
getCellEx(address: Address): Cell;
/**
* Iterate over all non-null cells in a row
*/
eachCell(callback: (cell: Cell, colNumber: number) => void): void;
/**
* Iterate over all cells in a row (including empty cells)
*/
eachCell(opt: { includeEmpty: boolean }, callback: (cell: Cell, colNumber: number) => void): void;
/**
* Cut one or more cells (cells to the right are shifted left)
*
* Note: this operation will not affect other rows
*/
splice(start: number, count: number, ...insert: any[]): void;
/**
* Commit a completed row to stream
*/
commit(): void;
destroy(): void;
addPageBreak(lft?: number, rght?: number): void;
}
export interface Column {
/**
* Can be a string to set one row high header or an array to set multi-row high header
*/
header?: string | string[];
/**
* The name of the properties associated with this column in each row
*/
key?: string;
/**
* The width of the column
*/
width?: number;
/**
* Set an outline level for columns
*/
outlineLevel: number;
/**
* Hides the column
*/
hidden: boolean;
/**
* Styles applied to the column
*/
style: Partial<Style>;
/**
* The cell values in the column
*/
values: ReadonlyArray<CellValue>;
/**
* Column letter key
*/
readonly letter: string;
readonly number: number;
readonly worksheet: Worksheet;
readonly isCustomWidth: boolean;
readonly headers: string[];
readonly isDefault: boolean;
readonly headerCount: number;
/**
* Below properties read from style
*/
border?: Partial<Borders>;
fill?: Fill;
numFmt?: string;
font?: Partial<Font>;
alignment?: Partial<Alignment>;
protection?: Partial<Protection>;
toString(): string
equivalentTo(other: Column): boolean
/**
* indicate the collapsed state based on outlineLevel
*/
readonly collapsed: boolean;
/**
* Iterate over all current cells in this column
*/
eachCell(callback: (cell: Cell, rowNumber: number) => void): void;
/**
* Iterate over all current cells in this column including empty cells
*/
eachCell(opt: { includeEmpty: boolean }, callback: (cell: Cell, rowNumber: number) => void): void;
defn: any; //todo
}
export interface PageSetup {
/**
* Whitespace on the borders of the page. Units are inches.
*/
margins: Margins;
/**
* Orientation of the page - i.e. taller (`'portrait'`) or wider (`'landscape'`).
*
* `'portrait'` by default
*/
orientation: 'portrait' | 'landscape';
/**
* Horizontal Dots per Inch. Default value is 4294967295
*/
horizontalDpi: number;
/**
* Vertical Dots per Inch. Default value is 4294967295
*/
verticalDpi: number;
/**
* Whether to use fitToWidth and fitToHeight or scale settings.
*
* Default is based on presence of these settings in the pageSetup object - if both are present,
* scale wins (i.e. default will be false)
*/
fitToPage: boolean;
/**
* How many pages wide the sheet should print on to. Active when fitToPage is true
*
* Default is 1
*/
fitToWidth: number;
/**
* How many pages high the sheet should print on to. Active when fitToPage is true
*
* Default is 1
*/
fitToHeight: number;
/**
* Percentage value to increase or reduce the size of the print. Active when fitToPage is false
*
* Default is 100
*/
scale: number;
/**
* Which order to print the pages.
*
* Default is `downThenOver`
*/
pageOrder: 'downThenOver' | 'overThenDown';
/**
* Print without colour
*
* false by default
*/
blackAndWhite: boolean;
/**
* Print with less quality (and ink)
*
* false by default
*/
draft: boolean;
/**
* Where to place comments
*
* Default is `None`
*/
cellComments: 'atEnd' | 'asDisplayed' | 'None';
/**
* Where to show errors
*
* Default is `displayed`
*/
errors: 'dash' | 'blank' | 'NA' | 'displayed';
/**
* What paper size to use (see below)
*
* | Name | Value |
* | ----------------------------- | --------- |
* | Letter | `undefined` |
* | Legal | `5` |
* | Executive | `7` |
* | A4 | `9` |
* | A5 | `11` |
* | B5 (JIS) | `13` |
* | Envelope #10 | `20` |
* | Envelope DL | `27` |
* | Envelope C5 | `28` |
* | Envelope B5 | `34` |
* | Envelope Monarch | `37` |
* | Double Japan Postcard Rotated | `82` |
* | 16K 197x273 mm | `119` |
*/
paperSize: PaperSize;
/**
* Whether to show the row numbers and column letters, `false` by default
*/
showRowColHeaders: boolean;
/**
* Whether to show grid lines, `false` by default
*/
showGridLines: boolean;
/**
* Which number to use for the first page
*/
firstPageNumber: number;
/**
* Whether to center the sheet data horizontally, `false` by default
*/
horizontalCentered: boolean;
/**
* Whether to center the sheet data vertically, `false` by default
*/
verticalCentered: boolean;
/**
* Set Print Area for a sheet, e.g. `'A1:G20'`
*/
printArea: string;
/**
* Repeat specific rows on every printed page, e.g. `'1:3'`
*/
printTitlesRow: string;
/**
* Repeat specific columns on every printed page, e.g. `'A:C'`
*/
printTitlesColumn: string;
}
export interface HeaderFooter {
/**
* Set the value of differentFirst as true, which indicates that headers/footers for first page are different from the other pages, `false` by default
*/
differentFirst: boolean,
/**
* Set the value of differentOddEven as true, which indicates that headers/footers for odd and even pages are different, `false` by default
*/
differentOddEven: boolean,
/**
* Set header string for odd pages, could format the string and `null` by default
*/
oddHeader: string,
/**
* Set footer string for odd pages, could format the string and `null` by default
*/
oddFooter: string,
/**
* Set header string for even pages, could format the string and `null` by default
*/
evenHeader: string,
/**
* Set footer string for even pages, could format the string and `null` by default
*/
evenFooter: string,
/**
* Set header string for the first page, could format the string and `null` by default
*/
firstHeader: string,
/**
* Set footer string for the first page, could format the string and `null` by default
*/
firstFooter: string
}
export type AutoFilter = string | {
from: string | { row: number; column: number };
to: string | { row: number; column: number };
};
export interface WorksheetProtection {
objects: boolean;
scenarios: boolean;
selectLockedCells: boolean;
selectUnlockedCells: boolean;
formatCells: boolean;
formatColumns: boolean;
formatRows: boolean;
insertColumns: boolean;
insertRows: boolean;
insertHyperlinks: boolean;
deleteColumns: boolean;
deleteRows: boolean;
sort: boolean;
autoFilter: boolean;
pivotTables: boolean;
}
export interface Image {
extension: 'jpeg' | 'png' | 'gif';
base64?: string;
filename?: string;
buffer?: Buffer;
}
export interface IAnchor {
col: number;
row: number;
nativeCol: number;
nativeRow: number;
nativeColOff: number;
nativeRowOff: number;
}
export class Anchor implements IAnchor {
col: number;
nativeCol: number;
nativeColOff: number;
nativeRow: number;
nativeRowOff: number;
row: number;
private readonly colWidth: number;
private readonly rowHeight: number;
worksheet: Worksheet;
constructor(model?: IAnchor | object);
}
export interface ImageRange {
tl: Anchor;
br: Anchor;
}
export interface ImagePosition {
tl: { col: number; row: number };
ext: { width: number; height: number };
}
export interface ImageHyperlinkValue {
hyperlink: string;
tooltip?: string;
}
export interface Range extends Location {
sheetName: string;
tl: string;
$t$l: string;
br: string;
$b$r: string;
range: string;
$range: string;
shortRange: string;
$shortRange: string;
count: number;
decode(): void;
decode(v: Range): void;
decode(v: string): void;
decode(v: Location): void;
decode(top: number, left: number, bottom: number, right: number, sheetName?: string): void;
decode(tl: string, br: string, sheetName?: string): void;
decode(v: [string, string]): void;
decode(v: [string, string, string]): void;
decode(v: [number, number, number, number]): void;
decode(v: [number, number, number, number, string]): void;
expand(top: number, left: number, bottom: number, right: number): void;
expandRow(row: Row): void;
expandToAddress(addressStr: string): void;
toString(): string;
intersects(other: Range): boolean;
contains(addressStr: string): boolean;
containsEx(address: Partial<{
sheetName: string;
row: number;
col: number;
}>): boolean;
}
export interface RowBreak {
id: number;
max: number;
min: number;
man: number;
}
export interface WorksheetModel {
id: number;
name: string;
// dataValidations: this.dataValidations.model,
properties: WorksheetProperties;
pageSetup: Partial<PageSetup>;
headerFooter: Partial<HeaderFooter>;
rowBreaks: RowBreak[];
views: WorksheetView[];
autoFilter: AutoFilter;
media: Media[];
}
export type WorksheetState = 'visible' | 'hidden' | 'veryHidden';
export type CellIsOperators = 'equal' | 'greaterThan' | 'lessThan' | 'between';
export type ContainsTextOperators = 'containsText' | 'containsBlanks' | 'notContainsBlanks' | 'containsErrors' | 'notContainsErrors';
export type TimePeriodTypes = 'lastWeek' | 'thisWeek' | 'nextWeek' | 'yesterday' | 'today' | 'tomorrow' | 'last7Days' | 'lastMonth'
| 'thisMonth' | 'nextMonth';
export type IconSetTypes = '5Arrows' | '5ArrowsGray' | '5Boxes' | '5Quarters' | '5Rating' | '4Arrows' | '4ArrowsGray'
| '4Rating' | '4RedToBlack' | '4TrafficLights' | 'NoIcons' | '3Arrows' | '3ArrowsGray' | '3Flags' | '3Signs'
| '3Stars' | '3Symbols' | '3Symbols2' | '3TrafficLights1' | '3TrafficLights2' | '3Triangles';
export type CfvoTypes = 'percentile' | 'percent' | 'num' | 'min' | 'max' | 'formula' | 'autoMin' | 'autoMax';
export interface Cvfo {
type: CfvoTypes;
value?: number;
}
export interface ConditionalFormattingBaseRule {
priority: number;
style?: Partial<Style>;
}
export interface ExpressionRuleType extends ConditionalFormattingBaseRule {
type: 'expression';
formulae?: any[];
}
export interface CellIsRuleType extends ConditionalFormattingBaseRule {
type: 'cellIs';
formulae?: any[];
operator?: CellIsOperators;
}
export interface Top10RuleType extends ConditionalFormattingBaseRule {
type: 'top10';
rank: number;
percent: boolean;
bottom: boolean;
}
export interface AboveAverageRuleType extends ConditionalFormattingBaseRule {
type: 'aboveAverage';
aboveAverage: boolean;
}
export interface ColorScaleRuleType extends ConditionalFormattingBaseRule {
type: 'colorScale';
cfvo?: Cvfo[];
color?: Partial<Color>[];
}
export interface IconSetRuleType extends ConditionalFormattingBaseRule {
type: 'iconSet';
showValue?: boolean;
reverse?: boolean;
custom?: boolean;
iconSet?: IconSetTypes;
cfvo?: Cvfo[];
}
export interface ContainsTextRuleType extends ConditionalFormattingBaseRule {
type: 'containsText';
operator?: ContainsTextOperators;
text?: string;
}
export interface TimePeriodRuleType extends ConditionalFormattingBaseRule {
type: 'timePeriod';
timePeriod?: TimePeriodTypes;
}
export interface DataBarRuleType extends ConditionalFormattingBaseRule {
type: 'dataBar';
gradient?: boolean;
minLength?: number;
maxLength?: number;
showValue?: boolean;
border?: boolean;
negativeBarColorSameAsPositive?: boolean;
negativeBarBorderColorSameAsPositive?: boolean;
axisPosition?: 'auto' | 'middle' | 'none';
direction?: 'context' | 'leftToRight' | 'rightToLeft';
cfvo?: Cvfo[];
}
export type ConditionalFormattingRule = ExpressionRuleType | CellIsRuleType | Top10RuleType | AboveAverageRuleType | ColorScaleRuleType | IconSetRuleType
| ContainsTextRuleType | TimePeriodRuleType | DataBarRuleType;
export type RowValues = CellValue[] | { [key: string]: CellValue } | undefined | null;
export interface ConditionalFormattingOptions {
ref: string;
rules: ConditionalFormattingRule[];
}
export interface Worksheet {
readonly id: number;
name: string;
readonly workbook: Workbook;
readonly hasMerges: boolean;
readonly dimensions: Range;
/**
* Contains information related to how a worksheet is printed
*/
pageSetup: Partial<PageSetup>;
/**
* Worksheet Header and Footer
*/
headerFooter: Partial<HeaderFooter>;
/**
* Worksheet State
*/
state: WorksheetState;
/**
* Worksheet Properties
*/
properties: WorksheetProperties;
/**
* Open panes representing the sheet
*/
views: Array<Partial<WorksheetView>>;
/**
* Apply an auto filter to your worksheet.
*/
autoFilter?: AutoFilter;
destroy(): void;
/**
* A count of the number of rows that have values. If a mid-document row is empty, it will not be included in the count.
*/
readonly actualRowCount: number;
/**
* The total column size of the document. Equal to the maximum cell count from all of the rows
*/
readonly columnCount: number;
/**
* Get the last column in a worksheet
*/
readonly lastColumn: Column;
/**
* A count of the number of columns that have values.
*/
readonly actualColumnCount: number;
getColumnKey(key: string): Column;
setColumnKey(key: string, value: Column): void;
deleteColumnKey(key: string): void;
eachColumnKey(callback: (col: Column, index: number) => void): void;
/**
* Access an individual columns by key, letter and 1-based column number
*/
getColumn(indexOrKey: number | string): Column;
/**
* Cut one or more columns (columns to the right are shifted left)
* and optionally insert more
*
* If column properties have been definde, they will be cut or moved accordingly
*
* Known Issue: If a splice causes any merged cells to move, the results may be unpredictable
*
* Also: If the worksheet has more rows than values in the colulmn inserts,
* the rows will still be shifted as if the values existed
*/
spliceColumns(start: number, count: number, ...insert: any[][]): void;
/**
* 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.
*/
columns: Array<Partial<Column>>;
/**
* The total row size of the document. Equal to the row number of the last row that has values.
*/
readonly rowCount: number;
/**
* Get the last editable row in a worksheet (or undefined if there are none)
*/
readonly lastRow: Row | undefined;
/**
* Tries to find and return row for row no, else undefined
*
* @param row The 1-index row number
*/
findRow(row: number): Row | undefined;
/**
* Tries to find and return rows for row no start and length, else undefined
*
* @param start The 1-index starting row number
* @param length The length of the expected array
*/
findRows(start: number, length: number): Row[] | undefined;
/**
* Cut one or more rows (rows below are shifted up)
* and optionally insert more
*
* Known Issue: If a splice causes any merged cells to move, the results may be unpredictable
*/
spliceRows(start: number, count: number, ...insert: any[][]): void;
/**
* Add a couple of Rows by key-value, after the last current row, using the column keys,
* or add a row by contiguous Array (assign to columns A, B & C)
*/
addRow(data: any[] | any, style?: string): Row;
/**
* Add multiple rows by providing an array of arrays or key-value pairs
*/
addRows(rows: any[], style?: string): Row[];
/**
* Insert a Row by key-value, at the position (shifiting down all rows from position),
* using the column keys, or add a row by contiguous Array (assign to columns A, B & C)
*/
insertRow(pos: number, value: any[] | any, style?: string): Row;
/**
* Insert multiple rows at position (shifiting down all rows from position)
* by providing an array of arrays or key-value pairs
*/
insertRows(pos: number, values: any[], style?: string): Row[];
/**
* Duplicate rows and insert new rows
*/
duplicateRow(rowNum: number, count: number, insert: boolean): void;
/**
* Get or create row by 1-based index
*/
getRow(index: number): Row;
/**
* Get or create rows by 1-based index
*/
getRows(start: number, length: number): Row[] | undefined;
/**
* Iterate over all rows that have values in a worksheet
*/
eachRow(callback: (row: Row, rowNumber: number) => void): void;
/**
* Iterate over all rows (including empty rows) in a worksheet
*/
eachRow(opt: { includeEmpty: boolean }, callback: (row: Row, rowNumber: number) => void): void;
/**
* return all rows as sparse array
*/
getSheetValues(): RowValues[];
/**
* returns the cell at [r,c] or address given by r. If not found, return undefined
*/
findCell(r: number | string, c: number | string): Cell | undefined;
/**
* Get or create cell
*/
getCell(r: number | string, c?: number | string): Cell;
/**
* Merge cells, either:
*
* tlbr string, e.g. `'A4:B5'`
*
* tl string, br string, e.g. `'G10', 'H11'`
*
* t, l, b, r numbers, e.g. `10,11,12,13`
*/
mergeCells(): void;
mergeCells(v: Range): void;
mergeCells(v: string): void;
mergeCells(v: Location): void;
mergeCells(top: number, left: number, bottom: number, right: number, sheetName?: string): void;
mergeCells(tl: string, br: string, sheetName?: string): void;
mergeCells(v: [string, string]): void;
mergeCells(v: [string, string, string]): void;
mergeCells(v: [number, number, number, number]): void;
mergeCells(v: [number, number, number, number, string]): void;
mergeCellsWithoutStyle(): void;
mergeCellsWithoutStyle(v: Range): void;
mergeCellsWithoutStyle(v: string): void;
mergeCellsWithoutStyle(v: Location): void;
mergeCellsWithoutStyle(top: number, left: number, bottom: number, right: number, sheetName?: string): void;
mergeCellsWithoutStyle(tl: string, br: string, sheetName?: string): void;
mergeCellsWithoutStyle(v: [string, string]): void;
mergeCellsWithoutStyle(v: [string, string, string]): void;
mergeCellsWithoutStyle(v: [number, number, number, number]): void;
mergeCellsWithoutStyle(v: [number, number, number, number, string]): void;
/**
* unmerging the cells breaks the style links
*/
unMergeCells(): void;
unMergeCells(v: Range): void;
unMergeCells(v: string): void;
unMergeCells(v: Location): void;
unMergeCells(top: number, left: number, bottom: number, right: number, sheetName?: string): void;
unMergeCells(tl: string, br: string, sheetName?: string): void;
unMergeCells(v: [string, string]): void;
unMergeCells(v: [string, string, string]): void;
unMergeCells(v: [number, number, number, number]): void;
unMergeCells(v: [number, number, number, number, string]): void;
fillFormula(range: Range | string | Location, formula: string, results?: ((r: number, c: number) => string | number) | number[] | number[][]): void;
/**
* Using the image id from `Workbook.addImage`, set the background to the worksheet
*/
addBackgroundImage(imageId: number): void;
getBackgroundImageId(): string;
/**
* Using the image id from `Workbook.addImage`,
* embed an image within the worksheet to cover a range
*/
addImage(imageId: number, range: string | { editAs?: string; } & ImageRange & { hyperlinks?: ImageHyperlinkValue } | { editAs?: string; } & ImagePosition & { hyperlinks?: ImageHyperlinkValue }): void;
getImages(): Array<{
type: 'image',
imageId: string;
range: ImageRange;
}>;
commit(): void;
model: WorksheetModel;
/**
* Worksheet protection
*/
protect(password: string, options: Partial<WorksheetProtection>): Promise<void>;
unprotect(): void;
/**
* Add a new table and return a reference to it
*/
addTable(tableProperties: TableProperties): Table;
/**
* fetch table by name or id
*/
getTable(name: string): Table;
/**
* delete table by name or id
*/
removeTable(name: string): void;
/**
* fetch table
*/
getTables(): [Table, void][];
/**
* add conditionalFormattingOptions
*/
addConditionalFormatting(cf: ConditionalFormattingOptions): void;
/**
* delete conditionalFormattingOptions
*/
removeConditionalFormatting(filter: any): void;
}
export interface CalculationProperties {
/**
* Whether the application shall perform a full recalculation when the workbook is opened
*/
fullCalcOnLoad: boolean
}
export interface WorksheetProperties {
/**
* Color of the tab
*/
tabColor: Partial<Color>;
/**
* The worksheet column outline level (default: 0)
*/
outlineLevelCol: number;
/**
* The worksheet row outline level (default: 0)
*/
outlineLevelRow: number;
/**
* The outline properties which controls how it will summarize rows and columns
*/
outlineProperties: {
summaryBelow: boolean,
summaryRight: boolean,
};
/**
* Default row height (default: 15)
*/
defaultRowHeight: number;
/**
* Default column width (optional)
*/
defaultColWidth?: number;
/**
* default: 55
*/
dyDescent: number;
showGridLines: boolean;
}
export interface AddWorksheetOptions {
properties: Partial<WorksheetProperties>;
pageSetup: Partial<PageSetup>;
headerFooter: Partial<HeaderFooter>;
views: Array<Partial<WorksheetView>>;
state: WorksheetState;
}
export interface WorkbookProperties {
/**
* Set workbook dates to 1904 date system
*/
date1904: boolean;
}
export interface JSZipGeneratorOptions {
/**
* @default DEFLATE
*/
compression: 'STORE' | 'DEFLATE';
compressionOptions: null | {
/**
* @default 6
*/
level: number;
};
}
export interface XlsxWriteOptions extends stream.xlsx.WorkbookWriterOptions {
/**
* The option passed to JsZip#generateAsync(options)
*/
zip: Partial<JSZipGeneratorOptions>;
}
export interface Xlsx {
/**
* read from a file
*/
readFile(path: string): Promise<Workbook>;
/**
* read from a stream
* @param stream
*/
read(stream: import('stream').Stream): Promise<Workbook>;
/**
* load from an array buffer
* @param buffer
*/
load(buffer: Buffer): Promise<Workbook>;
/**
* write to a buffer
*/
writeBuffer(options?: Partial<XlsxWriteOptions>): Promise<Buffer>;
/**
* write to a file
*/
writeFile(path: string, options?: Partial<XlsxWriteOptions>): Promise<void>;
/**
* write to a stream
*/
write(stream: import('stream').Stream, options?: Partial<XlsxWriteOptions>): Promise<void>;
}
// https://c2fo.io/fast-csv/docs/parsing/options
type HeaderArray = (string | undefined | null)[];
type HeaderTransformFunction = (headers: HeaderArray) => HeaderArray;
export interface FastCsvParserOptionsArgs {
objectMode: boolean;
delimiter: string;
quote: string | null;
escape: string;
headers: boolean | HeaderTransformFunction | HeaderArray;
renameHeaders: boolean;
ignoreEmpty: boolean;
comment: string;
strictColumnHandling: boolean;
discardUnmappedColumns: boolean;
trim: boolean;
ltrim: boolean;
rtrim: boolean;
encoding: string;
maxRows: number;
skipLines: number;
skipRows: number;
}
interface QuoteColumnMap {
[s: string]: boolean;
}
declare type QuoteColumns = boolean | boolean[] | QuoteColumnMap;
interface RowMap {
[key: string]: any;
}
declare type RowHashArray = [string, any][];
declare type RowArray = string[];
declare type Rows = RowArray | RowMap | RowHashArray;
declare type RowTransformCallback = (error?: Error | null, row?: Rows) => void;
interface RowTransformFunction {
(row: Rows, callback: RowTransformCallback): void;
(row: Rows): Rows;
}
// https://c2fo.io/fast-csv/docs/formatting/options/
export interface FastCsvFormatterOptionsArgs {
objectMode: boolean;
delimiter: string;
rowDelimiter: string;
quote: string | boolean;
escape: string;
quoteColumns: QuoteColumns;
quoteHeaders: QuoteColumns;
headers: null | boolean | string[];
includeEndRowDelimiter: boolean;
writeBOM: boolean;
transform: RowTransformFunction;
alwaysWriteHeaders: boolean;
}
export interface CsvReadOptions {
dateFormats: string[];
map(value: any, index: number): any;
sheetName: string;
parserOptions: Partial<FastCsvParserOptionsArgs>;
}
export interface CsvWriteOptions {
dateFormat: string;
dateUTC: boolean;
sheetName: string;
sheetId: number;
encoding: string;
map(value: any, index: number): any;
includeEmptyRows: boolean;
formatterOptions: Partial<FastCsvFormatterOptionsArgs>;
}
export interface Csv {
/**
* read from a file
*/
readFile(path: string, options?: Partial<CsvReadOptions>): Promise<Worksheet>;
/**
* read from a stream
*/
read(stream: import('stream').Stream, options?: Partial<CsvReadOptions>): Promise<Worksheet>;
/**
* Create input stream for reading
*/
createInputStream(options?: Partial<CsvReadOptions>): import('events').EventEmitter;
/**
* write to a buffer
*/
writeBuffer(options?: Partial<CsvWriteOptions>): Promise<Buffer>;
/**
* write to a file
*/
writeFile(path: string, options?: Partial<CsvWriteOptions>): Promise<void>;
/**
* write to a stream
*/
write(stream: import('stream').Stream, options?: Partial<CsvWriteOptions>): Promise<void>;
}
export interface Media {
type: string; // image,background
name: string;
extension: string;
buffer: Buffer;
}
export interface Address {
sheetName?: string;
address: string;
col: string;
row: string;
$col$row: string;
}
export interface Location {
top: number;
left: number;
bottom: number;
right: number;
}
export interface CellMatrix {
addCell(addressStr: string): void;
getCell(addressStr: string): Cell;
findCell(addressStr: string): Cell | undefined;
findCellAt(sheetName: string, rowNumber: number, colNumber: number): Cell | undefined;
addCellEx(address: string | Location): void;
getCellEx(address: string | Location): Cell;
findCellEx(address: string | Location, create: boolean): Cell | undefined;
getCellAt(sheetName: string, rowNumber: number, colNumber: number): Cell;
removeCellEx(address: string | Location): void;
forEach(callback: (cell: Cell) => void): void;
map<T>(callback: (cell: Cell) => T): T[];
findSheet(address: string | Location, create: boolean): Cell[] | undefined;
findSheetRow(sheet: Cell[][], address: string | Location, create: boolean): Row | undefined;
findRowCell(row: any[], address: Address, create: boolean): Cell | undefined;
}
export interface DefinedNamesRanges {
name: string;
ranges: string[];
}
export type DefinedNamesModel = DefinedNamesRanges[];
export interface DefinedNames {
getMatrix(name: string): CellMatrix;
// add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2
add(locStr: string, name?: string): void;
addEx(location: string | Location, name: string): Cell;
remove(locStr: string | Location, name: string): void;
removeEx(location: string | Location, name: string): void;
removeAllNames(location: string | Location): void;
forEach(callback: (name: string, cell: Cell) => void): void;
// get all the names of a cell
getNames(addressStr: string): string[];
getNamesEx(address: string): string[];
getRanges(name: string, matrix?: CellMatrix): DefinedNamesRanges;
model: DefinedNamesModel;
}
export interface WorkbookModel {
creator: string;
lastModifiedBy: string;
lastPrinted: Date;
created: Date;
modified: Date;
properties: WorkbookProperties;
worksheets: Worksheet[];
sheets: WorksheetModel[];
definedNames: DefinedNamesModel;
views: WorkbookView[];
company: string;
manager: string;
title: string;
subject: string;
keywords: string;
category: string;
description: string;
language: string;
revision: Date;
contentStatus: string;
themes: string[];
media: Media[];
}
export class Workbook {
category: string;
company: string;
creator: string;
description: string;
keywords: string;
lastModifiedBy: string;
created: Date;
manager: string;
modified: Date;
lastPrinted: Date;
properties: WorkbookProperties;
subject: string;
title: string;
/**
* Workbook calculation Properties
*/
calcProperties: CalculationProperties;
/**
* xlsx file format operations
*/
readonly xlsx: Xlsx;
/**
* csv file format operations
*/
readonly csv: Csv;
readonly nextId: number;
readonly definedNames: DefinedNames;
model: WorkbookModel;
/**
* The Workbook views controls how many separate windows Excel will open when viewing the workbook.
*/
views: WorkbookView[];
/**
* return a clone of worksheets in order
*/
worksheets: Worksheet[];
/**
* Add a new worksheet and return a reference to it
*/
addWorksheet(name?: string, options?: Partial<AddWorksheetOptions>): Worksheet;
removeWorksheetEx(worksheet: Worksheet): void;
removeWorksheet(indexOrName: number | string): void;
/**
* fetch sheet by name or id
*/
getWorksheet(indexOrName?: number | string): Worksheet | undefined;
/**
* Iterate over all sheets.
*
* Note: `workbook.worksheets.forEach` will still work but this is better.
*/
eachSheet(callback: (worksheet: Worksheet, id: number) => void): void;
clearThemes(): void;
/**
* Add Image to Workbook and return the id
*/
addImage(img: Image): number;
getImage(id: number): Image;
}
export interface TableStyleProperties {
/**
* The colour theme of the table
* @default 'TableStyleMedium2'
*/
theme?: 'TableStyleDark1' | 'TableStyleDark10' | 'TableStyleDark11' | 'TableStyleDark2' | 'TableStyleDark3' | 'TableStyleDark4' | 'TableStyleDark5' | 'TableStyleDark6' | 'TableStyleDark7' | 'TableStyleDark8' | 'TableStyleDark9' | 'TableStyleLight1' | 'TableStyleLight10' | 'TableStyleLight11' | 'TableStyleLight12' | 'TableStyleLight13' | 'TableStyleLight14' | 'TableStyleLight15' | 'TableStyleLight16' | 'TableStyleLight17' | 'TableStyleLight18' | 'TableStyleLight19' | 'TableStyleLight2' | 'TableStyleLight20' | 'TableStyleLight21' | 'TableStyleLight3' | 'TableStyleLight4' | 'TableStyleLight5' | 'TableStyleLight6' | 'TableStyleLight7' | 'TableStyleLight8' | 'TableStyleLight9' | 'TableStyleMedium1' | 'TableStyleMedium10' | 'TableStyleMedium11' | 'TableStyleMedium12' | 'TableStyleMedium13' | 'TableStyleMedium14' | 'TableStyleMedium15' | 'TableStyleMedium16' | 'TableStyleMedium17' | 'TableStyleMedium18' | 'TableStyleMedium19' | 'TableStyleMedium2' | 'TableStyleMedium20' | 'TableStyleMedium21' | 'TableStyleMedium22' | 'TableStyleMedium23' | 'TableStyleMedium24' | 'TableStyleMedium25' | 'TableStyleMedium26' | 'TableStyleMedium27' | 'TableStyleMedium28' | 'TableStyleMedium3' | 'TableStyleMedium4' | 'TableStyleMedium5' | 'TableStyleMedium6' | 'TableStyleMedium7' | 'TableStyleMedium8' | 'TableStyleMedium9';
/**
* Highlight the first column (bold)
* @default false
*/
showFirstColumn?: boolean;
/**
* Highlight the last column (bold)
* @default false
*/
showLastColumn?: boolean;
/**
* Alternate rows shown with background colour
* @default false
*/
showRowStripes?: boolean;
/**
* Alternate rows shown with background colour
* @default false
*/
showColumnStripes?: boolean;
}
export interface TableColumnProperties {
/**
* The name of the column, also used in the header
*/
name: string;
/**
* Switches the filter control in the header
* @default false
*/
filterButton?: boolean;
/**
* Label to describe the totals row (first column)
* @default 'Total'
*/
totalsRowLabel?: string;
/**
* Name of the totals function
* @default 'none'
*/
totalsRowFunction?: 'none' | 'average' | 'countNums' | 'count' | 'max' | 'min' | 'stdDev' | 'var' | 'sum' | 'custom';
/**
* Optional formula for custom functions
*/
totalsRowFormula?: string;
}
export interface TableProperties {
/**
* The name of the table
*/
name: string;
/**
* The display name of the table
*/
displayName?: string;
/**
* Top left cell of the table
*/
ref: string;
/**
* Show headers at top of table
* @default true
*/
headerRow?: boolean;
/**
* Show totals at bottom of table
* @default false
*/
totalsRow?: boolean;
/**
* Extra style properties
* @default {}
*/
style?: TableStyleProperties;
/**
* Column definitions
*/
columns: TableColumnProperties[]
/**
* Rows of data
*/
rows: any[][]
}
export type TableColumn = Required<TableColumnProperties>
export interface Table extends Required<TableProperties> {
/**
* Commit changes
*/
commit: () => void
/**
* Remove a rows of data
*/
removeRows: (rowIndex: number, count: number) => void
/**
* Add a row of data, either insert at rowNumber or append
*/
addRow: (values: any[], rowNumber?: number) => void
/**
* Get column
*/
getColumn: (colIndex: number) => TableColumn
/**
* Add a new column, including column defn and values
* inserts at colNumber or adds to the right
*/
addColumn: (column: TableColumnProperties, values: any[], colIndex: number) => void
/**
* Remove a column with data
*/
removeColumns: (colIndex: number, count: number) => void
}
export namespace config {
function setValue(key: 'promise', promise: any): void;
}
export namespace stream {
namespace xlsx {
interface WorkbookWriterOptions {
/**
* Specifies a writable stream to write the XLSX workbook to.
*/
stream: import('stream').Stream;
/**
* If stream not specified, this field specifies the path to a file to write the XLSX workbook to.
*/
filename: string;
/**
* Specifies whether to use shared strings in the workbook. Default is false
*/
useSharedStrings: boolean;
/**
* Specifies whether to add style information to the workbook.
* Styles can add some performance overhead. Default is false
*/
useStyles: boolean;
}
interface ArchiverZipOptions {
comment: string;
forceLocalTime: boolean;
forceZip64: boolean;
store: boolean;
zlib: Partial<ZlibOptions>;
}
interface ZlibOptions {
/**
* @default constants.Z_NO_FLUSH
*/
flush: number;
/**
* @default constants.Z_FINISH
*/
finishFlush: number;
/**
* @default 16*1024
*/
chunkSize: number;
windowBits: number;
level: number; // compression only
memLevel: number; // compression only
strategy: number; // compression only
dictionary: Buffer | NodeJS.TypedArray | DataView | ArrayBuffer; // deflate/inflate only, empty dictionary by default
}
interface WorkbookStreamWriterOptions extends WorkbookWriterOptions {
/**
* Specifies whether to add style information to the workbook.
* Styles can add some performance overhead. Default is false
*/
zip: Partial<ArchiverZipOptions>;
}
class WorkbookWriter extends Workbook {
constructor(options: Partial<WorkbookStreamWriterOptions>);
// commit all worksheets, then add suplimentary files
commit(): Promise<void>;
addStyles(): Promise<void>;
addThemes(): Promise<void>;
addOfficeRels(): Promise<void>;
addContentTypes(): Promise<void>;
addApp(): Promise<void>;
addCore(): Promise<void>;
addSharedStrings(): Promise<void>;
addWorkbookRels(): Promise<void>;
addWorkbook(): Promise<void>;
}
interface WorkbookStreamReaderOptions {
/**
* @default 'emit'
*/
worksheets?: 'emit' | 'ignore';
/**
* @default 'cache'
*/
sharedStrings?: 'cache' | 'emit' | 'ignore';
/**
* @default 'ignore'
*/
hyperlinks?: 'cache' | 'emit' | 'ignore';
/**
* @default 'ignore'
*/
styles?: 'cache' | 'ignore';
/**
* @default 'ignore'
*/
entries?: 'emit' | 'ignore';
}
class WorkbookReader extends Workbook {
constructor(input: string | import('stream').Stream, options: Partial<WorkbookStreamReaderOptions>);
read(): Promise<void>;
[Symbol.asyncIterator](): AsyncGenerator<WorksheetReader>;
parse(): AsyncIterator<any>;
}
interface WorksheetReaderOptions {
workbook: Workbook;
id: number;
entry: import('stream').Stream;
options: WorkbookStreamReaderOptions;
}
class WorksheetReader {
constructor(options: WorksheetReaderOptions);
read(): Promise<void>;
[Symbol.asyncIterator](): AsyncGenerator<Row>;
parse(): AsyncIterator<Array<any>>;
dimensions(): number;
columns(): number;
getColumn(c: number): Column;
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/chenxiaonan/exceljs.git
git@gitee.com:chenxiaonan/exceljs.git
chenxiaonan
exceljs
exceljs
master

搜索帮助