ExcelImportExport.jsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import React from 'react';
  2. import * as XLSX from 'xlsx';
  3. const ExcelImportExport = ({ members, onImport }) => {
  4. const handleExport = () => {
  5. const worksheet = XLSX.utils.json_to_sheet(members);
  6. const workbook = XLSX.utils.book_new();
  7. XLSX.utils.book_append_sheet(workbook, worksheet, "Members");
  8. XLSX.writeFile(workbook, "members.xlsx");
  9. };
  10. const handleImport = (e) => {
  11. const file = e.target.files[0];
  12. const reader = new FileReader();
  13. reader.onload = (event) => {
  14. const bstr = event.target.result;
  15. const workbook = XLSX.read(bstr, { type: 'binary' });
  16. const worksheetName = workbook.SheetNames[0];
  17. const worksheet = workbook.Sheets[worksheetName];
  18. const data = XLSX.utils.sheet_to_json(worksheet);
  19. onImport(data);
  20. };
  21. reader.readAsBinaryString(file);
  22. };
  23. return (
  24. <div>
  25. <button onClick={handleExport}>导出 Excel</button>
  26. <input type="file" onChange={handleImport} accept=".xlsx, .xls" />
  27. </div>
  28. );
  29. };
  30. export default ExcelImportExport;