66 lines
2.2 KiB
TypeScript
66 lines
2.2 KiB
TypeScript
|
import React, { useRef } from "react";
|
||
|
import { utils, writeFileXLSX } from 'xlsx';
|
||
|
import Table from '@mui/material/Table';
|
||
|
import TableBody from '@mui/material/TableBody';
|
||
|
import TableCell from '@mui/material/TableCell';
|
||
|
import TableContainer from '@mui/material/TableContainer';
|
||
|
import TableHead from '@mui/material/TableHead';
|
||
|
import TableRow from '@mui/material/TableRow';
|
||
|
import Paper from '@mui/material/Paper';
|
||
|
|
||
|
function createData(
|
||
|
name: string,
|
||
|
calories: number,
|
||
|
fat: number,
|
||
|
carbs: number,
|
||
|
protein: number,
|
||
|
) {
|
||
|
return { name, calories, fat, carbs, protein };
|
||
|
}
|
||
|
|
||
|
const rows = [
|
||
|
createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
|
||
|
createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
|
||
|
createData('Eclair', 262, 16.0, 24, 6.0),
|
||
|
createData('Cupcake', 305, 3.7, 67, 4.3),
|
||
|
createData('Gingerbread', 356, 16.0, 49, 3.9),
|
||
|
];
|
||
|
|
||
|
export default function BasicTable() {
|
||
|
const tbl = useRef<HTMLTableElement>(null);
|
||
|
return ( <>
|
||
|
<button onClick={() => {
|
||
|
const wb = utils.table_to_book(tbl.current);
|
||
|
writeFileXLSX(wb, "SheetJSMaterialUI.xlsx");
|
||
|
}}>Export</button>
|
||
|
<TableContainer component={Paper}>
|
||
|
<Table sx={{ minWidth: 650 }} aria-label="simple table" ref={tbl}>
|
||
|
<TableHead>
|
||
|
<TableRow>
|
||
|
<TableCell>Dessert (100g serving)</TableCell>
|
||
|
<TableCell align="right">Calories</TableCell>
|
||
|
<TableCell align="right">Fat (g)</TableCell>
|
||
|
<TableCell align="right">Carbs (g)</TableCell>
|
||
|
<TableCell align="right">Protein (g)</TableCell>
|
||
|
</TableRow>
|
||
|
</TableHead>
|
||
|
<TableBody>
|
||
|
{rows.map((row) => (
|
||
|
<TableRow
|
||
|
key={row.name}
|
||
|
sx={{ '&:last-child td, &:last-child th': { border: 0 } }}
|
||
|
>
|
||
|
<TableCell component="th" scope="row">
|
||
|
{row.name}
|
||
|
</TableCell>
|
||
|
<TableCell align="right">{row.calories}</TableCell>
|
||
|
<TableCell align="right">{row.fat}</TableCell>
|
||
|
<TableCell align="right">{row.carbs}</TableCell>
|
||
|
<TableCell align="right">{row.protein}</TableCell>
|
||
|
</TableRow>
|
||
|
))}
|
||
|
</TableBody>
|
||
|
</Table>
|
||
|
</TableContainer>
|
||
|
</> );
|
||
|
}
|