mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* Resolve bluebird(Array) method * upgrade typescript version from bluebird-global * move testfile Reason: There are too many type definition files depending on jquery and it can not be managed. * upgrade typescript version from bluebird require packages * fix lint error: use-default-type-parameter
467 lines
13 KiB
TypeScript
467 lines
13 KiB
TypeScript
import * as Excel from 'exceljs';
|
|
import * as stream from 'stream';
|
|
import * as fs from 'fs';
|
|
|
|
// most examples taken and adapted from README.md
|
|
|
|
const workbook = new Excel.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);
|
|
workbook.properties.date1904 = true;
|
|
|
|
workbook.views = [
|
|
{
|
|
x: 0, y: 0, width: 10000, height: 20000,
|
|
firstSheet: 0, activeTab: 1, visibility: 'visible'
|
|
}
|
|
];
|
|
|
|
const worksheet = workbook.addWorksheet('My Sheet');
|
|
|
|
workbook.eachSheet((worksheet, sheetId) => null);
|
|
|
|
const worksheet2 = workbook.getWorksheet('My Sheet');
|
|
const worksheet3 = workbook.getWorksheet(1);
|
|
const sheet1 = workbook.addWorksheet('My Sheet', {
|
|
pageSetup: { fitToPage: true, fitToHeight: 5, fitToWidth: 7 },
|
|
properties: { tabColor: { argb: 'FFC0000' } },
|
|
});
|
|
const sheet2 = workbook.addWorksheet('My Sheet', {
|
|
pageSetup: { paperSize: 9, orientation: 'landscape' },
|
|
views: [
|
|
{ state: 'frozen', xSplit: 1, ySplit: 1 },
|
|
{ state: 'normal', showGridLines: false },
|
|
{ state: 'split', activePane: 'bottomLeft', }
|
|
]
|
|
});
|
|
|
|
worksheet.properties.outlineLevelCol = 2;
|
|
worksheet.properties.defaultRowHeight = 15;
|
|
|
|
worksheet.pageSetup.margins = {
|
|
left: 0.7, right: 0.7,
|
|
top: 0.75, bottom: 0.75,
|
|
header: 0.3, footer: 0.3
|
|
};
|
|
|
|
worksheet.pageSetup.printArea = 'A1:G20';
|
|
worksheet.pageSetup.printTitlesRow = '1:3';
|
|
|
|
worksheet.views = [
|
|
{ state: 'frozen', xSplit: 2, ySplit: 3, topLeftCell: 'G10', activeCell: 'A1' },
|
|
{ state: 'split', xSplit: 2000, ySplit: 3000, topLeftCell: 'G10', activeCell: 'A1' },
|
|
];
|
|
|
|
worksheet.autoFilter = { from: 'A1', to: 'C1' };
|
|
worksheet.autoFilter = { from: { row: 3, column: 1 }, to: { row: 5, column: 12 } };
|
|
worksheet.autoFilter = { from: 'D3', to: { row: 7, column: 5 } };
|
|
|
|
worksheet.columns = [
|
|
{ header: 'Id', key: 'id', width: 10 },
|
|
{ header: 'Name', key: 'name', width: 32 },
|
|
{ header: 'D.O.B.', key: 'DOB', width: 10, outlineLevel: 1 }
|
|
];
|
|
|
|
const idCol = worksheet.getColumn('id');
|
|
const nameCol = worksheet.getColumn('B');
|
|
const dobCol = worksheet.getColumn(3);
|
|
|
|
dobCol.header = 'Date of Birth';
|
|
dobCol.header = ['Date of Birth', 'A.K.A. D.O.B.'];
|
|
dobCol.key = 'dob';
|
|
dobCol.width = 15;
|
|
dobCol.hidden = true;
|
|
worksheet.getColumn(4).outlineLevel = 0;
|
|
const cl1 = worksheet.getColumn(4).collapsed;
|
|
|
|
dobCol.eachCell((cell, rowNumber) => null);
|
|
|
|
dobCol.eachCell({ includeEmpty: true }, (cell, rowNumber) => null);
|
|
|
|
worksheet.spliceColumns(3, 2);
|
|
|
|
const newCol3Values = [1, 2, 3, 4, 5];
|
|
const newCol4Values = ['one', 'two', 'three', 'four', 'five'];
|
|
worksheet.spliceColumns(3, 1, newCol3Values, newCol4Values);
|
|
|
|
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) });
|
|
worksheet.addRow([3, 'Sam', new Date()]);
|
|
const rowValues = [];
|
|
rowValues[1] = 4;
|
|
rowValues[5] = 'Kyle';
|
|
rowValues[9] = new Date();
|
|
worksheet.addRow(rowValues);
|
|
const rows = [
|
|
[5, 'Bob', new Date()],
|
|
{ id: 6, name: 'Barbara', dob: new Date() },
|
|
];
|
|
worksheet.addRows(rows);
|
|
|
|
const row = worksheet.getRow(5);
|
|
const row1 = worksheet.lastRow;
|
|
|
|
row.height = 42.5;
|
|
row.hidden = true;
|
|
worksheet.getRow(4).outlineLevel = 0;
|
|
worksheet.getRow(5).outlineLevel = 1;
|
|
worksheet.getRow(4).collapsed;
|
|
worksheet.getRow(4).number;
|
|
|
|
row.getCell(1).value = 5;
|
|
row.getCell('name').value = 'Zeb';
|
|
row.getCell('C').value = new Date();
|
|
|
|
const row2 = worksheet.getRow(4).values;
|
|
|
|
row.values = [1, 2, 3];
|
|
|
|
const values = [];
|
|
values[5] = 7;
|
|
values[10] = 'Hello, World!';
|
|
row.values = values;
|
|
|
|
row.values = { id: 13, name: 'Thing 1', dob: new Date() };
|
|
|
|
worksheet.eachRow((row, rowNumber) => null);
|
|
worksheet.eachRow({ includeEmpty: true }, (row, rowNumber) => null);
|
|
|
|
row.eachCell((cell, colNumber) => null);
|
|
row.eachCell({ includeEmpty: true }, (cell, colNumber) => null);
|
|
|
|
worksheet.spliceRows(4, 3);
|
|
|
|
const newRow3Values = [1, 2, 3, 4, 5];
|
|
const newRow4Values = ['one', 'two', 'three', 'four', 'five'];
|
|
worksheet.spliceRows(3, 1, newRow3Values, newRow4Values);
|
|
|
|
row.splice(3, 2);
|
|
|
|
row.splice(4, 1, 'new value 1', 'new value 2');
|
|
|
|
row.commit();
|
|
|
|
const rowSize = row.cellCount;
|
|
const numValues = row.actualCellCount;
|
|
|
|
worksheet.getCell('C3').value = new Date(1968, 5, 1);
|
|
const isDate = worksheet.getCell('C3').type === Excel.ValueType.Date;
|
|
|
|
worksheet.mergeCells('A4:B5');
|
|
|
|
worksheet.getCell('B5').value = 'Hello, World!';
|
|
const master = worksheet.getCell('B5').master === worksheet.getCell('A4');
|
|
|
|
worksheet.unMergeCells('A4');
|
|
|
|
worksheet.mergeCells('G10', 'H11');
|
|
worksheet.mergeCells(10, 11, 12, 13);
|
|
|
|
worksheet.getCell('A1').name = 'PI';
|
|
worksheet.getCell('A1').names = ['thing1', 'thing2'];
|
|
worksheet.getCell('A1').removeName('thing1');
|
|
|
|
worksheet.getCell('A1').dataValidation = {
|
|
type: 'list',
|
|
allowBlank: true,
|
|
formulae: ['"One,Two,Three,Four"']
|
|
};
|
|
|
|
worksheet.getCell('A1').dataValidation = {
|
|
type: 'list',
|
|
allowBlank: true,
|
|
formulae: ['$D$5:$F$5']
|
|
};
|
|
|
|
worksheet.getCell('A1').dataValidation = {
|
|
type: 'whole',
|
|
operator: 'notEqual',
|
|
showErrorMessage: true,
|
|
formulae: [5],
|
|
errorStyle: 'error',
|
|
errorTitle: 'Five',
|
|
error: 'The value must not be Five'
|
|
};
|
|
|
|
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'
|
|
};
|
|
|
|
worksheet.getCell('A1').dataValidation = {
|
|
type: 'textLength',
|
|
operator: 'lessThan',
|
|
showErrorMessage: true,
|
|
allowBlank: true,
|
|
formulae: [15]
|
|
};
|
|
|
|
worksheet.getCell('A1').dataValidation = {
|
|
type: 'date',
|
|
operator: 'lessThan',
|
|
showErrorMessage: true,
|
|
allowBlank: true,
|
|
formulae: [new Date(2016, 0, 1)]
|
|
};
|
|
|
|
worksheet.getCell('A1').value = null;
|
|
worksheet.getCell('A1').value = 5;
|
|
worksheet.getCell('A2').value = 3.14159;
|
|
worksheet.getCell('A1').value = 'Hello, World!';
|
|
worksheet.getCell('A1').value = new Date(2017, 2, 15);
|
|
worksheet.getCell('A1').value = { text: 'www.mylink.com', hyperlink: 'http://www.mylink.com' };
|
|
worksheet.getCell('A1').value = { text: 'Sheet2', hyperlink: '#\\"Sheet2\\"!A1' };
|
|
worksheet.getCell('A3').value = { formula: 'A1+A2', result: 7 };
|
|
worksheet.getCell('B3').value = { sharedFormula: 'A3', result: 10 };
|
|
worksheet.getCell('A1').value = true;
|
|
worksheet.getCell('A2').value = false;
|
|
worksheet.getCell('A1').value = { error: '#N/A' };
|
|
worksheet.getCell('A2').value = { error: '#VALUE!' };
|
|
worksheet.getCell('A1').value = {
|
|
richText: [
|
|
{ text: 'This is ' },
|
|
{ font: { italic: true }, text: 'italic' }
|
|
],
|
|
};
|
|
worksheet.getCell('A3').formula === 'A1+A2';
|
|
worksheet.getCell('A3').result === 7;
|
|
|
|
const isMaster = worksheet.getCell('A3').formulaType === Excel.FormulaType.Master;
|
|
const isShared = worksheet.getCell('B3').formulaType === Excel.FormulaType.Shared;
|
|
|
|
worksheet.getCell('A1').numFmt = '0.00%';
|
|
worksheet.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' } }
|
|
];
|
|
|
|
worksheet.getColumn(3).numFmt = '"£"#,##0.00;[Red]\-"£"#,##0.00';
|
|
|
|
worksheet.getRow(2).font = {
|
|
name: 'Comic Sans MS',
|
|
family: 4,
|
|
size: 16,
|
|
underline: 'double',
|
|
bold: true,
|
|
};
|
|
|
|
worksheet.getCell('A1').numFmt = '# ?/?';
|
|
worksheet.getCell('B1').numFmt = '0.00%';
|
|
|
|
worksheet.getCell('A1').font = {
|
|
name: 'Comic Sans MS',
|
|
family: 4,
|
|
size: 16,
|
|
underline: true,
|
|
bold: true
|
|
};
|
|
|
|
worksheet.getCell('A2').font = {
|
|
name: 'Arial Black',
|
|
color: { argb: 'FF00FF00' },
|
|
family: 2,
|
|
size: 14,
|
|
italic: true
|
|
};
|
|
|
|
const font = { name: 'Arial', size: 12 };
|
|
worksheet.getCell('A3').font = font;
|
|
font.size = 20;
|
|
|
|
worksheet.getCell('A1').alignment = { vertical: 'top', horizontal: 'left' };
|
|
worksheet.getCell('B1').alignment = { vertical: 'middle', horizontal: 'center' };
|
|
worksheet.getCell('C1').alignment = { vertical: 'bottom', horizontal: 'right' };
|
|
worksheet.getCell('D1').alignment = { wrapText: true };
|
|
worksheet.getCell('E1').alignment = { indent: 1 };
|
|
worksheet.getCell('F1').alignment = { textRotation: 30 };
|
|
worksheet.getCell('G1').alignment = { textRotation: -45 };
|
|
worksheet.getCell('H1').alignment = { textRotation: 'vertical' };
|
|
|
|
worksheet.getCell('A1').border = {
|
|
top: { style: 'thin' },
|
|
left: { style: 'thin' },
|
|
bottom: { style: 'thin' },
|
|
right: { style: 'thin' }
|
|
};
|
|
|
|
worksheet.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' } }
|
|
};
|
|
|
|
worksheet.getCell('A5').border = {
|
|
diagonal: { up: true, down: true, style: 'thick', color: { argb: 'FFFF0000' } }
|
|
};
|
|
|
|
worksheet.getCell('A1').fill = {
|
|
type: 'pattern',
|
|
pattern: 'darkVertical',
|
|
fgColor: { argb: 'FFFF0000' }
|
|
};
|
|
|
|
worksheet.getCell('A2').fill = {
|
|
type: 'pattern',
|
|
pattern: 'darkTrellis',
|
|
fgColor: { argb: 'FFFFFF00' },
|
|
bgColor: { argb: 'FF0000FF' }
|
|
};
|
|
|
|
worksheet.getCell('A3').fill = {
|
|
type: 'gradient',
|
|
gradient: 'angle',
|
|
degree: 0,
|
|
stops: [
|
|
{ position: 0, color: { argb: 'FF0000FF' } },
|
|
{ position: 0.5, color: { argb: 'FFFFFFFF' } },
|
|
{ position: 1, color: { argb: 'FF0000FF' } }
|
|
]
|
|
};
|
|
|
|
worksheet.getCell('A2').fill = {
|
|
type: 'gradient',
|
|
gradient: 'path',
|
|
center: { left: 0.5, top: 0.5 },
|
|
stops: [
|
|
{ position: 0, color: { argb: 'FFFF0000' } },
|
|
{ position: 1, color: { argb: 'FF00FF00' } }
|
|
]
|
|
};
|
|
|
|
worksheet.getCell('A1').value = {
|
|
richText: [
|
|
{
|
|
text: 'This is ',
|
|
font: { name: 'Calibri', size: 12, color: { theme: 0 }, family: 2, scheme: 'minor' },
|
|
},
|
|
{
|
|
text: 'a',
|
|
font: { italic: true, size: 12, color: { theme: 0 }, name: 'Calibri', scheme: 'minor' },
|
|
},
|
|
{
|
|
text: ' ',
|
|
font: { size: 12, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' },
|
|
},
|
|
{
|
|
text: 'colorful',
|
|
font: { size: 12, color: { argb: 'FFFF6600' }, name: 'Calibri', scheme: 'minor' },
|
|
},
|
|
{
|
|
text: ' text ',
|
|
font: { size: 12, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' },
|
|
},
|
|
{
|
|
text: 'with',
|
|
font: { size: 12, color: { argb: 'FFCCFFCC' }, name: 'Calibri', scheme: 'minor' },
|
|
},
|
|
{
|
|
text: ' in-cell ',
|
|
font: { size: 12, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' },
|
|
},
|
|
{
|
|
text: 'format',
|
|
font: { bold: true, size: 12, name: 'Calibri', family: 2, scheme: 'minor' },
|
|
}
|
|
]
|
|
};
|
|
|
|
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;
|
|
worksheet.properties.outlineLevelCol = 1;
|
|
worksheet.properties.outlineLevelRow = 1;
|
|
|
|
const imageId1 = workbook.addImage({
|
|
filename: 'path/to/image.jpg',
|
|
extension: 'jpeg',
|
|
});
|
|
const imageId2 = workbook.addImage({
|
|
buffer: fs.readFileSync('path/to.image.png'),
|
|
extension: 'png',
|
|
});
|
|
|
|
worksheet.addBackgroundImage(imageId1);
|
|
worksheet.addImage(imageId2, 'B2:D6');
|
|
worksheet.addImage(imageId2, {
|
|
tl: { col: 1.5, row: 1.5 },
|
|
br: { col: 3.5, row: 5.5 }
|
|
});
|
|
|
|
workbook.xlsx.readFile('./1.xlsx').then(() => null);
|
|
(new stream.Stream()).pipe(workbook.xlsx.createInputStream());
|
|
|
|
workbook.xlsx.writeFile('./1.xlsx').then(() => null);
|
|
workbook.xlsx.write(new stream.Stream()).then(() => null);
|
|
|
|
workbook.csv.readFile('./1.xlsx').then(worksheet => null);
|
|
workbook.csv.read(new stream.Stream()).then(worksheet => null);
|
|
|
|
(new stream.Stream()).pipe(workbook.csv.createInputStream());
|
|
|
|
const options1 = { dateFormats: ['DD/MM/YYYY'] };
|
|
workbook.csv.readFile('./1.xlsx', options1).then(worksheet => null);
|
|
|
|
const options2 = {
|
|
map(value: any, index: number) {
|
|
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);
|
|
}
|
|
}
|
|
};
|
|
workbook.csv.readFile('./1.xlsx', options2).then(worksheet => null);
|
|
|
|
workbook.csv.writeFile('./1.xlsx').then(() => null);
|
|
|
|
// write to a stream
|
|
workbook.csv.write(new stream.Stream()).then(() => null);
|
|
|
|
const workbookWriter = new Excel.stream.xlsx.WorkbookWriter({
|
|
filename: './streamed-workbook.xlsx',
|
|
useStyles: true,
|
|
useSharedStrings: true
|
|
});
|
|
|
|
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();
|
|
|
|
worksheet.commit();
|
|
|
|
workbook.commit().then(() => null);
|
|
|
|
Excel.config.setValue('promise', Promise);
|