2.7 KiB
Deno
Deno is a runtime capable of running JS code including this library. There are a few different builds and recommended use cases as covered in this demo.
For user code, the sheetjs module can be used.
Reading and Writing Files
In general, the command-line flag --allow-read must be passed to enable file
reading. The flag --allow-write must be passed to enable file writing.
Starting in version 0.18.1, this library will check for the Deno global and
use Deno.readFileSync and Deno.writeFileSync behind the scenes.
For older versions, the API functions must be called from user code.
Reading a File
const filedata = Deno.readFileSync("test.xlsx");
const workbook = XLSX.read(filedata, {type: "buffer"});
/* DO SOMETHING WITH workbook HERE */
Writing a File
Older versions of the library did not properly detect features from Deno, so the
buffer export would return an array of bytes. Since Deno.writeFileSync does
not handle byte arrays, user code must generate a Uint8Array first:
const buf = XLSX.write(workbook, {type: "buffer", bookType: "xlsb"});
const u8: Uint8Array = new Uint8Array(buf);
Deno.writeFileSync("test.xlsb", u8);
Demos
Complete Examples
sheet2csv.ts is a complete command-line tool for generating CSV text from
workbooks. Building the application is incredibly straightforward:
$ deno compile -r --allow-read sheet2csv.ts # build the sheet2csv binary
$ ./sheet2csv test.xlsx # print the first worksheet as CSV
$ ./sheet2csv test.xlsx s5s # print worksheet "s5s" as CSV
The server demo includes a sample Deno server for parsing uploads
and generating HTML TABLE previews.
Module Import Scenarios
All demos attempt to read a file and write a new file. doit.ts
accepts the XLSX module as an argument.
ximports the ESM build without the codepage library:
// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts"
import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs';
mjsimports the ESM build and the associated codepage library:
import * as XLSX from '../../xlsx.mjs';
/* recommended for reading XLS files */
import * as cptable from '../../dist/cptable.full.mjs';
XLSX.set_cptable(cptable);
jspmimports the browser standalone script using JSPM:
import * as XLSX from 'https://jspm.dev/npm:xlsx!cjs';
nodeuses the node compatibility layer:
import { createRequire } from 'https://deno.land/std/node/module.ts';
const require = createRequire(import.meta.url);
const XLSX = require('../../');