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 = "測試數(shù)據(jù)"
for i in range(50):
# 使用append添加數(shù)據(jù)
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添加數(shù)據(jù)
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 = "測試數(shù)據(jù)"
for i in range(50):
# 使用append添加數(shù)據(jù)
ws.append([i, name])
# 保存文件,指定保存目錄以及文件名字
wb.save(os.path.join(FILE_PATH, '{}.xlsx'.format(name)))
@app.route('/upload')
def upload_file():
# 接受參數(shù)
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. 說明
- 接受參數(shù)
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 = "測試數(shù)據(jù)"
for i in range(50):
# 使用append添加數(shù)據(jù)
ws.append([i, name])
# 保存文件尚氛,指定保存目錄以及文件名字
wb.save(os.path.join(FILE_PATH, '{}.xlsx'.format(name)))
@app.route('/upload')
def upload_file():
# 接受參數(shù)
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)