axios请求导出数据到excel文件
2023-09-27 14:24:39 时间
客户端利用axios自己封装了一个request,文件名为http.js
import axios from 'axios'; import history from './history'; export const baseUrl = '/api'; const request = axios; // or axios.create({}) request.defaults.baseURL = baseUrl; request.interceptors.request.use(config => { // const { url, data } = config; // console.log(`send request[${url}]: ${JSON.stringify(data)}`); return config; }); request.interceptors.response.use( response => { const { // config: { url }, data, } = response; // console.log(`receive response[${url.replace(baseUrl, '')}]: ${JSON.stringify(data)}`); return data; }, error => { console.log(`receive response[${'url'}]: ${JSON.stringify(error)}`); return Promise.reject( error && error.response && error.response.data && error.response.data.message ? error.response.data.message : error, ); }, ); const method = { get: (url, data = {}) => { return request.get(url, { params: data }); }, post: (url, data = {}) => { return request.post(url, data); }, export: (url, fileName = 'download.xlsx', data = {}) => { if (typeof fileName === 'object') { data = fileName; fileName = 'download.xlsx'; } request({ method: 'post', url, data, responseType: 'blob', }) .then(res => { if (res.type === 'application/json') { console.log('文件导出失败: ', res); return; } const href = window.URL.createObjectURL(new Blob([res])); const link = document.createElement('a'); link.style.display = 'none'; link.href = href; link.setAttribute('download', fileName); document.body.appendChild(link); link.click(); document.body.removeChild(link); window.URL.revokeObjectURL(href); }) .catch(error => { console.log('文件导出失败: ', error); }); }, form: (url, data = {}) => { const form = document.createElement('form'); form.style = 'display:none;'; form.method = 'post'; form.action = baseUrl + (url[0] === '/' ? '' : '/') + url; const values = JSON.stringify(data); if (values !== '{}') { const input = document.createElement('input'); input.type = 'hidden'; input.name = 'values'; input.value = values; form.appendChild(input); } document.body.append(form); form.submit(); form.remove(); }, all: (...https) => { return new Promise((resolve, reject) => { request .all(https) .then( axios.spread((...resList) => { // 多个请求都发送完毕,拿到返回的数据 resolve(resList); }), ) .catch(err => { reject(err); }); }); }, }; export const http = (url, data, success, fail) => { return new Promise((resolve, reject) => { method .post(url, data) .then(res => { const { code } = res; if (code === 101) { history.replace('/'); history.fail && fail(); reject(); } if (code === 100 || code === 102) { history.replace('/login'); fail && fail(); reject(); } else { success && success(res); resolve(res); } }) .catch(error => { fail && fail(error); reject(error); }); }); }; export default method;
另一个jsx中使用:
import React from 'react'; import * as antd from 'antd'; import request from '@/common/http'; const { Button } = antd; class Wrapper extends React.Component { exportPaidUsers = () => { request.export('user/exportPaidUsers', '付费用户列表.xlsx'); }; // 渲染 render() { return ( <div> <div style={{ marginBottom: 30 }}> <span> <Button type='primary' onClick={this.exportPaidUsers.bind(this)}> 导出所有付费用户 </Button> </span> </div> </div> ); } } export default Wrapper;
服务端php:
public static function download(PHPExcel $excel, String $fileName = 'download') { $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if(preg_match('/msie/i', $ua) || preg_match('/edge/i', $ua) || preg_match('/trident/i', $ua) ) { $fileName = urlencode($fileName); } ob_end_clean(); header('Content-Type: application/vnd.ms-excel;charset=utf-8'); header(sprintf('Content-Disposition: attachment;filename="%s.xlsx"', $fileName)); header('Cache-Control: max-age=0'); $ta[] = microtime(true); $writer = \PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save('php://output'); // $ta[] = microtime(true); log_message2('download: ', $ta); exit; }
完成了!
相关文章
- 新建并保存一个空的Excel
- iOS使用libxlsxwriter导出excel文件
- [转]java生成 excel 并导出文件
- 一文搞懂Go读写Excel文件
- 【Java】文件下载/下载Excel/下载文件到本地
- 一个php文件就可以把数据库的数据导出Excel表格
- ASP.NET Core 导入导出Excel xlsx 文件
- mysql数据导出为excel文件
- Python 读写 Excel 文件
- Java poi Excel导出文件,Java poi 分批次导出大批量数据
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
- 纯前端table表格导出excel文件,两种方法
- Python Excel教程之如何将多个 excel 文件合并为一个文件(教程含源码)
- Java学习-017-EXCEL 文件读取实例源代码
- 解决 Microsoft Excel has stopped working
- Java 实现word、excel、ppt、txt等办公文件在线预览功能
- PostMan测试接口-----上传文件、导出excel
- npoi导出excel_asp.net MVC
- python-xlrd,xlwt excel文件的读写
- Excel VBA简单使用——数据缺失处理
- python excel 批量更换表头函数
- php excel文件导出之二 图像导出
- 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)
- Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)
- Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
- mysql中数据导出成excel文件语句
- 【Python】pandas的使用——CSV文件、Excel文件、TXT文件之间的转换
- Excel - 选择性粘贴和单元格引用规则