forked from sheetjs/docs.sheetjs.com
		
	
		
			
				
	
	
		
			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>
 | |
|   </> );
 | |
| } |