当前位置:首页 > React

react如何绘制word表

2026-03-10 17:59:11React

使用 docx 库生成 Word 表格

在 React 中生成 Word 表格可以通过 docx 库实现。这是一个专门用于创建和操作 .docx 文件的 JavaScript 库。安装依赖后,可以动态生成表格并下载为 Word 文档。

安装依赖:

npm install docx

示例代码:

import { Document, Paragraph, Table, TableRow, TableCell, WidthType, Packer } from "docx";

const generateWordTable = () => {
  const table = new Table({
    rows: [
      new TableRow({
        children: [
          new TableCell({ children: [new Paragraph("姓名")], width: { size: 2000, type: WidthType.DXA } }),
          new TableCell({ children: [new Paragraph("年龄")], width: { size: 2000, type: WidthType.DXA } }),
        ],
      }),
      new TableRow({
        children: [
          new TableCell({ children: [new Paragraph("张三")] }),
          new TableCell({ children: [new Paragraph("25")] }),
        ],
      }),
    ],
  });

  const doc = new Document({ sections: [{ children: [table] }] });
  Packer.toBlob(doc).then(blob => {
    const link = document.createElement("a");
    link.href = URL.createObjectURL(blob);
    link.download = "表格.docx";
    link.click();
  });
};

function App() {
  return <button onClick={generateWordTable}>生成 Word 表格</button>;
}

使用 html-docx-js 转换 HTML 表格

如果已有 HTML 表格结构,可以使用 html-docx-js 将其转换为 Word 文档。这种方式适合从现有页面内容生成 Word 文件。

安装依赖:

react如何绘制word表

npm install html-docx-js

示例代码:

import { asBlob } from "html-docx-js";

const exportAsWord = () => {
  const htmlString = `
    <table border="1">
      <tr><th>产品</th><th>价格</th></tr>
      <tr><td>笔记本</td><td>5000</td></tr>
    </table>
  `;
  const blob = asBlob(htmlString);
  const link = document.createElement("a");
  link.href = URL.createObjectURL(blob);
  link.download = "产品列表.docx";
  link.click();
};

function App() {
  return <button onClick={exportAsWord}>导出为 Word</button>;
}

使用 office-ui-fabric-react 组件库

微软官方提供的 office-ui-fabric-react 包含专门用于 Office 集成的组件,支持表格的渲染和导出功能。

安装依赖:

react如何绘制word表

npm install @fluentui/react

示例代码:

import { DetailsList, IColumn } from "@fluentui/react";
import { WordExport } from "@fluentui/react-excel-export";

const columns: IColumn[] = [
  { key: "name", name: "名称", fieldName: "name", minWidth: 100 },
  { key: "value", name: "数值", fieldName: "value", minWidth: 100 },
];

const items = [
  { name: "项目A", value: 100 },
  { name: "项目B", value: 200 },
];

const exportToWord = () => {
  WordExport.exportDetailsListToWord("导出数据", columns, items);
};

function App() {
  return (
    <>
      <DetailsList items={items} columns={columns} />
      <button onClick={exportToWord}>导出到 Word</button>
    </>
  );
}

服务端生成方案

对于复杂表格或需要后端处理的场景,可以通过 API 调用服务端生成 Word 文件。常用服务端库包括:

  • Python: python-docx
  • Java: Apache POI
  • Node.js: docxofficegen

前端调用示例:

const fetchWordDocument = async () => {
  const response = await fetch("/api/generate-word");
  const blob = await response.blob();
  const link = document.createElement("a");
  link.href = URL.createObjectURL(blob);
  link.download = "server-generated.docx";
  link.click();
};

样式自定义建议

  1. 表格边框样式可通过 TableCellborders 属性配置
  2. 合并单元格需要使用 rowSpangridSpan 参数
  3. 字体和颜色通过 Paragraphstyle 属性设置
  4. 表格宽度建议使用 WidthType.DXA 单位(1/20磅)

典型样式配置示例:

new TableCell({
  children: [new Paragraph("内容")],
  borders: { top: { style: "single", size: 4, color: "000000" } },
  shading: { fill: "FF0000" },
  width: { size: 3000, type: WidthType.DXA },
})

标签: reactword
分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react如何衰减

react如何衰减

React 中的动画衰减效果实现 在 React 中实现衰减效果(如滚动衰减、拖动释放后的惯性滑动)通常需要结合物理动画原理或第三方动画库。以下是几种常见方法: 使用 CSS 动画和 @keyfra…

react如何减少setState

react如何减少setState

减少 React 中 setState 调用的方法 合并多次状态更新 使用函数式更新方式合并多次 setState 调用。React 会将多次状态更新批量处理,避免不必要的重新渲染。 // 非函…

react路由如何刷新

react路由如何刷新

React 路由刷新方法 在 React 中,路由刷新通常涉及以下几种场景和解决方案: 强制重新加载当前页面 使用 window.location.reload() 可以强制刷新整个页面,但会丢失…

react 如何设置 代理

react 如何设置 代理

在 React 中设置代理 在开发过程中,为了跨域请求后端 API,可以通过配置代理来解决。以下是几种常见的设置代理的方法: 使用 package.json 配置代理 在 package.json…

如何使用 react native

如何使用 react native

安装开发环境 确保已安装 Node.js(建议使用 LTS 版本)。通过以下命令安装 React Native 命令行工具: npm install -g expo-cli 或使用 Yarn: y…