当前位置:首页 > React

react实现excel的导出

2026-01-27 12:36:25React

使用 xlsx 库实现 Excel 导出

安装 xlsx 库:

npm install xlsx

创建一个工作簿并导出为 Excel 文件:

import * as XLSX from 'xlsx';

const exportToExcel = (data, fileName) => {
  const ws = XLSX.utils.json_to_sheet(data);
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  XLSX.writeFile(wb, `${fileName}.xlsx`);
};

// 使用示例
const data = [
  { Name: "John", Age: 30 },
  { Name: "Jane", Age: 25 }
];
exportToExcel(data, "users");

使用 react-csv 库实现 CSV 导出(兼容 Excel)

安装 react-csv

npm install react-csv

在组件中使用:

import { CSVLink } from 'react-csv';

const MyComponent = () => {
  const data = [
    { Name: "John", Age: 30 },
    { Name: "Jane", Age: 25 }
  ];

  return (
    <CSVLink data={data} filename={"users.csv"}>
      Export to Excel
    </CSVLink>
  );
};

自定义样式和复杂表格导出

对于需要复杂格式的 Excel 导出:

const exportComplexExcel = () => {
  const ws_data = [
    ["Name", "Age", "Score"],
    ["John", 30, 85],
    ["Jane", 25, 92]
  ];

  const ws = XLSX.utils.aoa_to_sheet(ws_data);
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Report");

  // 设置单元格样式(需要xlsx-style库)
  ws["A1"].s = { font: { bold: true, color: { rgb: "FF0000" } } };

  XLSX.writeFile(wb, "report.xlsx");
};

处理大数据量导出

对于大量数据的分块处理:

const exportLargeData = async (largeData) => {
  const chunkSize = 10000;
  const wb = XLSX.utils.book_new();

  for (let i = 0; i < largeData.length; i += chunkSize) {
    const chunk = largeData.slice(i, i + chunkSize);
    const ws = XLSX.utils.json_to_sheet(chunk);
    XLSX.utils.book_append_sheet(wb, ws, `Sheet${i/chunkSize + 1}`);
  }

  XLSX.writeFile(wb, "large_data.xlsx");
};

添加图片到 Excel

使用 xlsxxlsx-style 添加图片:

import * as XLSX from 'xlsx';
import * as XLSXStyle from 'xlsx-style';

const exportWithImage = () => {
  const ws = XLSX.utils.aoa_to_sheet([["Product", "Image"]]);
  ws["B2"] = { t: "s", v: "IMAGE", s: { border: { top: { style: "thin" } } } };

  // 实际实现需要处理base64图片数据
  // 并添加到工作表的相应位置

  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Products");
  XLSX.writeFile(wb, "products.xlsx");
};

注意事项

  1. 前端大量数据导出可能影响性能,建议超过1万条数据时考虑后端导出
  2. 复杂格式和样式需要额外处理,可能需要使用 xlsx-style 扩展
  3. 浏览器兼容性问题需要注意,特别是IE浏览器
  4. 导出的Excel文件默认不包含公式和宏功能

react实现excel的导出

标签: reactexcel
分享给朋友:

相关文章

如何学react

如何学react

学习 React 的基础知识 React 是一个用于构建用户界面的 JavaScript 库。学习 React 的第一步是掌握其核心概念,包括组件、状态(State)、属性(Props)和生命周期方法…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数…

react如何刷新

react如何刷新

刷新React组件的方法 使用状态更新触发重新渲染 通过更新组件的状态可以触发重新渲染。React会在状态变化时自动重新渲染组件。 const [count, setCount] = useStat…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…

react如何发布

react如何发布

发布React应用的步骤 构建生产版本 使用以下命令生成优化后的生产版本代码,代码会被压缩并移除开发环境中的调试工具: npm run build 构建完成后会生成build文件夹,包含所有静态资源…