如何从 amazon s3 加载模板文件并将其加载到 openpyxl 工作簿中

1 amazon-s3 xlsx python-3.x openpyxl aws-lambda

我正在使用 aws lambda 和 python 设置一个无服务器 python 应用程序,用于将 csv 文件转换为 excel。
我想将 csv 文件和 Excel 模板文件上传到 s3 存储桶中。然后使用模板文件创建一个 Excel 文件。
我已使用 boto3 成功将 csv 数据读入我的应用程序。现在我想将内容写入excel模板文件中。
我怎样才能做到这一点?
我在某处读到,我们可以将模板文件复制到 s3 中的 /tmp 中并可以写入其中。如果是这样,怎么可能?

Sel*_*han 5

使用 lambda,您可以从 S3 下载文件,使用 openpyxl 加载它,然后对其进行修改,然后将其上传到 S3。

\n\n
from openpyxl import load_workbook\nfrom tempfile import NamedTemporaryFile\nimport boto3\nimport botocore\n\ns3 = boto3.resource(\'s3\')\n\ndef download_file(bucket, key):\n    try:\n        file = NamedTemporaryFile(suffix = \'.xlsx\', delete=False)\n        s3.Bucket(bucket).download_file(key, file.name)\n        return file.name\n    except botocore.exceptions.ClientError as e:\n        if e.response[\'Error\'][\'Code\'] == "404":\n            return None\n        else:\n            raise\n    else:\n        raise\n\ndef upload_workbook(workbook, bucket, key):\n    with NamedTemporaryFile() as tmp:\n        workbook.save(tmp.name)\n        tmp.seek(0)\n        s3.meta.client.upload_file(tmp.name, bucket, key)\n\n\nfile = download_file("your-s3-bucket", "your-s3-key")\nworkbook = load_workbook(file)\n#\xc2\xa0process workbook\n\nupload_workbook(workbook, "your-bucket", "your-key")\n\n
Run Code Online (Sandbox Code Playgroud)\n