使用Python来创建一个接口,用于接收Excel文件资源链接,下载文件并执行指定的操作,然后返回处理后的数据。以下是一个基本的示例,展示如何使用Flask来创建这样的接口。请注意,这是一个简化的示例,您可能需要根据实际需求扩展和完善代码。
首先,确保安装Flask:
pip install Flask
然后,创建一个Python脚本,比如excel_api.py
:
import os
from flask import Flask, request, jsonify
import requests
import openpyxl
app = Flask(__name)
@app.route("/process_excel", methods=["POST"])
def process_excel():
try:
# 获取POST请求中的JSON数据
data = request.get_json()
# 从JSON数据中获取Excel文件链接
excel_url = data.get("excel_url")
# 下载Excel文件
excel_response = requests.get(excel_url)
with open("temp.xlsx", "wb") as f:
f.write(excel_response.content)
# 打开Excel文件
wb = openpyxl.load_workbook("temp.xlsx")
# 用于存储处理后的数据
processed_data = {}
# 处理每个sheet
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
sheet_data = []
# 读取每个单元格的数据
for row in sheet.iter_rows(values_only=True):
sheet_data.append(row)
processed_data[sheet_name] = sheet_data
# 处理完成后,可以根据需要将数据存储到指定路径
# 返回处理后的数据
return jsonify(processed_data)
except Exception as e:
return jsonify({"error": str(e)})
if __name__ == "__main__":
app.run(debug=True)
提取各sheet内单元格(部分为合并单元格)内字段数据
import openpyxl
def extract_data_from_sheet(sheet):
data = []
for row in sheet.iter_rows(values_only=True):
row_data = []
for cell in row:
if cell.data_type == 's': # 处理合并单元格
value = sheet.cell(row=cell.row, column=cell.column)._value
else:
value = cell.value
row_data.append(value)
data.append(row_data)
return data
# 打开Excel文件
wb = openpyxl.load_workbook("your_excel_file.xlsx")
# 处理每个sheet
for sheet_name in wb.sheetnames:
sheet = wb[sheet_name]
sheet_data = extract_data_from_sheet(sheet)
# 在这里,sheet_data 包含了从当前sheet中提取的数据
print(f"Data from {sheet_name}:")
for row in sheet_data:
print(row)