Python 实现excel转json接口笔记
最近有个需求,需要实现把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