徐向博 / Imin.

Python 实现excel转json接口笔记
作者:Imin 时间:2019-05-20 分类: Python

最近有个需求,需要实现把excel文件导入到数据库,php折腾了一会发现兼容问题很多,一阵百度之后发现python处理excel很骚,边学边写,总算弄出来了,代码贴出来做个记录。

# -*- coding: utf-8 -*-
#WEB服务依赖
from flask_cors import CORS
from flask import Flask
from flask import request
#Excel文件处理依赖
import xlrd
import xlwt
#JSON依赖
import json
#时间处理
from datetime import date,datetime

#创建一个服务代理
app = Flask(__name__)

#首页
@app.route('/', methods=['GET', 'POST'])
def home():
    return 'home'

#接口路由
@app.route('/excelToJson', methods=['GET', 'POST'])
def excelToJson():
    #读取excel文件,这里之前有了php的上传接口,所以没做上传,以后再研究
    excel = xlrd.open_workbook(r'../../uploads/data.xlsx')
    #获取数据表的内容,sheet_by_index()传入sheet的索引,也可以用名称:sheet_by_name()
    table = excel.sheet_by_index(0)
    #定义一个空字典,用来存放数据
    content = {}
    #循环用的索引,用来绑定json的key值
    index = 0
    #把数据按行存到content字典中, table.nrows用来获取当前表的总行数,同理列数用table.ncols获取
    while index < table.nrows:
        indexStr = 'dict' + '%d' %index
        content[indexStr] = table.row_values(index)
        index = index + 1
    # 返回json字符串,这里有个坑,flask的返回值只能是字符串,所以一定要处理结果!!!
    return json.dumps(content)

#执行程序
if __name__ == '__main__':
    #允许跨域请求
    CORS(app, supports_credentials=True)
    app.run()

python萌新,如果错误欢迎大佬指教,感激不尽!

-------- 2019.05.28更新,部分模块需要安装后才能引入 -----------

from flask_cors import CORS # pip install Flask-Cors
from flask import Flask # pip install flask
import xlrd # pip install xlrd
import xlwt # pip install xlwt

相关参考: 如何使用pip ,python操作excel详解

-------- 2019.06.11更新,添加上传接口 ---------

# -*- coding: utf-8 -*-

# 依赖
import json
import xlrd
import time
from flask import request
from flask import Flask
from flask_cors import CORS

# APP
app = Flask(__name__)

@app.route('/')
def home():
    return 'home'

@app.route('/upload', methods=['GET', 'POST'])
def upload():
    if request.method == 'POST':
        file = request.files.get('file')
        if file is None:
            return '没有检索到文件'
        else:
            try:
                f = open('./data.xlsx', 'wb')
                f.write(file.read())
                ex = xlrd.open_workbook('./data.xlsx')
            except:
                return '解析文件失败,请确保服务器有文件读写权限!'
            else:
                table = ex.sheet_by_index(0)
                # 这里改成了列表,直接返回数组
                content = []
                index = 0
                while index < table.nrows:
                    content.append(table.row_values(index))
                    index = index + 1
                return json.dumps(content)
    else:
        return '请使用POST请求'

if __name__ == '__main__':
    CORS(app, supports_credentials=True)
    app.run()


本文标签: python

搜推网: python 确实非常的牛逼的了 2019-07-16 14:16
965影视: 965影视: www.965ys.net
博主你好,友链考虑下不?
2019-06-30 10:49
杂烩网: 希望和贵站交换友链,有想法请到小站留言联系
名称:杂烩网
地址:http://www.zahuiw.com
描述:知无不言,言无不尽

爱站:权1 / 站长之家:权1
2019-06-14 20:45
搜推网: 程序就是这么给力了 2019-06-11 14:16