A powerful TypeScript library for easy Excel file manipulation using a cursor-based API. Built on top of ExcelJS, it provides an intuitive interface for navigating and modifying Excel workbooks.
- 🚀 Intuitive cursor-based navigation in Excel files
- 📝 Easy data reading and writing operations
- 🎨 Comprehensive cell formatting (fonts, colors, alignment)
- 🔄 Cell merging and spanning
- 📊 Row and column management
- 📑 Multi-worksheet support
- ➗ Excel formula support
- 🎯 Conditional formatting
- 🔍 Type-safe operations
- 📏 Auto-sizing columns
- 🛡️ Input validation
- 💾 Memory-efficient operations
npm install excel-cursor
# or
yarn add excel-cursor
# or
pnpm add excel-cursor
import { Workbook } from 'exceljs';
import { ExcelCursor } from 'excel-cursor';
// Initialize workbook and cursor
const workbook = new Workbook();
const cursor = new ExcelCursor(workbook);
// Navigate and input data
cursor
.move('A1')
.setData('Hello')
.nextRow()
.setData('World')
.formatCell({
font: { bold: true },
alignment: { vertical: 'middle', horizontal: 'center' }
});
// Save the workbook
await workbook.xlsx.writeFile('output.xlsx');
For detailed API documentation and examples, please check:
cursor
.move('A1')
.setData('Styled Cell')
.formatCell({
font: {
bold: true,
color: '#FF0000',
size: 14
},
fill: {
type: 'pattern',
pattern: 'solid',
fgColor: '#FFFF00'
},
border: {
top: { style: 'thin', color: '#000000' },
bottom: { style: 'thin', color: '#000000' }
}
});
cursor
.move('A1')
.setData('Merged Cells')
.colSpan(3) // Merge 3 columns
.formatCell({
alignment: { horizontal: 'center' }
});
const cursor = new ExcelCursor(workbook, 'Sheet1');
// Work with Sheet1
cursor.move('A1').setData('Sheet 1 Data');
// Create and switch to a new sheet
const sheet2 = workbook.addWorksheet('Sheet2');
cursor.switchSheet('Sheet2');
cursor.move('A1').setData('Sheet 2 Data');
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
Nguyen Van A - @nguyenvana
If you encounter any issues or have questions, please create an issue in the repository.