使用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)