• 利用Python提取将Excel/PDF文件数据


    使用Python来创建一个接口,用于接收Excel文件资源链接,下载文件并执行指定的操作,然后返回处理后的数据。以下是一个基本的示例,展示如何使用Flask来创建这样的接口。请注意,这是一个简化的示例,您可能需要根据实际需求扩展和完善代码。

    首先,确保安装Flask

    pip install Flask
    

    然后,创建一个Python脚本,比如excel_api.py

    1. import os
    2. from flask import Flask, request, jsonify
    3. import requests
    4. import openpyxl
    5. app = Flask(__name)
    6. @app.route("/process_excel", methods=["POST"])
    7. def process_excel():
    8. try:
    9. # 获取POST请求中的JSON数据
    10. data = request.get_json()
    11. # 从JSON数据中获取Excel文件链接
    12. excel_url = data.get("excel_url")
    13. # 下载Excel文件
    14. excel_response = requests.get(excel_url)
    15. with open("temp.xlsx", "wb") as f:
    16. f.write(excel_response.content)
    17. # 打开Excel文件
    18. wb = openpyxl.load_workbook("temp.xlsx")
    19. # 用于存储处理后的数据
    20. processed_data = {}
    21. # 处理每个sheet
    22. for sheet_name in wb.sheetnames:
    23. sheet = wb[sheet_name]
    24. sheet_data = []
    25. # 读取每个单元格的数据
    26. for row in sheet.iter_rows(values_only=True):
    27. sheet_data.append(row)
    28. processed_data[sheet_name] = sheet_data
    29. # 处理完成后,可以根据需要将数据存储到指定路径
    30. # 返回处理后的数据
    31. return jsonify(processed_data)
    32. except Exception as e:
    33. return jsonify({"error": str(e)})
    34. if __name__ == "__main__":
    35. app.run(debug=True)

    提取各sheet内单元格(部分为合并单元格)内字段数据

    1. import openpyxl
    2. def extract_data_from_sheet(sheet):
    3. data = []
    4. for row in sheet.iter_rows(values_only=True):
    5. row_data = []
    6. for cell in row:
    7. if cell.data_type == 's': # 处理合并单元格
    8. value = sheet.cell(row=cell.row, column=cell.column)._value
    9. else:
    10. value = cell.value
    11. row_data.append(value)
    12. data.append(row_data)
    13. return data
    14. # 打开Excel文件
    15. wb = openpyxl.load_workbook("your_excel_file.xlsx")
    16. # 处理每个sheet
    17. for sheet_name in wb.sheetnames:
    18. sheet = wb[sheet_name]
    19. sheet_data = extract_data_from_sheet(sheet)
    20. # 在这里,sheet_data 包含了从当前sheet中提取的数据
    21. print(f"Data from {sheet_name}:")
    22. for row in sheet_data:
    23. print(row)

  • 相关阅读:
    URLDNS利用链分析
    MyBatisPlus(九)模糊查询
    机器学习的概念和类型
    Spring MVC 十一:@EnableWebMvc
    二阶RC滤波器
    基于虚拟机源码分析move合约(六):整数、布尔值的引用
    Std::optional 源码分析
    Linux部署kubeedge 1.4
    MyBatis中如何使用insert标签呢?
    Ubuntu22.04 交叉编译GCC13.2.0 for Rv1126
  • 原文地址:https://blog.csdn.net/qq_33587050/article/details/133833768