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.
Pham Van Nguyen - @npv2k1
If you encounter any issues or have questions, please create an issue in the repository.