exceljs

Read, manipulate, and write Excel spreadsheets with full formatting support.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "exceljs" with this command: npx skills add aidotnet/moyucode/aidotnet-moyucode-exceljs

ExcelJS Tool

Description

Read, manipulate, and write Excel spreadsheets with full formatting support.

Source

  • Repository: exceljs/exceljs

  • License: MIT

Installation

npm install exceljs

Usage Examples

Create Excel File

import ExcelJS from 'exceljs';

async function createReport() { const workbook = new ExcelJS.Workbook(); workbook.creator = 'My App'; workbook.created = new Date();

const sheet = workbook.addWorksheet('Sales Report');

// Define columns sheet.columns = [ { header: 'ID', key: 'id', width: 10 }, { header: 'Product', key: 'product', width: 30 }, { header: 'Quantity', key: 'quantity', width: 15 }, { header: 'Price', key: 'price', width: 15 }, { header: 'Total', key: 'total', width: 15 }, ];

// Add data const data = [ { id: 1, product: 'Widget A', quantity: 100, price: 9.99 }, { id: 2, product: 'Widget B', quantity: 50, price: 19.99 }, { id: 3, product: 'Widget C', quantity: 75, price: 14.99 }, ];

data.forEach(item => { sheet.addRow({ ...item, total: { formula: C${sheet.rowCount + 1}*D${sheet.rowCount + 1} }, }); });

await workbook.xlsx.writeFile('report.xlsx'); }

Style Cells

async function createStyledReport() { const workbook = new ExcelJS.Workbook(); const sheet = workbook.addWorksheet('Styled');

// Header row with styling const headerRow = sheet.addRow(['Name', 'Email', 'Status']); headerRow.eachCell(cell => { cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: '4F46E5' }, }; cell.font = { color: { argb: 'FFFFFF' }, bold: true }; cell.alignment = { horizontal: 'center' }; cell.border = { top: { style: 'thin' }, bottom: { style: 'thin' }, }; });

// Data rows const users = [ { name: 'John', email: 'john@example.com', status: 'Active' }, { name: 'Jane', email: 'jane@example.com', status: 'Inactive' }, ];

users.forEach(user => { const row = sheet.addRow([user.name, user.email, user.status]);

// Conditional formatting
const statusCell = row.getCell(3);
statusCell.fill = {
  type: 'pattern',
  pattern: 'solid',
  fgColor: { argb: user.status === 'Active' ? '22C55E' : 'EF4444' },
};

});

await workbook.xlsx.writeFile('styled-report.xlsx'); }

Read Excel File

async function readExcel(filePath: string) { const workbook = new ExcelJS.Workbook(); await workbook.xlsx.readFile(filePath);

const sheet = workbook.getWorksheet('Sheet1'); const data: any[] = [];

sheet?.eachRow((row, rowNumber) => { if (rowNumber === 1) return; // Skip header

data.push({
  id: row.getCell(1).value,
  name: row.getCell(2).value,
  email: row.getCell(3).value,
});

});

return data; }

Stream Large Files

async function streamLargeExcel(data: any[], outputPath: string) { const workbook = new ExcelJS.stream.xlsx.WorkbookWriter({ filename: outputPath, useStyles: true, });

const sheet = workbook.addWorksheet('Data'); sheet.columns = [ { header: 'ID', key: 'id' }, { header: 'Value', key: 'value' }, ];

// Stream rows (memory efficient) for (const item of data) { sheet.addRow(item).commit(); }

await workbook.commit(); }

Tags

excel , spreadsheet , xlsx , report , data-export

Compatibility

  • Codex: ✅

  • Claude Code: ✅

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

bilibili-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

puppeteer

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

cron-scheduler

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

nodemailer

No summary provided by upstream source.

Repository SourceNeeds Review