Web导出Excel表格

背景:

1. 后端主导实现

流程:前端调用到导出excel接口 -> 后端返回excel文件流 -> 浏览器会识别并自动下载

场景:大部分场景都有后端来做

2. 前端主导实现

流程:前端获取要导出的数据 -> 常规数据用插件处理成一个excel文件 -> 浏览器下载

场景:少数据量的导出

效果图 :

使用三方插件做需求

  1. 不考虑具体业务 实现一个能跑起来最简单的DEMO [基础环境 + 基础效果]
  2. 在基础DEMO基础上按照实际的业务数据去做对应的修改
pnpm i xlsx
pnpm i @types/xlsx
import { utils, writeFileXLSX } from 'xlsx'

const exportToExcel = ()=>{
  // 1. 创建一个新的工作簿
  const workbook = utils.book_new()
  // 2. 创建一个工作表 要求一个对象数组格式(可以根据需要创建多个)
  const worksheet = utils.json_to_sheet(
    [
      { name: '张三', age: 18 },
      { name: '李四', age: 28 }
    ]
  )
  // 3. 把工作表添加到工作簿  Data为工作表名称
  utils.book_append_sheet(workbook, worksheet, 'Data')
  // 改写表头
  utils.sheet_add_aoa(worksheet, [['姓名', '年龄']], { origin: 'A1' })
  // 4. 导出方法进行导出
  writeFileXLSX(workbook, '计费规则表.xlsx')
}

<el-button @click="exportToExcel">导出Excel</el-button>

以下是使用 PHP 导出 Excel 表格的示例代码: ```php // 数据数组 $data = array( array('姓名', '年龄', '性别'), array('张三', 18, '男'), array('李四', 20, '女'), array('王五', 22, '男') ); // 创建 Excel 对象 $excel = new COM('Excel.Application'); $excel->visible = false; $excel->DisplayAlerts = 0; // 新建工作簿 $workbook = $excel->Workbooks->Add(); // 激活工作表 $worksheet = $workbook->Worksheets(1); // 将数据写入工作表 for ($i = 0; $i < count($data); $i++) { for ($j = 0; $j < count($data[$i]); $j++) { $worksheet->Cells($i+1, $j+1)->Value = $data[$i][$j]; } } // 设置单元格格式 $range = $worksheet->Range('A1:C1'); $range->Font->Bold = true; $range->Interior->ColorIndex = 36; $range->HorizontalAlignment = -4108; // 保存工作簿 $workbook->SaveAs('test.xlsx'); $workbook->Close(false); $excel->Quit(); ``` 这段代码会创建一个包含数据数组的 Excel 文件,并将其保存为 `test.xlsx`。你可以将这个文件作为响应发送给客户端,使其自动下载。 以下是使用 PHP 发送响应头的示例代码: ```php // 文件路径 $file = 'test.xlsx'; // 发送响应头 header('Content-Description: File Transfer'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); // 读取文件并输出到客户端 readfile($file); ``` 将这段代码添加到前面的示例中,就可以将 Excel 文件作为响应发送给客户端了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值