js导入,导出exel表格
我们经常会遇到各种文件上传,比如照片批量上传,excel表格上传等等。
接下来我会讲解两个东西:
- 导出excel表格
- 导入excle表格
导出excel表格
导出excel表格如果需要在后端处理,前端调用接口的话,只需要如下配置即可。
<a href={'接口地址'} download>导出列表</a></Button>
当鼠标经过导出列表的时候即可看到下载的链接
导入excel表格
这里我封装了一个上传文件的方法:
uploadfile.js 组件
import React, { PropTypes, Component } from 'react';
import {Upload, message, Button, Icon,Form } from 'antd';
import FormHandle from './formHandle';const imageUploaderProps = {action: "接口地址"
}class Uploadfile extends React.Component {constructor(props) {super(props);this.state = {fileList: [],successdata:{}}}handleChange = (info) => {let fileList = info.fileList;fileList = fileList.slice(-1);fileList = fileList.map((file) => {if (file.response) {file.name = file.originFileObj.name; //获取文件名}return file;});fileList = fileList.filter((file) => {if (file.response) { //上传成功23console.log("success!!!!");this.props.getform(file.response);// this.setState({ fileList:[] });}return true;});this.setState({ fileList });}render = () => {let {fileList} = this.state;const props = {action: imageUploaderProps.action,onChange: this.handleChange,multiple: false};return (<Upload {...props} fileList={this.state.fileList}><Button><Icon type="upload" /> 上传文件</Button></Upload>)}
}export default Form.create()(FormHandle(Uploadfile));
formHandle.js文件
import React, { Component } from 'react';
import _ from 'underscore';const FormHandle = (Wrapper) => {class WrapperComponent extends Component {componentWillMount() {if (!_.isEmpty(this.props.fieldErrors)) {this.handleError(this.props.fieldErrors);}}componentWillReceiveProps(nextProps) {if (nextProps.type !== this.props.type) {this.doSubmit();}if (!_.isEqual(this.props.fieldErrors, nextProps.fieldErrors)) {this.handleError(nextProps.fieldErrors, nextProps.form.getFieldsValue());}}componentDidMount = () => {if (this.props.autoSubmit) {this.doSubmit();}}doSubmit = () => {this.props.form.validateFields({ force: true },(err, values) => {if (!err) {this.props.onSubmit(values);}},);}handleSubmit = (e) => {e.preventDefault();this.doSubmit();this.props.form.resetFields(); //重置表单}handleError(errors, fields) {if (this.props.handleError) {errors = this.props.handleError(errors);}const fieldErrors = _.mapObject(errors,(item, key) => ({errors: [item],}),);if (fields) {const fieldsReset = _.mapObject(fields,(item, key) => {const errors = fieldErrors[key] ? fieldErrors[key].errors : false;if (errors) {return {value: item,errors,};}return {value: item,};},);this.props.form.setFields(fieldsReset);} else {this.props.form.setFields(fieldErrors);}}doCancel= () => {this.props.onCancel();}handleCancel = (e) => {e.preventDefault();this.doCancel();}clearSearch = (form) => {return () => {form.resetFields();this.doSubmit();}}render() {return (<Wrapper{...this.props}clearSearch={this.clearSearch}handleSubmit={this.handleSubmit}handleCancel={this.handleCancel}/>);}}return WrapperComponent;
};export default FormHandle;
一个包含上传组件的模态框 dialoag.js
import React, { PropTypes, Component } from 'react';
import { connect } from 'dva';
import { Input, Icon, Button, Alert,Modal,Row, Col,Form,Upload, message } from 'antd';
import Uploadfile from './uploadfile';
import FormHandle from 'components/decorator/formHandle';class InlineTagEdit extends React.Component {static propTypes = {dispatch: PropTypes.func.isRequired}constructor(props) {super(props);this.module = "userList";this.state = { fordata:{},count:0};}handleOk = (e) => { /*调用uploadfile组件,从这个子组件返回了总的数据条数,和总的数据*/ let count = this.state.count;let self = this;/*每一个表格导入100条数据,进行批量导入*/for(let i=0;i<Math.ceil(count/100);i++){this.props.dispatch({type: `${this.module}/getExcelData`,payload:{file:this.state.fordata.data.createPath,page:i+1,pageSize:100}});}if(this.state.fordata){let outputMess = {type:false,complete:true}this.props.mess(outputMess);}}/*传给子组件的函数*/onChildChanged= (newState)=> {this.setState({fordata: newState,count:newState.data.count});}render = () => {let {comVisible,fordata} = this.state;const { getFieldDecorator } = this.props.form;return (<div><Modaltitle="导入Excel"visible={this.props.visable}onOk={this.handleOk}><div><Uploadfile getform={this.onChildChanged} /></div></Modal></div>)}
}export default connect(({ userList }) => ({ userList}))(Form.create()(FormHandle(InlineTagEdit)));
效果:
- 点击 “导入excel
- 点击 “上传文件”
js导入,导出exel表格相关推荐
- com.alibaba.easyexcel导出指定的列_使用Python导入导出Excel表格
这篇文章的目的是讲解使用python导入导出Excel表格,目前还不涉及数据处理,主要实现为数据的展示. 第一步,准备材料 python3.8的安装包 一个Excel表格 第二步,安装软件 pytho ...
- java 导入导出excel表格
java 导入导出excel表格 业务上有需求上传excel表格并读取内容,本文记录一下该方法 表格导入 引入相应的工具包 <dependency><groupId>cn.af ...
- java io导出excel表格_Java IO 导入导出Excel表格
1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...
- js网页导出excel表格文件
下载地址 js网页导出excel表格文件,没有使用任何第三方js类库,简单的实现table数据导出效果. dd:
- 使用最新的poi-4.1.0.jar导入导出Excel表格——读取Excel表格数据用法
使用最新的poi-4.1.0.jar导入导出Excel表格--读取Excel表格数据用法 其中主要的一点心得就是在switch语句哪里进行读取数据转换时,我看到网上的一些用法都是使用 HSSFCell ...
- 解决导入导出Excel表格文字乱码问题
解决导入导出Excel表格文字乱码问题 参考文章: (1)解决导入导出Excel表格文字乱码问题 (2)https://www.cnblogs.com/minjh/p/12299920.html 备忘 ...
- js导入导出总结与实践
在上一篇文章中JavaScript中AMD和ES6模块的导入导出对比,偏向于理论层面,还有一些同学在微信群里或是私下里针对一些问题进行了沟通,所以有了这一篇文章,对js的导入导出进行总结和实践 当直接 ...
- 【JS】导出合并表格
[JS]导出合并后的单元格的表格 安装依赖 npm install element-ui -S npm install xlsx npm install file-saver 代码 <templ ...
- JS实现导出网页表格为Excel
首先声明:这篇是转载然后稍加修改的,原文下载表格会出现乱码,因此做了一些改进. 原文地址:js实现table导出Excel,保留table样式 PS:实际导出并不是真正的Excel文件,实际上一个ht ...
最新文章
- $.when()方法翻译
- HBase数据压缩编码探索
- 注册和登陆与数据库的链接
- MSI failed, 不能卸载VMware
- linux / scp 详解
- iOS程序启动原理(上)
- mysql image类型_MyCat教程【mysql主从复制实现】
- docker 运行jar exit_使用Dockerfile为SpringBoot应用构建Docker镜像
- Lighthouse
- 热敏打印机排版—了解打印机的基础知识
- 敏感词屏蔽工具(DFA算法)
- C++课后作业 10.教材习题7_6:哺乳动物类Mammal派生出狗类Dog
- 腾讯云服务器搭建鸿蒙Hi3861开发板开发环境
- PMI是什么参数在LTE中??和RI,CQI怎么作用的??
- C#WinForm中的太空侵略者
- 国家旅游局发布厕所大数据报告,上厕所最容易的城市你一定想不到
- 10激活网页被劫持_新手学习SEO需掌握的10大SEO技能
- Python的基本语法(十一)(持续更新)
- 计算机的两种启动引导方式,硬盘的两种分区和对应启动引导方式
- 计算机视觉:图像特征与描述大全 ,有代码(一篇博文带你简单了解完图像特征提取技术)
热门文章
- kafka一直rebalance故障,重复消费
- scala与java混合编译出现的问题
- docker-compose初试及命令基础
- javaweb学习总结(二十四):jsp传统标签开发
- VS2010开发如何在c#中使用Ctrl、Alt、Tab等全局组合快捷键
- 【第五组】头脑风暴+核心竞争力+NABCD+个人(用例+功能+技术说明书) 最后修改时间 2017.07.13...
- Mysql5.7 ZIP 压缩包非安装版的安装方式
- 017 矩阵中的路径
- C#模拟HTTP POST 请求
- linux命令总结----转载