xlsx-column

Works with *.xlsx column names.

Usage no npm install needed!

<script type="module">
  import xlsxColumn from 'https://cdn.skypack.dev/xlsx-column';
</script>

README

All dependencies Reported vulnerabilities Commits NPM-version Total downloads Developed by
Publish size Install size Minified size Minified + gzipped size

xlsx-column@2.2.1

With xlsx-column you are convenient to operate with *.xlsx column names such as A, Z, AA, AAB, etc.

Installation

xlsx-column is available via NPM:

$ npm i xlsx-column@2.2.1

Usage

Class instance:

import XLSXColumn from 'xlsx-column';

// String constructor parameter
const column = new XLSXColumn('Z');  // 26th column

column.inc();  // Increment by 1
console.log(String(column));  // AA
console.log(+column);  // 27  // 27th column starting from 1

// Chaining is also possible
console.log(column.dec(15).toString());  // L
import XLSXColumn from 'xlsx-column';

// Number constructor parameter
const column = new XLSXColumn(26);  // 'Z' column

column.inc(4);  // Increment by 4
console.log(String(column));  // AD
console.log(+column);  // 30  // 30th column starting from 1

// Chaining is also possible
console.log(column.dec().toString());  // AC

Static methods with lost this context:

import { incColumn, decColumn, numToColumn, colToNumber } from 'xlsx-column';

console.log(numToColumn(2 ** 14));  // XFD (max Excel column number)
console.log(numToColumn(10e9));  // AFIPYQJP (and even more)

console.log(colToNumber('A'));  // 1
console.log(colToNumber('AA'));  // 27

console.log(incColumn('AX'));  // AY
console.log(incColumn('AX', 4));  // BB

// Capital letters are not necessary
console.log(decColumn('ay'));  // AX
console.log(decColumn('bb', 4));  // AX

Loops:

import XLSXColumn from 'xlsx-column';

for(const column = new XLSXColumn('ZY'); column <= new XLSXColumn('AAC'); column.inc()) {
  console.log(column.toString());
}

/*
  1st iteration: 'ZY'
  2nd iteration: 'ZZ'
  3rd iteration: 'AAA'
  4th iteration: 'AAB'
  5th iteration: 'AAC'
*/

Using XLSXColumn.range method based on iterator:

import { range } from 'xlsx-column';

for(const column of range('ZY', 'AAC')) {
  console.log(column.toString());
}

/*
  1st iteration: 'ZY'
  2nd iteration: 'ZZ'
  3rd iteration: 'AAA'
  4th iteration: 'AAB'
  5th iteration: 'AAC'
*/

Testing

$ npm test

Your improve suggestions and bug reports are welcome any time.