将 openpyxl 与 lambda 一起使用

Using openpyxl with lambda

Python菜鸟来了。我有一个要求,我已经研究了几天了。要求如下。

我有一个 S3 位置,其中有几张 excel 未格式化数据的工作表。我正在编写一个 lambda 函数来格式化并将它们转换为 csv 格式。现在我已经有了这个代码,但它可以在本地机器上运行,我从本地目录中选择 excel 文件,format/transform 并将它们放入目标文件夹。我们正在使用 openpyxl 包进行转换。现在我正在将其迁移到 AWS,但问题来了。源和目标将不是本地目录,而是 s3 位置。

数据转换逻辑太冗长,实在不想重写

有什么方法可以像在本地机器上一样处理这些 excel 文件。

例如,

wb = openpyxl.load_workbook('C:\User\test.xlsx, data_only=True)

如何使用 python 重新创建此语句或它在 lambda 中的作用?

您可以像这样使用 BytesIO 执行此操作:

file = readS3('test.xlsx') # load file with Boto3
wb = openpyxl.load_workbook(BytesIO(file), data_only=True)

readS3() 的实施例如这样:

import boto3

bucket = #bucket name

def readS3(file):
    s3 = boto3.client('s3')
    s3_data = s3.get_object(Bucket=bucket, Key=file)
    return s3_data['Body'].read()

像这样配置 Boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html