vue excel download upload

3 篇文章 0 订阅

1. 效果 

 

2. 实现

      <el-dialog title="Upload" :visible.sync="uploadVisible" width="25%">
        <el-upload action="/api/tools/disable_ec/file"
                   :on-preview="handleUploadPreview"
                   :before-upload="beforeUpload"
                   :limit="1"
                   :on-exceed="handleUploadExceed"
                   :file-list="fileList">
          <el-button size="small" type="primary">Upload</el-button>
          <div slot="tip" class="el-upload__tip">
            Upload file can only be XLS or XLSX format! <br>
            Please download
            <el-button type="text"
                       size="small"
                       style="outline: none"
                       @click="downloadUploadFileTemplate">
              <span>Template</span>
            </el-button>if needed.
          </div>
        </el-upload>
      </el-dialog>

 

  export default {
    data() {
      return {
        uploadVisible: false,
        fileList: []
      }
    },
    methods: {
      handleUploadPreview(file) {
        console.log(file);
      },
      handleUploadExceed(files, fileList) {
        this.$message.warning('Currently limited to select 1 file');
      },
      beforeUpload(file) {
        let extension = file.name.substring(file.name.lastIndexOf('.')+1).toLowerCase()
        if(['xls', 'xlsx'].indexOf(extension) < 0) {
          this.$message.warning('Upload file can only be XLS or xlsx format!');
          return false;
        }
      },
      downloadUploadFileTemplate() {
        window.location.href = '/api/xxx/xxx/file'
        return false;
      }
    }
  }
@app.route('/api/xxx/xxx/file', methods=['GET', 'POST'])
@login_required
def file_operation():
    if request.method == 'GET':
        logger.info('Download upload template... ...')
        data = [{'SiteName': 'site name',
                 'Action': 'del'}]
        df = pd.DataFrame(data)[['SiteName', 'Action']]

        # 1.Export excel format
        output = BytesIO()
        writer = pd.ExcelWriter(output)
        df.to_excel(writer, index=False, sheet_name='template')
        workbook = writer.book
        header_fmt = workbook.add_format({
            'font_size': 14,
            'bold': True,
            'fg_color': '#D7E4BC',
            'border': 1})
        sheet_table = writer.sheets['template']
        for col_num, value in enumerate(df.columns.values):
            sheet_table.write(0, col_num, value, header_fmt)
        sheet_table.set_column('A:B', 60)
        workbook.close()
        writer.close()
        output.seek(0)
        return send_file(output, attachment_filename="template.xlsx", as_attachment=True)

        # 2.Export CSV format
        # resp = make_response(df.to_csv(index=False))
        # resp.headers["Content-Disposition"] = "attachment; filename=template.csv"
        # resp.headers["Content-Type"] = "text/csv"
        # return resp
    if request.method == 'POST':
        file = request.files['file']
        df = pd.read_excel(file, engine='openpyxl')
        # Save the import file if needed
        # filename = secure_filename(file.filename)
        # file.save(os.path.join(r'C:\Users\jalchu\upload', filename))
        # do some other logic

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-upload是Element UI提供的一个组件,用于实现文件上传功能。通过el-upload组件,可以方便地上传Excel文件。 在Vue中使用el-upload组件上传Excel文件,可以有两种方式。第一种方式是将Excel文件上传到服务器使用action属性指定的接口,通过axios库发送请求实现上传。第二种方式是通过axios库直接将Excel文件上传到服务器。 使用action属性上传到服务器的方法,可以参考。在el-upload组件中,设置action属性为服务器的上传接口地址,当选择Excel文件后,el-upload组件会自动将文件上传到该接口。 使用axios库上传Excel文件到服务器的方法,可以参考和。首先,需要引入axios库,并在上传Excel文件的方法中使用axios库发送POST请求,将Excel文件作为请求的参数发送到服务器。 需要注意的是,上传文件可能由于前后端格式不统一导致上传失败。一般情况下,可以使用application/x-www-form-urlencoded格式进行上传。如果需要使用multipart/form-data或application/json格式上传,可以根据具体需求设置el-upload组件的headers属性或axios库的请求头部信息,以确保上传成功。具体使用方法可以参考。 希望以上信息能够帮助你实现el-upload上传Excel文件的功能。如果还有其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Vue 中使用 Upload 组件上传 Excel](https://blog.csdn.net/qq_38689395/article/details/118419678)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [elemetUi 组件--el-upload实现上传Excel文件的实例](https://download.csdn.net/download/weixin_38586942/12770492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值