当前位置:首页 > 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 添加图片:

react实现excel的导出

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文件默认不包含公式和宏功能

标签: reactexcel
分享给朋友:

相关文章

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。 /…

react如何迭代

react如何迭代

在 React 中迭代数组或对象 React 提供了多种方式来处理数组或对象的迭代,以下是常见的方法: 使用 map 方法迭代数组 map 是 JavaScript 数组的内置方法,常用于在 Rea…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

react 如何debug

react 如何debug

React 调试方法 使用 React Developer Tools React Developer Tools 是浏览器扩展,支持 Chrome 和 Firefox。安装后,可以在开发者工具中查看…

react 如何操作cookie

react 如何操作cookie

安装依赖 在React项目中操作cookie通常需要第三方库的支持,推荐使用js-cookie。通过npm或yarn安装: npm install js-cookie # 或 yarn add js…