当前位置:首页 > 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

react实现excel的导出

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 导出:

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

标签: reactexcel
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高 React Native 允许开发者使用 JavaScript 和 React 编写代码,同时生成 iOS 和 Android 应用,大幅减少开发成…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。…

react 如何遍历

react 如何遍历

遍历数组 在React中遍历数组通常使用map方法,它会返回一个新的数组。map是处理数组并渲染列表元素的首选方法。 const items = ['Apple', 'Banana', 'Cherr…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

如何清洁react

如何清洁react

清洁 React 项目的方法 删除未使用的依赖项 运行 npm ls 或 yarn list 检查已安装的依赖项,使用 npm uninstall <package> 或 yarn rem…