Add typescript definition file from @types/xlsx.

This commit is contained in:
Wolfgang Faust 2017-05-13 15:39:33 -04:00
commit 02d4542ef0
4 changed files with 490 additions and 0 deletions

436
types/index.d.ts vendored Normal file
View File

@ -0,0 +1,436 @@
// 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;
}

23
types/tsconfig.json Normal file
View File

@ -0,0 +1,23 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": false,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"xlsx-tests.ts"
]
}

6
types/tslint.json Normal file
View File

@ -0,0 +1,6 @@
{
"extends": "dtslint/dt.json",
"rules": {
"interface-name": [true, "always-prefix"]
}
}

25
types/xlsx-tests.ts Normal file
View File

@ -0,0 +1,25 @@
import xlsx = require('xlsx');
const options: xlsx.IParsingOptions = {
cellDates: true
};
const workbook = xlsx.readFile('test.xlsx', options);
const otherworkbook = xlsx.readFile('test.xlsx', {type: 'file'});
console.log(workbook.Props.Author);
const firstsheet: string = workbook.SheetNames[0];
const firstworksheet = workbook.Sheets[firstsheet];
console.log(firstworksheet["A1"]);
interface ITester {
name: string;
age: number;
}
const jsonvalues: ITester[] = xlsx.utils.sheet_to_json<ITester>(firstworksheet);
const csv = xlsx.utils.sheet_to_csv(firstworksheet);
const formulae = xlsx.utils.sheet_to_formulae(firstworksheet);