1. 生成文件
我生成的是excel
文件,所以我使用openpyxl
来生成excel
文件
1. 安装openpyxl
pip install openpyxl
2. 简单的示例
import openpyxl
import os
# 文件保存根目录
FILE_PATH = '/home/kun/test'
def create_file(name):
# 实例化
wb = openpyxl.Workbook()
# 激活worksheet
ws = wb.active
# 修改worksheet工作表名字
ws.title = "测试数据"
for i in range(50):
# 使用append添加数据
ws.append([i, name])
# 保存文件,指定保存目录以及文件名字
wb.save(os.path.join(FILE_PATH, '{}.xlsx'.format(name)))
if __name__ == '__main__':
create_file('测试')
运行后会生成对应文件, 如下图
3. 说明
- 实例化
wb = openpyxl.Workbook() - 激活worksheet
ws = wb.active - 修改worksheet工作表名字
ws.title = "xxxx" - 使用append添加数据
ws.append([xx, xx, xx]) - 保存文件,指定保存目录以及文件名字
wb.save(xxxxxx/yyyy.xlsx)
2. 返回文件
1. flask文件示例
import os
from urllib.parse import quote
from flask import Flask, send_file, request
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)
# 文件保存根目录
FILE_PATH = '/home/kun/test'
def create_file(name):
# 实例化
wb = openpyxl.Workbook()
# 激活worksheet
ws = wb.active
# 修改worksheet工作表名字
ws.title = "测试数据"
for i in range(50):
# 使用append添加数据
ws.append([i, name])
# 保存文件,指定保存目录以及文件名字
wb.save(os.path.join(FILE_PATH, '{}.xlsx'.format(name)))
@app.route('/upload')
def upload_file():
# 接受参数
name = request.args.get('name')
# 使用openpyxl生成文件
create_file(name)
# 生成后的文件名字
full_name = '{}.xlsx'.format(name)
# 防止中文文件乱码,原本的attachment_filename是没有办法用中文名的
filename = quote(full_name)
# 使用send_file
rv = send_file(os.path.join(FILE_PATH, full_name), as_attachment=True, attachment_filename=filename)
# 修改请求头
rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)
# 返回文件对象
return rv
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5010, debug=True)
2. 说明
- 接受参数
name = request.args.get('name') - 使用
openpyxl
生成文件
create_file(name) - 生成后的文件名字
full_name = '{}.xlsx'.format(name) - 防止中文文件乱码,原本的
attachment_filename
是没有办法用中文名的
filename = quote(full_name) - 使用
send_file
rv = send_file(xxxx, as_attachment=True, attachment_filename=filename) - 修改请求头
rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)
3. 接收文件
1. flask示例文件
import os
from urllib.parse import quote
from flask import Flask, send_file, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)
@app.route('/receive')
def receive_file():
# file就是接收file对象
file = request.files.get('file')
# file.filename 获取文件名字
filename = file.filename
return jsonify({'filename': filename})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5010, debug=True)
2. 说明
- 接收file对象
file = request.files.get('file') - 获取文件名字
filename = file.filename
4 .完整文件代码
import os
import openpyxl
from urllib.parse import quote
from flask import Flask, send_file, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app, supports_credentials=True)
FILE_PATH = '/home/kun/test'
def create_file(name):
# 实例化
wb = openpyxl.Workbook()
# 激活worksheet
ws = wb.active
# 修改worksheet工作表名字
ws.title = "测试数据"
for i in range(50):
# 使用append添加数据
ws.append([i, name])
# 保存文件,指定保存目录以及文件名字
wb.save(os.path.join(FILE_PATH, '{}.xlsx'.format(name)))
@app.route('/upload')
def upload_file():
# 接受参数
name = request.args.get('name')
# 使用openpyxl生成文件
create_file(name)
# 生成后的文件名字
full_name = '{}.xlsx'.format(name)
# 防止中文文件乱码,原本的attachment_filename是没有办法用中文名的
filename = quote(full_name)
# 使用send_file
rv = send_file(os.path.join(FILE_PATH, full_name), as_attachment=True, attachment_filename=filename)
# 修改请求头
rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)
# 返回文件对象
return rv
@app.route('/receive')
def receive_file():
# file就是接收的file对象
file = request.files.get('file')
# file.filename 获取文件名字
filename = file.filename
return jsonify({'filename': filename})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5010, debug=True)