python excle 导出,可用PHP等语言做数据处理,对接python api,上传excel表格或本地保存
python 需用 3 版本 , 安装python 扩展请看头部注释
# !/usr/bin/python
# author:jxCola
# yum install python-devel
# python3 -m pip install --upgrade --force pip
# pip3 install setuptools==33.1.1
# pip3 install openpyxl
# pip3 install python-multipart
# pip3 install fastapi
# pip3 install uvicorn[standard]
# pip3 install oss2
from openpyxl import Workbook
from openpyxl.styles import colors, Font
from fastapi import FastAPI,Form
import json
import oss2
import os
import openpyxl
app = FastAPI()
path = "D:\\"
ossConfig = {
'KEY_ID':'',
'KEY_SECRET' : '',
'END_POINT' : '',
'BUCKET' : '',
'UPLOAD_HOST' : "",
"PATH" : ""
}
@app.post('/excelOut')
def out(title: str = Form(...),body: str = Form(...),name: str = Form(...),oss: int = Form(...)):
# 名字
savePath = "%s%s.xlsx"%(path,name)
existsFile = os.path.exists(savePath)
# 未有文件创建
if existsFile == False:
wb = Workbook()
else:
# 读入文件(打开文件接着写入)
wb = openpyxl.load_workbook(savePath)
# 激活
ws = wb.active
# 首页名字
ws.title = name
excelTitle = json.loads(title)
excelBody = json.loads(body)
# 加载名字(只有一开始才加)
if existsFile == False:
ws.row_dimensions[1].width = 60
ws.append(excelTitle)
for excel_body in excelBody:
ws.append(excel_body)
# 保存
wb.save(savePath)
# 非oss
if oss == 0:
msg = "excel save success!"
resPath = savePath
else:
# oss 上传
auth = oss2.Auth(ossConfig["KEY_ID"], ossConfig["KEY_SECRET"])
bucket = oss2.Bucket(auth, ossConfig["END_POINT"], ossConfig["BUCKET"])
bucketPath = "%s/%s.xlsx"%(ossConfig["PATH"],name)
with open(savePath, 'rb') as fileobj:
fileobj.seek(0, os.SEEK_SET)
current = fileobj.tell()
bucket.put_object(bucketPath, fileobj)
msg = "excel save success,oss success!"
ossPath = "%s/%s"%(ossConfig["UPLOAD_HOST"],bucketPath)
os.remove(savePath)
resPath = ossPath
res = {"oss" : oss,"code" : 200,"msg" : msg,"path" : resPath}
return res
if __name__ == '__main__':
import uvicorn
uvicorn.run(app = app , host = "0.0.0.0" , port = 8282 , workers = 1)
接口示例