forked from SheetJS/sheetjs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
superagent.html
82 lines (75 loc) · 2.8 KB
/
superagent.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!DOCTYPE html>
<!-- xlsx.js (C) 2013-present SheetJS http://sheetjs.com -->
<!-- vim: set ts=2: -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>SheetJS Live Demo</title>
<style>
a { text-decoration: none }
</style>
</head>
<body>
<pre>
<b><a href="http://sheetjs.com">SheetJS Data Preview Live Demo</a></b>
<a href="https://github.com/SheetJS/js-xlsx">Source Code Repo</a>
<a href="https://github.com/SheetJS/js-xlsx/issues">Issues? Something look weird? Click here and report an issue</a>
<br/><div id="fileurl"></div>
</pre>
<div id="htmlout"></div>
<br />
<button id="ulbutton">Click here to upload the modified table</button>
<pre>
<div id="outfile"></div>
</pre>
<script src="xlsx.full.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/superagent.min.js"></script>
<script>
var demo = 'superagent', book = 'xlsx', orig = 'sheetjs.xlsx';
if(!window.superagent) throw new Error("This demo is not supported in your browser");
function process_wb(wb) {
console.log(wb);
htmlout.innerHTML = XLSX.utils.sheet_to_html(wb.Sheets[wb.SheetNames[0]], {editable:true}).replace("<table", '<table id="table" border="1"');
}
var path = 'files/' + demo + '.' + book;
document.getElementById('fileurl').innerHTML = '<a href="' + orig + '">Download original file</a>';
document.getElementById('outfile').innerHTML = '<a href="' + path + '">Download new file: ' + path + '</a>';
superagent.get(orig).responseType('arraybuffer').end(function(e, res) {
if(!e) {
var data = new Uint8Array(res.body);
var wb = XLSX.read(data, {type:"array"});
process_wb(wb);
return;
}
if(/404/.test(e.message) || e.response.status) {
var ws = XLSX.utils.aoa_to_sheet([
["Fetch for " + orig + " failed :("],
["Error Code", e.response.status],
["Error Text", e.message],
]);
ws["!merges"] = [XLSX.utils.decode_range("A1:B1")];
process_wb({ "Sheets": { "Sheet1": ws }, "SheetNames": [ "Sheet1" ] });
}
});
document.getElementById('ulbutton').onclick = function() {
var wb = XLSX.utils.table_to_book(document.getElementById('htmlout'));
console.log(wb);
var fd = new FormData();
var data = XLSX.write(wb, {bookType:book, type:'array'});
console.log(data);
fd.append('data', new File([data], demo + '.' + book));
superagent.post("/upload").send(fd).end(function(e,r) { console.log(r.text); });
};
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-36810333-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>