forked from sheetjs/sheetjs
		
	
		
			
				
	
	
		
			437 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			437 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| // Type definitions for xlsx
 | |
| // Project: https://github.com/SheetJS/js-xlsx
 | |
| // Definitions by: themauveavenger <https://github.com/themauveavenger/>, Wolfgang Faust <https://github.com/wolfgang42>
 | |
| // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
 | |
| 
 | |
| /** Attempts to read filename and parse */
 | |
| export function readFile(filename: string, opts?: IParsingOptions): IWorkBook;
 | |
| /** Attempts to parse data */
 | |
| export function read(data: any, opts?: IParsingOptions): IWorkBook;
 | |
| /** Attempts to write workbook data to filename */
 | |
| export function writeFile(data: IWorkBook, filename: string, opts?: IWritingOptions): any;
 | |
| /** Attempts to write the workbook data */
 | |
| export function write(data: IWorkBook, opts?: IWritingOptions): any;
 | |
| 
 | |
| export const utils: IUtils;
 | |
| 
 | |
| export interface IProperties {
 | |
|     LastAuthor?: string;
 | |
|     Author?: string;
 | |
|     CreatedDate?: Date;
 | |
|     ModifiedDate?: Date;
 | |
|     Application?: string;
 | |
|     AppVersion?: string;
 | |
|     Company?: string;
 | |
|     DocSecurity?: string;
 | |
|     Manager?: string;
 | |
|     HyperlinksChanged?: boolean;
 | |
|     SharedDoc?: boolean;
 | |
|     LinksUpToDate?: boolean;
 | |
|     ScaleCrop?: boolean;
 | |
|     Worksheets?: number;
 | |
|     SheetNames?: string[];
 | |
| }
 | |
| 
 | |
| export interface IParsingOptions {
 | |
|     /**
 | |
|      * Input data encoding
 | |
|      */
 | |
|     type?: 'base64' | 'binary' | 'buffer' | 'array' | 'file';
 | |
| 
 | |
|     /**
 | |
|      * Save formulae to the .f field
 | |
|      * @default true
 | |
|      */
 | |
|     cellFormula?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Parse rich text and save HTML to the .h field
 | |
|      * @default true
 | |
|      */
 | |
|     cellHTML?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Save number format string to the .z field
 | |
|      * @default false
 | |
|      */
 | |
|     cellNF?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Save style/theme info to the .s field
 | |
|      * @default false
 | |
|      */
 | |
|     cellStyles?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Store dates as type d (default is n)
 | |
|      * @default false
 | |
|      */
 | |
|     cellDates?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Create cell objects for stub cells
 | |
|      * @default false
 | |
|      */
 | |
|     sheetStubs?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If >0, read the first sheetRows rows
 | |
|      * @default 0
 | |
|      */
 | |
|     sheetRows?: number;
 | |
| 
 | |
|     /**
 | |
|      * If true, parse calculation chains
 | |
|      * @default false
 | |
|      */
 | |
|     bookDeps?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If true, add raw files to book object
 | |
|      * @default false
 | |
|      */
 | |
|     bookFiles?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If true, only parse enough to get book metadata
 | |
|      * @default false
 | |
|      */
 | |
|     bookProps?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If true, only parse enough to get the sheet names
 | |
|      * @default false
 | |
|      */
 | |
|     bookSheets?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If true, expose vbaProject.bin to vbaraw field
 | |
|      * @default false
 | |
|      */
 | |
|     bookVBA?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * If defined and file is encrypted, use password
 | |
|      * @default ''
 | |
|      */
 | |
|     password?: string;
 | |
| }
 | |
| 
 | |
| export interface IWritingOptions {
 | |
|     /**
 | |
|      * Output data encoding
 | |
|      */
 | |
|     type?: 'base64' | 'binary' | 'buffer' | 'file';
 | |
| 
 | |
|     /**
 | |
|      * Store dates as type d (default is n)
 | |
|      * @default false
 | |
|      */
 | |
|     cellDates?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Generate Shared String Table
 | |
|      * @default false
 | |
|      */
 | |
|     bookSST?: boolean;
 | |
| 
 | |
|     /**
 | |
|      * Type of Workbook
 | |
|      * @default 'xlsx'
 | |
|      */
 | |
|     bookType?: 'xlsx' | 'xlsm' | 'xlsb' | 'ods' | 'biff2' | 'fods' | 'csv';
 | |
| 
 | |
|     /**
 | |
|      * Name of Worksheet for single-sheet formats
 | |
|      * @default ''
 | |
|      */
 | |
|     sheet?: string;
 | |
| 
 | |
|     /**
 | |
|      * Use ZIP compression for ZIP-based formats
 | |
|      * @default false
 | |
|      */
 | |
|     compression?: boolean;
 | |
| }
 | |
| 
 | |
| export interface IWorkBook {
 | |
|     /**
 | |
|      * A dictionary of the worksheets in the workbook.
 | |
|      * Use SheetNames to reference these.
 | |
|      */
 | |
|     Sheets: { [sheet: string]: IWorkSheet };
 | |
| 
 | |
|     /**
 | |
|      * ordered list of the sheet names in the workbook
 | |
|      */
 | |
|     SheetNames: string[];
 | |
| 
 | |
|     /**
 | |
|      * an object storing the standard properties. wb.Custprops stores custom properties.
 | |
|      * Since the XLS standard properties deviate from the XLSX standard, XLS parsing stores core properties in both places.
 | |
|      */
 | |
|     Props: IProperties;
 | |
| }
 | |
| 
 | |
| export interface IColInfo {
 | |
|     /**
 | |
|      * Excel's "Max Digit Width" unit, always integral
 | |
|      */
 | |
|     MDW?: number;
 | |
|     /**
 | |
|      * width in Excel's "Max Digit Width", width*256 is integral
 | |
|      */
 | |
|     width: number;
 | |
|     /**
 | |
|      * width in screen pixels
 | |
|      */
 | |
|     wpx?: number;
 | |
|     /**
 | |
|      * intermediate character calculation
 | |
|      */
 | |
|     wch?: number;
 | |
|     /**
 | |
|      * if true, the column is hidden
 | |
|      */
 | |
|     hidden?: boolean;
 | |
| }
 | |
| export interface IRowInfo {
 | |
|     /**
 | |
|      * height in screen pixels
 | |
|      */
 | |
|     hpx?: number;
 | |
|     /**
 | |
|      * height in points
 | |
|      */
 | |
|     hpt?: number;
 | |
|     /**
 | |
|      * if true, the column is hidden
 | |
|      */
 | |
|     hidden?: boolean;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Write sheet protection properties.
 | |
|  */
 | |
| export interface IProtectInfo {
 | |
|     /**
 | |
|      * The password for formats that support password-protected sheets
 | |
|      * (XLSX/XLSB/XLS). The writer uses the XOR obfuscation method.
 | |
|      */
 | |
|     password?: string;
 | |
|     /**
 | |
|      * Select locked cells
 | |
|      * @default: true
 | |
|      */
 | |
|     selectLockedCells?: boolean;
 | |
|     /**
 | |
|      * Select unlocked cells
 | |
|      * @default: true
 | |
|      */
 | |
|     selectUnlockedCells?: boolean;
 | |
|     /**
 | |
|      * Format cells
 | |
|      * @default: false
 | |
|      */
 | |
|     formatCells?: boolean;
 | |
|     /**
 | |
|      * Format columns
 | |
|      * @default: false
 | |
|      */
 | |
|     formatColumns?: boolean;
 | |
|     /**
 | |
|      * Format rows
 | |
|      * @default: false
 | |
|      */
 | |
|     formatRows?: boolean;
 | |
|     /**
 | |
|      * Insert columns
 | |
|      * @default: false
 | |
|      */
 | |
|     insertColumns?: boolean;
 | |
|     /**
 | |
|      * Insert rows
 | |
|      * @default: false
 | |
|      */
 | |
|     insertRows?: boolean;
 | |
|     /**
 | |
|      * Insert hyperlinks
 | |
|      * @default: false
 | |
|      */
 | |
|     insertHyperlinks?: boolean;
 | |
|     /**
 | |
|      * Delete columns
 | |
|      * @default: false
 | |
|      */
 | |
|     deleteColumns?: boolean;
 | |
|     /**
 | |
|      * Delete rows
 | |
|      * @default: false
 | |
|      */
 | |
|     deleteRows?: boolean;
 | |
|     /**
 | |
|      * Sort
 | |
|      * @default: false
 | |
|      */
 | |
|     sort?: boolean;
 | |
|     /**
 | |
|      * Filter
 | |
|      * @default: false
 | |
|      */
 | |
|     autoFilter?: boolean;
 | |
|     /**
 | |
|      * Use PivotTable reports
 | |
|      * @default: false
 | |
|      */
 | |
|     pivotTables?: boolean;
 | |
|     /**
 | |
|      * Edit objects
 | |
|      * @default: true
 | |
|      */
 | |
|     objects?: boolean;
 | |
|     /**
 | |
|      * Edit scenarios
 | |
|      * @default: true
 | |
|      */
 | |
|     scenarios?: boolean;
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * object representing any sheet (worksheet or chartsheet)
 | |
|  */
 | |
| export interface ISheet {
 | |
|     '!ref'?: string;
 | |
|     '!margins'?: {
 | |
|         left: number,
 | |
|         right: number,
 | |
|         top: number,
 | |
|         bottom: number,
 | |
|         header: number,
 | |
|         footer: number,
 | |
|     };
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * object representing the worksheet
 | |
|  */
 | |
| export interface IWorkSheet extends ISheet {
 | |
|     [cell: string]: IWorkSheetCell | any;
 | |
|     '!cols'?: IColInfo[];
 | |
|     '!rows'?: IRowInfo[];
 | |
|     '!merges'?: IRange[];
 | |
|     '!protect'?: IProtectInfo;
 | |
|     '!autofilter'?: {ref: string};
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * The Excel data type for a cell.
 | |
|  * b Boolean, n Number, e error, s String, d Date
 | |
|  */
 | |
| export type ExcelDataType = 'b' | 'n' | 'e' | 's' | 'd';
 | |
| 
 | |
| export interface IWorkSheetCell {
 | |
|     /**
 | |
|      * The raw value of the cell.
 | |
|      */
 | |
|     v: string | number | boolean | Date;
 | |
| 
 | |
|     /**
 | |
|      * Formatted text (if applicable)
 | |
|      */
 | |
|     w?: string;
 | |
| 
 | |
|     /**
 | |
|      * The Excel Data Type of the cell.
 | |
|      * b Boolean, n Number, e error, s String, d Date
 | |
|      */
 | |
|     t: ExcelDataType;
 | |
| 
 | |
|     /**
 | |
|      * Cell formula (if applicable)
 | |
|      */
 | |
|     f?: string;
 | |
| 
 | |
|     /**
 | |
|      * Range of enclosing array if formula is array formula (if applicable)
 | |
|      */
 | |
|     F?: string;
 | |
| 
 | |
|     /**
 | |
|      * Rich text encoding (if applicable)
 | |
|      */
 | |
|     r?: string;
 | |
| 
 | |
|     /**
 | |
|      * HTML rendering of the rich text (if applicable)
 | |
|      */
 | |
|     h?: string;
 | |
| 
 | |
|     /**
 | |
|      * Comments associated with the cell **
 | |
|      */
 | |
|     c?: string;
 | |
| 
 | |
|     /**
 | |
|      * Number format string associated with the cell (if requested)
 | |
|      */
 | |
|     z?: string;
 | |
| 
 | |
|     /**
 | |
|      * Cell hyperlink object (.Target holds link, .tooltip is tooltip)
 | |
|      */
 | |
|     l?: Object;
 | |
| 
 | |
|     /**
 | |
|      * The style/theme of the cell (if applicable)
 | |
|      */
 | |
|     s?: Object;
 | |
| }
 | |
| 
 | |
| export interface ICell {
 | |
|     /** Column number */
 | |
|     c: number;
 | |
|     /** Row number */
 | |
|     r: number;
 | |
| }
 | |
| 
 | |
| export interface IRange {
 | |
|     /** Starting cell */
 | |
|     s: ICell;
 | |
|     /** Ending cell */
 | |
|     e: ICell;
 | |
| }
 | |
| 
 | |
| export interface IUtils {
 | |
|     /** converts an array of arrays of JS data to a worksheet. */
 | |
|     aoa_to_sheet<T>(data: T[], opts?: any): IWorkSheet;
 | |
| 
 | |
|     /** Converts a worksheet object to an array of JSON objects */
 | |
|     sheet_to_json<T>(worksheet: IWorkSheet, opts?: {
 | |
|         raw?: boolean;
 | |
|         range?: any;
 | |
|         header?: "A"|number|string[];
 | |
|     }): T[];
 | |
|     /** Generates delimiter-separated-values output */
 | |
|     sheet_to_csv(worksheet: IWorkSheet, options?: { FS: string, RS: string }): string;
 | |
|     /** Generates a list of the formulae (with value fallbacks) */
 | |
|     sheet_to_formulae(worksheet: IWorkSheet): any;
 | |
| 
 | |
|     /** Converts 0-indexed cell address to A1 form */
 | |
|     encode_cell(cell: ICell): string;
 | |
|     /** Converts 0-indexed row to A1 form */
 | |
|     encode_row(row: number): string;
 | |
|     /** Converts 0-indexed column to A1 form */
 | |
|     encode_col(col: number): string;
 | |
|     /** Converts 0-indexed range to A1 form */
 | |
|     encode_range(s: ICell, e: ICell): string;
 | |
| 
 | |
|     /** Converts A1 cell address to 0-indexed form */
 | |
|     decode_cell(address: string): ICell;
 | |
|     /** Converts A1 row to 0-indexed form */
 | |
|     decode_row(row: string): number;
 | |
|     /** Converts A1 column to 0-indexed form */
 | |
|     decode_col(col: string): number;
 | |
|     /** Converts A1 range to 0-indexed form */
 | |
|     decode_range(range: string): IRange;
 | |
| }
 |