// Project: https://github.com/SheetJS/js-xlsx // Definitions by: themauveavenger , Wolfgang Faust // TypeScript Version: 2.2 /** 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(data: T[], opts?: any): IWorkSheet; /** Converts a worksheet object to an array of JSON objects */ sheet_to_json(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; }