forked from sheetjs/sheetjs
write test
This commit is contained in:
parent
ed4df0765a
commit
0d419a6c0b
2
Makefile
2
Makefile
@ -14,4 +14,6 @@ update:
|
||||
git show master:tests/mocha.css > tests/mocha.css
|
||||
git show master:tests/mocha.js > tests/mocha.js
|
||||
git show master:tests/xhr-hack.js > tests/xhr-hack.js
|
||||
git show master:tests/write.js > tests/write.js
|
||||
git show master:tests/write.html > tests/write.html
|
||||
git show master:demos/datagrid/index.html > datagrid.html
|
||||
|
40
tests/write.html
Normal file
40
tests/write.html
Normal file
@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<!-- (C) 2013-present SheetJS http://sheetjs.com -->
|
||||
<!-- vim: set ts=2: -->
|
||||
<html>
|
||||
<head>
|
||||
<title>SheetJS JS-XLSX In-Browser Export Demo</title>
|
||||
<meta charset="utf-8" />
|
||||
<style>
|
||||
a { text-decoration: none }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
<h3><a href="//sheetjs.com/">SheetJS</a> JS-XLSX In-Browser Export Demo</h3>
|
||||
<b>Example Code</b>
|
||||
|
||||
/* Generate Workbook */
|
||||
var wb = XLSX.utils.book_new();
|
||||
var ws = XLSX.utils.aoa_to_sheet([["a","b"],[1,2,3]]);
|
||||
XLSX.utils.book_append_sheet(wb, ws, "SheetJS");
|
||||
|
||||
/* Trigger Download with `writeFile` */
|
||||
XLSX.writeFile(wb, "SheetJS.xlsb", {compression:true});
|
||||
|
||||
<b>Download Generation Methods:</b>
|
||||
|
||||
- IE6-9 require ActiveX and Windows Script support.
|
||||
The IE_SaveFile function from the included shim uses VBScript.
|
||||
|
||||
- IE10-11 use msSaveBlob API.
|
||||
|
||||
- When supported, `saveAs` will be used.
|
||||
|
||||
- When available, modern browsers use `URL.createObjectURL`.
|
||||
|
||||
</pre>
|
||||
<script src="shim.js"></script>
|
||||
<script src="xlsx.full.min.js"></script>
|
||||
<script src="write.js"></script>
|
||||
</body>
|
213
tests/write.js
Normal file
213
tests/write.js
Normal file
@ -0,0 +1,213 @@
|
||||
/* writing feature test -- look for TEST: in comments */
|
||||
/* vim: set ts=2 ft=javascript: */
|
||||
|
||||
if(typeof console === 'undefined') console = {log: function(){}};
|
||||
|
||||
var ext = typeof process !== 'undefined' && !!process.argv[2];
|
||||
|
||||
/* original data */
|
||||
var data = [
|
||||
[1, 2, 3],
|
||||
[true, false, null, "sheetjs"],
|
||||
["foo bar", "baz", new Date("2014-02-19T14:30Z"), "0.3"],
|
||||
["baz", null, "\u0BEE", 3.14159],
|
||||
["hidden"],
|
||||
["visible"]
|
||||
];
|
||||
|
||||
var ws_name = "SheetJS";
|
||||
|
||||
var wscols = [
|
||||
{wch: 6}, // "characters"
|
||||
{wpx: 50}, // "pixels"
|
||||
,
|
||||
{hidden: true} // hide column
|
||||
];
|
||||
|
||||
/* At 96 PPI, 1 pt = 1 px */
|
||||
var wsrows = [
|
||||
{hpt: 12}, // "points"
|
||||
{hpx: 16}, // "pixels"
|
||||
,
|
||||
{hpx: 24, level:3},
|
||||
{hidden: true}, // hide row
|
||||
{hidden: false}
|
||||
];
|
||||
|
||||
console.log("Sheet Name: " + ws_name);
|
||||
console.log("Data: ");
|
||||
var i = 0;
|
||||
for(i = 0; i !== data.length; ++i) console.log(data[i]);
|
||||
console.log("Columns :");
|
||||
for(i = 0; i !== wscols.length; ++i) console.log(wscols[i]);
|
||||
|
||||
/* require XLSX */
|
||||
if(typeof XLSX === "undefined") { try { XLSX = require('./'); } catch(e) { XLSX = require('../'); } }
|
||||
|
||||
/* blank workbook constructor */
|
||||
/*
|
||||
var wb = { SheetNames: [], Sheets: {} };
|
||||
*/
|
||||
var wb = XLSX.utils.book_new();
|
||||
|
||||
/* convert an array of arrays in JS to a CSF spreadsheet */
|
||||
var ws = XLSX.utils.aoa_to_sheet(data, {cellDates:true});
|
||||
|
||||
/* TEST: add worksheet to workbook */
|
||||
/*
|
||||
wb.SheetNames.push(ws_name);
|
||||
wb.Sheets[ws_name] = ws;
|
||||
*/
|
||||
XLSX.utils.book_append_sheet(wb, ws, ws_name);
|
||||
|
||||
/* TEST: simple formula */
|
||||
ws['C1'].f = "A1+B1";
|
||||
ws['C2'] = {t:'n', f:"A1+B1"};
|
||||
|
||||
/* TEST: single-cell array formula */
|
||||
/*
|
||||
ws['D1'] = {t:'n', f:"SUM(A1:C1*A1:C1)", F:"D1:D1"};
|
||||
*/
|
||||
XLSX.utils.sheet_set_array_formula(ws, 'D1:D1', "SUM(A1:C1*A1:C1)");
|
||||
|
||||
/* TEST: multi-cell array formula */
|
||||
/*
|
||||
ws['E1'] = {t:'n', f:"TRANSPOSE(A1:D1)", F:"E1:E4"};
|
||||
ws['E2'] = {t:'n', F:"E1:E4"};
|
||||
ws['E3'] = {t:'n', F:"E1:E4"};
|
||||
ws['E4'] = {t:'n', F:"E1:E4"};
|
||||
*/
|
||||
XLSX.utils.sheet_set_array_formula(ws, 'E1:E4', "TRANSPOSE(A1:D1)");
|
||||
ws["!ref"] = "A1:E6";
|
||||
|
||||
/* TEST: column props */
|
||||
ws['!cols'] = wscols;
|
||||
|
||||
/* TEST: row props */
|
||||
ws['!rows'] = wsrows;
|
||||
|
||||
/* TEST: hyperlink note: Excel does not automatically style hyperlinks */
|
||||
/*
|
||||
ws['A4'].l = { Target: "#E2" };
|
||||
*/
|
||||
XLSX.utils.cell_set_internal_link(ws['A4'], "E2");
|
||||
/*
|
||||
ws['A3'].l = { Target: "http://sheetjs.com", Tooltip: "Visit us <SheetJS.com!>" };
|
||||
*/
|
||||
XLSX.utils.cell_set_hyperlink(ws['A3'], "http://sheetjs.com", "Visit us <SheetJS.com!>");
|
||||
|
||||
/* TEST: built-in format */
|
||||
/*
|
||||
ws['B1'].z = "0%"; // Format Code 9
|
||||
*/
|
||||
XLSX.utils.cell_set_number_format(ws['B1'], "0%");
|
||||
|
||||
/* TEST: custom format */
|
||||
var custfmt = "\"This is \"\\ 0.0";
|
||||
/*
|
||||
ws['C2'].z = custfmt;
|
||||
*/
|
||||
XLSX.utils.cell_set_number_format(ws['C2'], custfmt);
|
||||
|
||||
/* TEST: page margins */
|
||||
ws['!margins'] = { left:1.0, right:1.0, top:1.0, bottom:1.0, header:0.5, footer:0.5 };
|
||||
|
||||
/* TEST: merge cells */
|
||||
ws['!merges'] = [ XLSX.utils.decode_range("A6:C6") ];
|
||||
|
||||
console.log("JSON Data:");
|
||||
console.log(XLSX.utils.sheet_to_json(ws, {header:1}));
|
||||
|
||||
/* TEST: hidden sheets */
|
||||
/*
|
||||
wb.SheetNames.push("Hidden");
|
||||
wb.Sheets["Hidden"] = XLSX.utils.aoa_to_sheet(["Hidden".split(""), [1,2,3]]);
|
||||
wb.Workbook = {Sheets:[]};
|
||||
wb.Workbook.Sheets[1] = {Hidden:1};
|
||||
*/
|
||||
var data_2 = ["Hidden".split(""), [1,true,3,'a',,'c'], [2,false,true,'sh33t',,'j5']];
|
||||
XLSX.utils.book_append_sheet(wb, XLSX.utils.aoa_to_sheet(data_2), "Hidden");
|
||||
XLSX.utils.book_set_sheet_visibility(wb, "Hidden", XLSX.utils.consts.SHEET_HIDDEN);
|
||||
|
||||
/* TEST: properties */
|
||||
wb.Props = {
|
||||
Title: "SheetJS Test",
|
||||
Subject: "Tests",
|
||||
Author: "Devs at SheetJS",
|
||||
Manager: "Sheet Manager",
|
||||
Company: "SheetJS",
|
||||
Category: "Experimentation",
|
||||
Keywords: "Test",
|
||||
Comments: "Nothing to say here",
|
||||
LastAuthor: "Not SheetJS",
|
||||
CreatedDate: new Date(2017,1,19)
|
||||
};
|
||||
|
||||
/* TEST: comments */
|
||||
/*
|
||||
ws['A4'].c = [];
|
||||
ws['A4'].c.push({a:"SheetJS",t:"I'm a little comment, short and stout!\n\nWell, Stout may be the wrong word"});
|
||||
*/
|
||||
XLSX.utils.cell_add_comment(ws['A4'], "I'm a little comment, short and stout!\n\nWell, Stout may be the wrong word", "SheetJS");
|
||||
|
||||
/* TEST: sheet protection */
|
||||
ws['!protect'] = {
|
||||
password:"password",
|
||||
/* enable formatting rows and columns */
|
||||
formatRows:false,
|
||||
formatColumns:false,
|
||||
/* disable editing objects and scenarios */
|
||||
objects:true,
|
||||
scenarios:true
|
||||
};
|
||||
|
||||
/* TEST: Workbook Properties */
|
||||
if(!wb.Workbook) wb.Workbook = {Sheets:[], WBProps:{}};
|
||||
if(!wb.Workbook.WBProps) wb.Workbook.WBProps = {};
|
||||
wb.Workbook.WBProps.filterPrivacy = true;
|
||||
if(ext) wb.Workbook.Views = [{RTL:true}];
|
||||
|
||||
console.log("Worksheet Model:");
|
||||
console.log(ws);
|
||||
|
||||
var filenames = [
|
||||
['sheetjs.xlsx', {bookSST:true}],
|
||||
['sheetjs.xlsm'],
|
||||
['sheetjs.xlsb'],
|
||||
['sheetjs.xlam'],
|
||||
['sheetjs.biff8.xls', {bookType:'xls'}],
|
||||
['sheetjs.biff5.xls', {bookType:'biff5'}],
|
||||
['sheetjs.biff2.xls', {bookType:'biff2'}],
|
||||
['sheetjs.xml.xls', {bookType:'xlml'}],
|
||||
['sheetjs.xla'],
|
||||
['sheetjs.ods'],
|
||||
['sheetjs.fods'],
|
||||
['sheetjs.csv'],
|
||||
['sheetjs.txt'],
|
||||
['sheetjs.slk'],
|
||||
['sheetjs.eth'],
|
||||
['sheetjs.htm'],
|
||||
['sheetjs.dif'],
|
||||
['sheetjs.dbf', {sheet:"Hidden"}],
|
||||
['sheetjs.rtf'],
|
||||
['sheetjs.prn']
|
||||
];
|
||||
|
||||
var OUT = ["base64", "binary", "string", "array"];
|
||||
if(typeof Buffer !== 'undefined') OUT.push("buffer");
|
||||
filenames.forEach(function(r) {
|
||||
/* write file */
|
||||
XLSX.writeFile(wb, r[0], r[1]);
|
||||
/* test by reading back files */
|
||||
if(typeof process !== 'undefined') XLSX.readFile(r[0]);
|
||||
|
||||
var ext = r[1] && r[1].bookType || r[0].split(".")[1];
|
||||
ext = {"htm":"html"}[ext] || ext;
|
||||
OUT.forEach(function(type) {
|
||||
if(type == "string" && ["xlsx", "xlsm", "xlsb", "xlam", "biff8", "biff5", "xla", "ods", "dbf"].indexOf(ext) > -1) return;
|
||||
if(type == "array" && ["xlsx", "xlsm", "xlsb", "xlam", "ods"].indexOf(ext) > -1 && typeof Uint8Array === 'undefined') return;
|
||||
var datout = XLSX.write(wb, {type: type, bookType: ext, sheet:r[1] && r[1].sheet || null});
|
||||
XLSX.read(datout, {type:type});
|
||||
if(type == "array") console.log(ext, datout);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user