forked from sheetjs/sheetjs
fixes for reading dates in Chrome
This commit is contained in:
parent
43a7a5ea07
commit
dd6bb022e2
38
README.md
38
README.md
@ -1644,6 +1644,44 @@ data grid for previewing and modifying structured data in the web browser. The
|
|||||||
`stox` function for converting from a workbook to x-spreadsheet data object.
|
`stox` function for converting from a workbook to x-spreadsheet data object.
|
||||||
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Previewing data in a React data grid</b> (click to show)</summary>
|
||||||
|
|
||||||
|
[`react-data-grid`](https://npm.im/react-data-grid) is a data grid tailored for
|
||||||
|
react. It expects two properties: `rows` of data objects and `columns` which
|
||||||
|
describe the columns. For the purposes of massaging the data to fit the react
|
||||||
|
data grid API it is easiest to start from an array of arrays:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import DataGrid from "react-data-grid";
|
||||||
|
import { read, utils } from "xlsx";
|
||||||
|
|
||||||
|
const url = "https://oss.sheetjs.com/test_files/RkNumber.xls";
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
const [columns, setColumns] = useState([]);
|
||||||
|
const [rows, setRows] = useState([]);
|
||||||
|
useEffect(() => {(async () => {
|
||||||
|
const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 });
|
||||||
|
|
||||||
|
/* use sheet_to_json with header: 1 to generate an array of arrays */
|
||||||
|
const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 });
|
||||||
|
|
||||||
|
/* see react-data-grid docs to understand the shape of the expected data */
|
||||||
|
setColumns(data[0].map((r) => ({ key: r, name: r })));
|
||||||
|
setRows(data.slice(1).map((r) => r.reduce((acc, x, i) => {
|
||||||
|
acc[data[0][i]] = x;
|
||||||
|
return acc;
|
||||||
|
}, {})));
|
||||||
|
})(); });
|
||||||
|
|
||||||
|
return <DataGrid columns={columns} rows={rows} />;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Populating a database (SQL or no-SQL)</b> (click to show)</summary>
|
<summary><b>Populating a database (SQL or no-SQL)</b> (click to show)</summary>
|
||||||
|
|
||||||
|
@ -139,13 +139,18 @@ function fuzzynum(s/*:string*/)/*:number*/ {
|
|||||||
if(!isNaN(v = Number(ss))) return v / wt;
|
if(!isNaN(v = Number(ss))) return v / wt;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
var lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];
|
||||||
function fuzzydate(s/*:string*/)/*:Date*/ {
|
function fuzzydate(s/*:string*/)/*:Date*/ {
|
||||||
var o = new Date(s), n = new Date(NaN);
|
var o = new Date(s), n = new Date(NaN);
|
||||||
var y = o.getYear(), m = o.getMonth(), d = o.getDate();
|
var y = o.getYear(), m = o.getMonth(), d = o.getDate();
|
||||||
if(isNaN(d)) return n;
|
if(isNaN(d)) return n;
|
||||||
|
var lower = s.toLowerCase();
|
||||||
|
if(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {
|
||||||
|
lower = lower.replace(/[^a-z]/g,"");
|
||||||
|
if(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;
|
||||||
|
} else if(lower.match(/[a-z]/)) return n;
|
||||||
if(y < 0 || y > 8099) return n;
|
if(y < 0 || y > 8099) return n;
|
||||||
if((m > 0 || d > 1) && y != 101) return o;
|
if((m > 0 || d > 1) && y != 101) return o;
|
||||||
if(s.toLowerCase().match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) return o;
|
|
||||||
if(s.match(/[^-0-9:,\/\\]/)) return n;
|
if(s.match(/[^-0-9:,\/\\]/)) return n;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,46 @@ data grid for previewing and modifying structured data in the web browser. The
|
|||||||
`stox` function for converting from a workbook to x-spreadsheet data object.
|
`stox` function for converting from a workbook to x-spreadsheet data object.
|
||||||
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Previewing data in a React data grid</b> (click to show)</summary>
|
||||||
|
|
||||||
|
[`react-data-grid`](https://npm.im/react-data-grid) is a data grid tailored for
|
||||||
|
react. It expects two properties: `rows` of data objects and `columns` which
|
||||||
|
describe the columns. For the purposes of massaging the data to fit the react
|
||||||
|
data grid API it is easiest to start from an array of arrays.
|
||||||
|
|
||||||
|
This demo starts by fetching a remote file and using `XLSX.read` to extract:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import DataGrid from "react-data-grid";
|
||||||
|
import { read, utils } from "xlsx";
|
||||||
|
|
||||||
|
const url = "https://oss.sheetjs.com/test_files/RkNumber.xls";
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
const [columns, setColumns] = useState([]);
|
||||||
|
const [rows, setRows] = useState([]);
|
||||||
|
useEffect(() => {(async () => {
|
||||||
|
const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 });
|
||||||
|
|
||||||
|
/* use sheet_to_json with header: 1 to generate an array of arrays */
|
||||||
|
const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 });
|
||||||
|
|
||||||
|
/* see react-data-grid docs to understand the shape of the expected data */
|
||||||
|
setColumns(data[0].map((r) => ({ key: r, name: r })));
|
||||||
|
setRows(data.slice(1).map((r) => r.reduce((acc, x, i) => {
|
||||||
|
acc[data[0][i]] = x;
|
||||||
|
return acc;
|
||||||
|
}, {})));
|
||||||
|
})(); });
|
||||||
|
|
||||||
|
return <DataGrid columns={columns} rows={rows} />;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary><b>Populating a database (SQL or no-SQL)</b> (click to show)</summary>
|
<summary><b>Populating a database (SQL or no-SQL)</b> (click to show)</summary>
|
||||||
|
|
||||||
|
@ -1538,6 +1538,41 @@ data grid for previewing and modifying structured data in the web browser. The
|
|||||||
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
<https://oss.sheetjs.com/sheetjs/x-spreadsheet> is a live demo.
|
||||||
|
|
||||||
|
|
||||||
|
[`react-data-grid`](https://npm.im/react-data-grid) is a data grid tailored for
|
||||||
|
react. It expects two properties: `rows` of data objects and `columns` which
|
||||||
|
describe the columns. For the purposes of massaging the data to fit the react
|
||||||
|
data grid API it is easiest to start from an array of arrays:
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
|
import DataGrid from "react-data-grid";
|
||||||
|
import { read, utils } from "xlsx";
|
||||||
|
|
||||||
|
const url = "https://oss.sheetjs.com/test_files/RkNumber.xls";
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
const [columns, setColumns] = useState([]);
|
||||||
|
const [rows, setRows] = useState([]);
|
||||||
|
useEffect(() => {(async () => {
|
||||||
|
const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 });
|
||||||
|
|
||||||
|
/* use sheet_to_json with header: 1 to generate an array of arrays */
|
||||||
|
const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 });
|
||||||
|
|
||||||
|
/* see react-data-grid docs to understand the shape of the expected data */
|
||||||
|
setColumns(data[0].map((r) => ({ key: r, name: r })));
|
||||||
|
setRows(data.slice(1).map((r) => r.reduce((acc, x, i) => {
|
||||||
|
acc[data[0][i]] = x;
|
||||||
|
return acc;
|
||||||
|
}, {})));
|
||||||
|
})(); });
|
||||||
|
|
||||||
|
return <DataGrid columns={columns} rows={rows} />;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The [`database` demo](/demos/database/) includes examples of working with
|
The [`database` demo](/demos/database/) includes examples of working with
|
||||||
databases and query results.
|
databases and query results.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user