forked from sheetjs/sheetjs
react demo avoid readAsBinaryString [ci skip]
This commit is contained in:
parent
7468f3b635
commit
36a1a4e9b8
1
demos/react/.gitignore
vendored
1
demos/react/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
SheetJS
|
||||
.next
|
||||
static/shim.js
|
||||
public/shim.js
|
||||
|
@ -4,9 +4,9 @@ react: init ## Simple server for react and clones
|
||||
|
||||
.PHONY: next
|
||||
next: init ## next.js demo
|
||||
mkdir -p pages static
|
||||
mkdir -p pages public
|
||||
cat nexthdr.js sheetjs.js > pages/sheetjs.js
|
||||
cp ../../shim.js static/shim.js
|
||||
cp ../../shim.js public/shim.js
|
||||
next
|
||||
|
||||
.PHONY: native
|
||||
|
@ -1,2 +1,3 @@
|
||||
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
||||
import XLSX from 'xlsx';
|
||||
import React from 'react';
|
@ -1,12 +1,12 @@
|
||||
import Head from 'next/head'
|
||||
import SheetJSApp from './sheetjs.js'
|
||||
export default () => (
|
||||
import SheetJSApp from './sheetjs'
|
||||
const Index = () => (
|
||||
<div>
|
||||
<Head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta httpEquiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<title>SheetJS React Demo</title>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
|
||||
<script src="/static/shim.js"></script>
|
||||
<script src="/shim.js"></script>
|
||||
<style jsx>{`
|
||||
body, #app { height: 100%; };
|
||||
`}</style>
|
||||
@ -19,4 +19,5 @@ export default () => (
|
||||
</div>
|
||||
<SheetJSApp />
|
||||
</div>
|
||||
)
|
||||
);
|
||||
export default Index;
|
24
demos/react/react-native.js
vendored
24
demos/react/react-native.js
vendored
@ -1,16 +1,16 @@
|
||||
/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
|
||||
import XLSX from 'xlsx';
|
||||
import React, { Component } from 'react';
|
||||
import {
|
||||
AppRegistry,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
Button,
|
||||
Alert,
|
||||
Image,
|
||||
ScrollView,
|
||||
TouchableWithoutFeedback
|
||||
import {
|
||||
AppRegistry,
|
||||
StyleSheet,
|
||||
Text,
|
||||
View,
|
||||
Button,
|
||||
Alert,
|
||||
Image,
|
||||
ScrollView,
|
||||
TouchableWithoutFeedback
|
||||
} from 'react-native';
|
||||
import { Table, Row, Rows, TableWrapper } from 'react-native-table-component';
|
||||
|
||||
@ -78,7 +78,7 @@ export default class SheetJS extends Component {
|
||||
}).catch((err) => { Alert.alert("exportFile Error", "Error " + err.message); });
|
||||
};
|
||||
|
||||
render() {
|
||||
render() {
|
||||
return (
|
||||
<ScrollView contentContainerStyle={styles.container} vertical={true}>
|
||||
<Text style={styles.welcome}> </Text>
|
||||
@ -105,7 +105,7 @@ export default class SheetJS extends Component {
|
||||
</Table>
|
||||
</ScrollView>
|
||||
</ScrollView>
|
||||
);
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -11,11 +11,10 @@ function SheetJSApp() {
|
||||
|
||||
const handleFile = (file) => {
|
||||
const reader = new FileReader();
|
||||
const rABS = !!reader.readAsBinaryString;
|
||||
reader.onload = (e) => {
|
||||
/* Parse data */
|
||||
const bstr = e.target.result;
|
||||
const wb = XLSX.read(bstr, {type:rABS ? 'binary' : 'array'});
|
||||
const ab = e.target.result;
|
||||
const wb = XLSX.read(ab, {type:'array'});
|
||||
/* Get first worksheet */
|
||||
const wsname = wb.SheetNames[0];
|
||||
const ws = wb.Sheets[wsname];
|
||||
@ -25,7 +24,7 @@ function SheetJSApp() {
|
||||
setData(data);
|
||||
setCols(make_cols(ws['!ref']))
|
||||
};
|
||||
if(rABS) reader.readAsBinaryString(file); else reader.readAsArrayBuffer(file);
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
||||
const exportFile = () => {
|
||||
@ -70,9 +69,9 @@ function DragDropFile({ handleFile, children }) {
|
||||
};
|
||||
|
||||
return (
|
||||
<div
|
||||
onDrop={handleDrop}
|
||||
onDragEnter={suppress}
|
||||
<div
|
||||
onDrop={handleDrop}
|
||||
onDragEnter={suppress}
|
||||
onDragOver={suppress}
|
||||
>
|
||||
{children}
|
||||
@ -97,12 +96,12 @@ function DataInput({ handleFile }) {
|
||||
<div className="form-group">
|
||||
<label htmlFor="file">Drag or choose a spreadsheet file</label>
|
||||
<br />
|
||||
<input
|
||||
type="file"
|
||||
className="form-control"
|
||||
id="file"
|
||||
accept={SheetJSFT}
|
||||
onChange={handleChange}
|
||||
<input
|
||||
type="file"
|
||||
className="form-control"
|
||||
id="file"
|
||||
accept={SheetJSFT}
|
||||
onChange={handleChange}
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
|
Loading…
Reference in New Issue
Block a user