当前位置:首页 > React

react实现excel下载

2026-01-27 05:38:08React

使用 xlsx 库实现 Excel 下载

安装 xlsx 库,这是一个流行的 JavaScript 库,用于处理 Excel 文件。

npm install xlsx

创建一个函数生成 Excel 文件并触发下载。

import * as XLSX from 'xlsx';

const downloadExcel = (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 }
];

<button onClick={() => downloadExcel(data, "users")}>Download Excel</button>

使用 file-saverxlsx 实现下载

如果需要更灵活的下载控制,可以结合 file-saver 库。

安装依赖:

npm install xlsx file-saver

实现代码:

import * as XLSX from 'xlsx';
import { saveAs } from 'file-saver';

const downloadExcel = (data, fileName) => {
  const ws = XLSX.utils.json_to_sheet(data);
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  const excelBuffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
  const blob = new Blob([excelBuffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
  saveAs(blob, `${fileName}.xlsx`);
};

从 API 获取数据并下载

如果数据需要从 API 获取,可以在获取数据后调用下载函数。

const fetchAndDownload = async () => {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  downloadExcel(data, "api_data");
};

<button onClick={fetchAndDownload}>Download from API</button>

自定义 Excel 样式和格式

xlsx 库支持自定义样式和格式,可以通过设置单元格属性实现。

const ws = XLSX.utils.json_to_sheet(data);
ws['A1'].s = { font: { bold: true }, fill: { fgColor: { rgb: "FFFFAA00" } } };

使用 react-excel-renderer

如果需要更简单的集成,可以使用 react-excel-renderer

安装依赖:

npm install react-excel-renderer

实现代码:

import { ExcelRenderer } from 'react-excel-renderer';

const downloadExcel = (data, fileName) => {
  ExcelRenderer.exportToExcel(data, fileName);
};

注意事项

确保数据格式正确,避免包含循环引用或不可序列化的对象。文件名应避免特殊字符,确保跨浏览器兼容性。对于大量数据,考虑分块处理以避免性能问题。

react实现excel下载

标签: reactexcel
分享给朋友:

相关文章

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

如何手写一个react

如何手写一个react

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

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yar…