春游去动物园(🍺)|

Django+vue 上传execl文件并解析

Django+vue 上传execl文件并解析

VUE

<template>
      <el-button type="primary" class="but_list_but1"><input type="file" name="avatar" id="avatar" style="display: none"
                                                             @change="upload('/api/v1/admin/product/load/',$event)"><label
          for="avatar">导入</label></el-button>
</template>
<script>
import axios from "axios";
import {MessageBox, Message} from 'element-ui'
import {Loading} from 'element-ui'

const http = axios.create({
  // baseURL: process.env.VUE_APP_BASE_API,
  baseURL: '/api',
  timeout: 60000,
  withCredentials: true
})
export default {
      methods: {
              /**
     * 上传
     * @param url
     * @param data
     */
    upload(url, file, data) {
      const formData = new FormData()
      formData.append('file', file.target.files[0])

      // 附加数据
      if (data) {
        Object.keys(data).forEach(key => {
          formData.append(key, data[key])
        })
      }

      return new Promise((resolve, reject) => {
        // 打开
        const loading = Loading.service({
          text: '正在上传数据...',
          background: 'rgba(0, 0, 0, 0.7)'
        })

        http
            .request({
              url: url,
              method: 'post',
              data: formData,
              timeout: 1200000
            })
            .then(response => {
                console.log(response)
                loading.close()
                resolve(response)
              }
            })
            .catch(err => {
              loading.close()
              reject(err)
            })
      })
    },
      }
}
</script>

Django

    '''
    	首先需要安装xlrd
    	pip install xlrd==1.2.0
    	推荐安装老版本,xlrd版本原因,好像最新的版本不支持读取xlsx文件了,新版本会报错
    '''
    def leading_in(self, request):
        '''
        导入商品列表
        '''
        file = request.FILES.get('file')
        from io import BytesIO, StringIO
        sio = BytesIO()
        for i in file:
            sio.write(i)  # 将数据写入io对象
        data = xlrd.open_workbook(file_contents=sio.getvalue())  # 如果传入的是io数据对象,那么别忘了传参的时候要用关键字file_contents=指定一下
        # 根据索引获取第一个sheet工作簿
        sheet = data.sheet_by_index(0)
        # 获取execl中的行数
        rows_count = sheet.nrows
        # 获取execl的列数
        cols_count = sheet.ncols
        # print(sheet.name, rows_count, sheet.ncols)  # sheet名称,行数,列数
        for i in range(1, rows_count):
            # rowx表示是获取第几行的数据
            # start_col表示列从索引为多少开始,end_colx表示从索引为多少结束,
            # end_colx为None表示结束没有限制
            # 获取指定行中的数据并以列表的形式返回
            table_list = sheet.row_values(rowx=i, start_colx=0, end_colx=None)

本文作者:春游去动物园

本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/17175333.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   春游去动物园  阅读(103)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 生分 川青
生分 - 川青
00:00 / 00:00
An audio error has occurred.

生分 - 川青

词:莎子

曲:邵翼天

编曲:林亦

混音:罗杨轩

吉他:林亦

制作人:谢宇伦

监制:曾炜超/陈显

策划:+7

统筹:黄染染

出品:漫吞吞文化

『酷狗音乐人 • 星曜计划』

全方位推广,见证星力量!

「版权所有未经许可 不得商业翻唱或使用」

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到

我们最后友人相称

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言

见缝插针

怕不小心我们

成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到我们最后

友人相称

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡